lib/usher/splitter.rb in joshbuddy-usher-0.4.1 vs lib/usher/splitter.rb in joshbuddy-usher-0.4.2

- old
+ new

@@ -1,17 +1,16 @@ require 'strscan' class Usher class Splitter - def self.for_delimiters(delimiters) + def self.for_delimiters(delimiters, valid_regex) delimiters_regex = delimiters.collect{|d| Regexp.quote(d)} * '|' - SplitterInstance.new( delimiters, - Regexp.new('((:|\*)?[0-9A-Za-z\$\-_\+!\*\',]+|' + delimiters_regex + '|\(|\)|\||\{)'), - Regexp.new(delimiters_regex + '|[0-9A-Za-z\$\-_\+!\*\',]+') + Regexp.new('((:|\*)?' + valid_regex + '|' + delimiters_regex + '|\(|\)|\||\{)'), + Regexp.new(delimiters_regex + '|' + valid_regex) ) end attr_reader :paths @@ -49,11 +48,11 @@ case part[0] when ?*, ?: type = part.slice!(0).chr.to_sym current_group << Usher::Route::Variable.new(type, part, requirements && requirements[part.to_sym], transformers && transformers[part.to_sym]) when ?{ - pattern = '' + pattern = '^' count = 1 variable = ss.scan(/[:\*]([^,]+),/) until count.zero? regex_part = ss.scan(/\{|\}|[^\{\}]+/) case regex_part[0] @@ -62,10 +61,10 @@ when ?} count -= 1 end pattern << regex_part end - pattern.slice!(pattern.size - 1) + pattern[pattern.size - 1] = ?$ regex = Regexp.new(pattern) if variable variable_type = variable.slice!(0).chr.to_sym variable_name = variable[0, variable.size - 1].to_sym current_group << Usher::Route::Variable.new(variable_type, variable_name, requirements && requirements[variable_name], transformers && transformers[variable_name], regex) \ No newline at end of file