Tomlrb
A Racc based TOML Ruby parser supporting the 1.0.0 version of the spec.
TODO
- Dumper
Installation
Add this line to your application's Gemfile:
gem 'tomlrb'
And then execute:
$ bundle
Or install it yourself as:
$ gem install tomlrb
Usage
Tomlrb.parse("[toml]\na = [\"array\", 123]")
or
Tomlrb.load_file('my_file', symbolize_keys: true)
Benchmark
You can run the benchmark against the only other v0.5.0 compliant parser to my knowledge with ruby benchmarks/bench.rb
.
Here are the results on my machine:
Warming up --------------------------------------
emancu/toml-rb 1.000 i/100ms
fbernier/tomlrb 33.000 i/100ms
Calculating -------------------------------------
emancu/toml-rb 15.597 (± 6.4%) i/s - 78.000 in 5.020321s
fbernier/tomlrb 348.307 (± 5.2%) i/s - 1.749k in 5.034878s
Comparison:
fbernier/tomlrb: 348.3 i/s
emancu/toml-rb: 15.6 i/s - 22.33x (± 0.00) slower
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run bin/console
for an interactive prompt that will allow you to experiment.
Do not forget to regenerate the parser when you modify rules in the parser.y
file using rake compile
.
Run the tests using rake test
.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
to create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
- Fork it ( https://github.com/[my-github-username]/tomlrb/fork )
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Thanks
Thanks to @jpbougie for the crash course on the Chomsky hierarchy and general tips.