Class: Rack::JetRouter::Builder
- Inherits:
-
Object
- Object
- Rack::JetRouter::Builder
- Defined in:
- lib/rack/jet_router.rb
Instance Method Summary collapse
- #build_rexp(tree, &callback) ⇒ Object
- #build_tree(entrypoint_pairs) ⇒ Object
-
#initialize(router, enable_range = true) ⇒ Builder
constructor
A new instance of Builder.
- #traverse_mapping(mapping, &block) ⇒ Object
Constructor Details
#initialize(router, enable_range = true) ⇒ Builder
Returns a new instance of Builder.
343 344 345 346 |
# File 'lib/rack/jet_router.rb', line 343 def initialize(router, enable_range=true) @router = router @enable_range = enable_range end |
Instance Method Details
#build_rexp(tree, &callback) ⇒ Object
557 558 559 560 561 562 563 |
# File 'lib/rack/jet_router.rb', line 557 def build_rexp(tree, &callback) #; [!65yw6] converts nested dict into regexp. sb = ['\A'] _build_rexp(tree, sb, &callback) sb << '\z' return Regexp.compile(sb.join()) end |
#build_tree(entrypoint_pairs) ⇒ Object
385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 |
# File 'lib/rack/jet_router.rb', line 385 def build_tree(entrypoint_pairs) #; [!6oa05] builds nested hash object from mapping data. tree = {} # tree is a nested dict pnames_d = {} entrypoint_pairs.each do |path, item| d = tree sb = ['\A'] pnames = _parse_path(path, sb, pnames_d) do |str, pat1| #; [!po6o6] param regexp should be stored into nested dict as a Regexp. d = _next_dict(d, str) unless str.empty? d = (d[Regexp.compile(pat1).freeze] ||= {}) if pat1 # ex: pat1=='[^./?]+' end sb << '\z' rexp = Regexp.compile(sb.join()) #; [!kz8m7] range object should be included into tuple if only one param exist. if @enable_range range, separator = _range_of_urlpath_param(path) else range = separator = nil end #; [!c6xmp] tuple should be stored into nested dict with key 'nil'. d[nil] = [rexp, pnames, item, range, separator] end return tree end |
#traverse_mapping(mapping, &block) ⇒ Object
348 349 350 351 |
# File 'lib/rack/jet_router.rb', line 348 def traverse_mapping(mapping, &block) _traverse_mapping(mapping, "", mapping.class, &block) nil end |