Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
parslet / example
  ..
  output
  big.erb
  boolean_algebra.rb
  calc.rb
  capture.rb
  comments.rb
  deepest_errors.rb
  documentation.rb
  email_parser.rb
  empty.rb
  erb.rb
  ignore.rb
  ip_address.rb
  json.rb
  local.rb
  mathn.rb
  minilisp.rb
  modularity.rb
  nested_errors.rb
  optimized_erb.rb
  parens.rb
  prec_calc.rb
  readme.rb
  scopes.rb
  seasons.rb
  sentence.rb
  simple.lit
  simple_xml.rb
  string_parser.rb
  test.lit
Size: Mime:
# The example from the readme. With this, I am making sure that the readme 
# 'works'. Is this too messy?

$:.unshift File.dirname(__FILE__) + "/../lib"

# cut here -------------------------------------------------------------------
require 'parslet'
include Parslet

# Constructs a parser using a Parser Expression Grammar like DSL: 
parser =  str('"') >> 
          (
            str('\\') >> any |
            str('"').absent? >> any
          ).repeat.as(:string) >> 
          str('"')
  
# Parse the string and capture parts of the interpretation (:string above)        
tree = parser.parse('"This is a \\"String\\" in which you can escape stuff"')

tree # => {:string=>"This is a \\\"String\\\" in which you can escape stuff"}

# Here's how you can grab results from that tree:

transform = Parslet::Transform.new do
  rule(:string => simple(:x)) { 
    puts "String contents: #{x}" }
end
transform.apply(tree)