0.0
Repository is archived
No commit activity in last 3 years
No release in over 3 years
Rupta is a router library for Web applications. The routes can be defined with URI Template.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 2.1.0
 Project Readme

README¶ ↑

Description¶ ↑

Rupta is a router library for web applications. The routes can be defined with URI Template. The usage is so simple. See the following examples.

Installation¶ ↑

$ sudo gem install iwamot-rupta --source http://gems.github.com

Examples¶ ↑

examples/routing.rb¶ ↑

routes = {'bookmark'    => ['http://example.com/bookmarks/{bookmark_id}',
                            'http://example.com/bookmarks/{bookmark_id}.{format}'],
          'static_path' => ['http://example.com/static_path'],
          'search'      => ['http://example.com/search']}

require 'rupta/factory'
router = Rupta::Factory.new.create

# Rupta#detect returns the name of a detected route,
# a matched URI template and extracted URI parameters
p router.detect(route, 'http://example.com/bookmarks/123.atom')
# => ["bookmark",
#     "http://example.com/bookmarks/{bookmark_id}.{format}",
#     {"bookmark_id"=>"123", "format"=>"atom"}]

# if the uri is static, the extracted parameters is empty
p router.detect(routes, 'http://example.com/static_path')
# => ["static_path", "http://example.com/static_path", {}]

# query strings are omitted
p router.detect(routes, 'http://example.com/search?q=foo')
# => ["search", "http://example.com/search", {}]

# when no route is found, Rupta#detect returns nil
p router.detect(routes, 'http://example.com/not_found')
# => nil

examples/fixtures/routes.yml¶ ↑

bookmark:
  - http://example.com/bookmarks/{bookmark_id}
  - http://example.com/bookmarks/{bookmark_id}.{format}
static_path:
  - http://example.com/static_path
search:
  - http://example.com/search

examples/routing_with_yaml_file.rb¶ ↑

yaml_path = File.expand_path('fixtures/routes.yml', File.dirname(__FILE__))

# use Rupta::Yaml::Factory, if you define routes in a YAML file
require 'rupta/yaml/factory'
rupta = Rupta::Yaml::Factory.new.create

p rupta.detect(yaml_path, 'http://example.com/bookmarks/123.atom')
# => ["bookmark",
#     "http://example.com/bookmarks/{bookmark_id}.{format}",
#     {"bookmark_id"=>"123", "format"=>"atom"}]

Requirement¶ ↑

Rupta-0.9.2 was tested with Ruby 1.9.1.

Dependencies¶ ↑

* addressable-2.1.0

Copyright © 2009 IWAMOTO Takashi. See LICENSE for details.