No description
Find a file
2016-03-10 20:18:59 -03:00
spec Correctly split named parameters on tree insert 2016-03-10 17:50:08 -03:00
src Correctly split named parameters on tree insert 2016-03-10 17:50:08 -03:00
.gitignore Extraction: initial import 2016-01-24 19:19:42 -03:00
.travis.yml ci: adjust Travis build options 2016-01-24 19:23:48 -03:00
CHANGELOG.md Prepare for release: v0.1.2 2016-03-10 20:18:59 -03:00
LICENSE Extraction: initial import 2016-01-24 19:19:42 -03:00
README.md Merge pull request #1 from askn/master 2016-01-24 20:04:41 -03:00
shard.yml Prepare for release: v0.1.2 2016-03-10 20:18:59 -03:00

Radix Tree

Build Status docrystal.org

Radix tree implementation for Crystal language

Installation

Add this to your application's shard.yml:

dependencies:
  radix:
    github: luislavena/radix

Usage

You can associate a payload with each path added to the tree:

require "radix"

tree = Radix::Tree.new
tree.add "/products", :products
tree.add "/products/featured", :featured

result = tree.find "/products/featured"

if result.found?
  puts result.payload # => :featured
end

You can also extract values from placeholders (as named segments or globbing):

tree.add "/products/:id", :product

result = tree.find "/products/1234"

if result.found?
  puts result.params["id"]? # => "1234"
end

Please see Radix::Tree#add documentation for more usage examples.

Implementation

This project has been inspired and adapted from julienschmidt/httprouter and spriet2000/vertx-http-router Go and Java implementations, respectively.

Changes to logic and optimizations have been made to take advantage of Crystal's features.

Contributing

  1. Fork it ( https://github.com/luislavena/radix/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

Contributors