Method: Plezi::Base::Route#prep_params

Defined in:
lib/plezi/router/route.rb

#prep_params(postfix) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/plezi/router/route.rb', line 64

def prep_params(postfix)
   pfa = postfix.split '/'.freeze
   start = 0; stop = 0
   optional = false
   while pfa.any?
      name = pfa.shift
      raise "#{name} is not a valid path section in #{@origial}" unless /^((\:[\w\.\[\]]+)|(\(\:[\w\.\[\]]+\))|(\*))$/.match(name)
      if name[0] == ':'
         raise "Cannot have a required parameter after an optional parameter in #{@origial}" if optional
         @param_names << name[1..-1].freeze
      elsif name[0] == '('
         optional = true
         @param_names << name[2..-2].freeze
      elsif name[0] == '*'
         stop += 999_999
         break
      else
         raise "invalid path section #{name} in #{@origial}"
      end
      optional ? (stop += 1) : (start += 1)
   end
   unless (@param_names.include? 'id'.freeze) || stop >= 999_999
      @param_names << 'id'.freeze
      stop += 1
   end
   @params_range = (start..(start + stop))
   @param_names.freeze
   @params_range.freeze
end