Class: Rad::RestfulRouter
- Includes:
- AbstractRouter
- Defined in:
- lib/rad/router/routers/restful_router.rb
Instance Method Summary collapse
- #add(resource, options = {}) ⇒ Object
- #decode(path, params) ⇒ Object
- #encode(klass, method, params) ⇒ Object
- #encode_method(route_method) ⇒ Object
-
#initialize ⇒ RestfulRouter
constructor
A new instance of RestfulRouter.
Constructor Details
#initialize ⇒ RestfulRouter
Returns a new instance of RestfulRouter.
5 6 7 |
# File 'lib/rad/router/routers/restful_router.rb', line 5 def initialize @resources, @classes = {}, {} end |
Instance Method Details
#add(resource, options = {}) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/rad/router/routers/restful_router.rb', line 9 def add resource, = {} # parsing options resource = resource.to_s resource.must_not =~ /\// raise "resource should be in plural form!" unless resource.pluralize == resource klass = .delete(:class) || raise("no class!") url_root = parse_url_root prefix = parse_prefix raise "unknown options :#{.to_h.keys.join(': ')}!" unless .empty? # logic = { class: klass, resource: resource, url_root: url_root, prefix: prefix } resources.must_not.include(resource.pluralize) classes.must_not.include(klass) resources[resource.pluralize] = resources[resource.singularize] = classes[klass] = end |
#decode(path, params) ⇒ Object
50 51 52 |
# File 'lib/rad/router/routers/restful_router.rb', line 50 def decode path, params decode_as_object_resource(path, params) || decode_as_static_resource(path, params) end |
#encode(klass, method, params) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/rad/router/routers/restful_router.rb', line 34 def encode klass, method, params = classes[klass] return nil unless path = if id = params.delete(:id) "/#{[:resource]}/#{id}/#{method}" else "/#{[:resource]}/#{method}" end path = encode_prefix_params! path, params, path = encode_url_root! path, [path, params] end |
#encode_method(route_method) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/rad/router/routers/restful_router.rb', line 54 def encode_method route_method token = route_method.sub(/_path$/, '') resources.each do |name, | if i = token.rindex(name) route_method.size == i + name.size and route_method[(i-1)..(i-1)] == '_' return [:class], route_method[0..(i-2)].to_sym end end return nil end |