This gem implements the grape
pattern type for Mustermann.
Supported options:
capture
, converters
, except
, greedy
, ignore_unknown_options
, params
, space_matches_plus
and uri_decode
require 'mustermann/grape'
Mustermann.new('/:id', type: :grape).params('/foo') # => { id: 'foo' }
# Providing params option
Mustermann.new('/:id', type: :grape, params: {"id"=>{:type=>"Integer"}}).params('/1') # => { id: '1'}
Mustermann.new('/:id', type: :grape, params: {"id"=>{:type=>"Integer"}}).params('/foo') # => nil
Mustermann.new('/:id', type: :grape, params: {"id"=>{:type=>"String"}}).params('/foo') # => { id: 'foo'}
Syntax Element | Description |
---|---|
:name or {name} | Captures anything but a forward slash in a semi-greedy fashion. Capture is named name. Capture behavior can be modified with capture and greedy option. |
*name or {+name} | Captures anything in a non-greedy fashion. Capture is named name. |
* or {+splat} | Captures anything in a non-greedy fashion. Capture is named splat. It is always an array of captures, as you can use it more than once in a pattern. |
(expression) | Enclosed expression is optional. |
expression|expression|... | Will match anything matching the nested expressions. May contain any other syntax element, including captures. |
x? | Makes x optional. For instance, (foo)? matches foo or an empty string. |
/ | Matches forward slash. Does not match URI encoded version of forward slash. |
\x | Matches x or URI encoded version of x. For instance \* matches *. |
any other character | Matches exactly that character or a URI encoded version of it. |