No description
Find a file
Luis Lavena 63bdc343f4 doc: Correct usage sample styles
Ensure Crystal is used as usage examples blocks covered in README.

[skip ci]
2016-01-24 20:01:31 -03:00
spec spec: ensure Node usage is tracked 2016-01-24 19:21:19 -03:00
src Extraction: initial import 2016-01-24 19:19:42 -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
LICENSE Extraction: initial import 2016-01-24 19:19:42 -03:00
README.md doc: Correct usage sample styles 2016-01-24 20:01:31 -03:00
shard.yml Extraction: initial import 2016-01-24 19:19:42 -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/crystal-beryl/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