Paco is a parser combinator library inspired by Haskell's Parsec and Parsimmon.
"But I don't need to write another JSON parser or a new language, why do I need your library then?"
Well, most probably you don't. But I can think of rare cases when you do. Say, you need to write a validation for git branch names.
You can go with easy-peasy regex:
branch_name_regex = /^(?!\/|.*(?:[\/.]\.|\/\/|@{|\\|\.lock$|[\/.]$))[^\040\177 ~^:?*\[]+$/ branch_name_regex.match?("feature/branch-validation")
With Paco, you can go with a little more verbose version of that rule:
module BranchNameParser extend Paco class << self def parse(input) parser.parse(input) end def parser lookahead(none_of("/")).next(valid_chars.join) end def valid_chars any_char.not_followed_by(invalid_sequences).at_least(1) end def invalid_sequences alt(invalid_chars, invalid_endings) end def invalid_chars alt( string("/."), string(".."), string("//"), string("@{"), string("\\\\"), one_of("\040\177 ~^:?*\\[") ) end def invalid_endings seq( alt(string(".lock"), one_of("/.")), eof ) end end end BranchNameParser.parse("feature/branch-validation")
Easy? Not really, but there is a chance you can read it. 😅
See API documentation, examples and specs for more info on usage.
Add to your Gemfile
:
And then run bundle install
.
After checking out the repo, run bin/setup
to install dependencies. Then, run bundle exec rspec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
.
Bug reports and pull requests are welcome on GitHub at https://github.com/skryukov/paco.
The gem is available as open source under the terms of the MIT License.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4