Gherkin

Fast Gherkin lexer based on Ragel.

Gherkin is the language that has evolved out of the Cucumber project. Cucumber currently uses Treetop, which is too slow for larger projects.

This project will not include code to build an AST. Instead, this lexer will have an API that makes it possible to plug in a builder that can build an AST.

Testing

rake ragel rake spec cucumber

Cleaning generated code

rake clobber

Release process

Run just “rake clean spec cucumber” for each platform (1.8.6, 1.8.7, 1.9, jruby) to make sure all is green. Make sure jruby was run last, so the jar file is left intact.

0) rvm 1.8.7 1) Bump version in the VERSION file 2) rake gemspec 3) Commit everything 4) rake release 5) ./nativegems.sh 6) gem push pkg/… (for each native gem)

TODO: Also build windows gem with dll using rake-compiler. MinGW gem can be done on OS X/Linux, but the one for the old Ruby one-click installers must be built with Visual Studio/nmake.

Build windows gems on OS X

Notes

Ragel supports Ruby, but it’s much slower than C. The ruby target will be used for development. The final version will use C for MRI and Java for JRuby.

Note on Patches/Pull Requests

  • Fork the project.

  • Run rake ragel:rb to generate all the I18N lexers

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but

    bump version in a commit by itself I can ignore when I pull)
    
  • Send me a pull request. Bonus points for topic branches.

Copyright © 2009 Mike Sassak, Gregory Hnatiuk, Aslak Hellesøy. See LICENSE for details.