Advertisement
Guest User

Untitled

a guest
Jul 25th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. INPUT: title = '"This is some meaning less text with "quotes, commas","'
  2.  
  3. {
  4. :pre=>""",
  5. :middle=> "This is some meaning less text with "quotes, commas"",
  6. :post=>",""
  7. }
  8.  
  9. INPUT: page = 'pp 211–220,.'
  10.  
  11. {
  12. :pre=>'pp ',
  13. :firstpage=>211,
  14. :sep=>'–',
  15. :lastpage=>220,
  16. :post=>',.'
  17. }
  18.  
  19. #!/usr/bin/ruby
  20. require 'parslet'
  21. require 'pp'
  22.  
  23. title = '"This is some meaning less text with "quotes, commas","'
  24.  
  25. class TitleParse < Parslet::Parser
  26. root(:title_exp)
  27.  
  28. rule(:pre){ match('^"') }
  29. rule(:post){ match(',?"$') }
  30. rule(:content){ match('[^,"]') }
  31.  
  32. rule(:title_exp){ pre.repeat(1).as('match_pre') >> any.repeat(1).as('match_cont') >> post.repeat.as('match_post') }
  33. end
  34.  
  35. def parse(title)
  36. TitleParse.new.parse(title)
  37. rescue Parslet::ParseFailed => failure
  38. puts failure.parse_failure_cause.ascii_tree
  39. end
  40.  
  41. pp parse(title)
  42.  
  43. {"match_pre"=>"""@0,
  44. "match_cont"=>"This is some meaning less text with "quotes, commas",""@1,
  45. "match_post"=>[]}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement