Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- INPUT: title = '"This is some meaning less text with "quotes, commas","'
- {
- :pre=>""",
- :middle=> "This is some meaning less text with "quotes, commas"",
- :post=>",""
- }
- INPUT: page = 'pp 211–220,.'
- {
- :pre=>'pp ',
- :firstpage=>211,
- :sep=>'–',
- :lastpage=>220,
- :post=>',.'
- }
- #!/usr/bin/ruby
- require 'parslet'
- require 'pp'
- title = '"This is some meaning less text with "quotes, commas","'
- class TitleParse < Parslet::Parser
- root(:title_exp)
- rule(:pre){ match('^"') }
- rule(:post){ match(',?"$') }
- rule(:content){ match('[^,"]') }
- rule(:title_exp){ pre.repeat(1).as('match_pre') >> any.repeat(1).as('match_cont') >> post.repeat.as('match_post') }
- end
- def parse(title)
- TitleParse.new.parse(title)
- rescue Parslet::ParseFailed => failure
- puts failure.parse_failure_cause.ascii_tree
- end
- pp parse(title)
- {"match_pre"=>"""@0,
- "match_cont"=>"This is some meaning less text with "quotes, commas",""@1,
- "match_post"=>[]}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement