joshbuddy-usher 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/usher/grapher.rb +1 -0
 - data/lib/usher/node.rb +9 -6
 - data/lib/usher/route/splitter.rb +9 -18
 - data/lib/usher/route.rb +0 -1
 - data/lib/usher.rb +6 -7
 - data/spec/path_spec.rb +6 -9
 - data/spec/split_spec.rb +10 -13
 - data/usher.gemspec +3 -2
 - metadata +11 -3
 - data/lib/usher/route/separator.rb +0 -21
 - data/spec/node/lookup_spec.rb +0 -53
 
    
        data/lib/usher/grapher.rb
    CHANGED
    
    
    
        data/lib/usher/node.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            $:.unshift File.dirname(__FILE__)
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            require ' 
     | 
| 
      
 3 
     | 
    
         
            +
            require 'fuzzy_hash'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            class Usher
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
         @@ -14,7 +14,7 @@ class Usher 
     | 
|
| 
       14 
14 
     | 
    
         
             
                def initialize(parent, value)
         
     | 
| 
       15 
15 
     | 
    
         
             
                  @parent = parent
         
     | 
| 
       16 
16 
     | 
    
         
             
                  @value = value
         
     | 
| 
       17 
     | 
    
         
            -
                  @lookup =  
     | 
| 
      
 17 
     | 
    
         
            +
                  @lookup = FuzzyHash.new
         
     | 
| 
       18 
18 
     | 
    
         
             
                  @exclusive_type = nil
         
     | 
| 
       19 
19 
     | 
    
         
             
                  @has_globber = find_parent{|p| p.value && p.value.is_a?(Route::Variable)}
         
     | 
| 
       20 
20 
     | 
    
         
             
                end
         
     | 
| 
         @@ -104,6 +104,7 @@ class Usher 
     | 
|
| 
       104 
104 
     | 
    
         | 
| 
       105 
105 
     | 
    
         
             
                def find(request, path = Route::Splitter.url_split(request.path), params = [])
         
     | 
| 
       106 
106 
     | 
    
         
             
                  part = path.shift unless path.size.zero?
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
       107 
108 
     | 
    
         
             
                  if @exclusive_type
         
     | 
| 
       108 
109 
     | 
    
         
             
                    path.unshift part
         
     | 
| 
       109 
110 
     | 
    
         
             
                    [@lookup[request.send(@exclusive_type)], @lookup[nil]].each do |n|
         
     | 
| 
         @@ -126,19 +127,21 @@ class Usher 
     | 
|
| 
       126 
127 
     | 
    
         
             
                      when Symbol
         
     | 
| 
       127 
128 
     | 
    
         
             
                        part = part.send(t)
         
     | 
| 
       128 
129 
     | 
    
         
             
                      end
         
     | 
| 
       129 
     | 
    
         
            -
                      part = 
         
     | 
| 
       130 
130 
     | 
    
         
             
                      raise "#{part} does not conform to #{next_part.value.validator}" if next_part.value.validator && (not next_part.value.validator === part)
         
     | 
| 
       131 
131 
     | 
    
         
             
                      case next_part.value.type
         
     | 
| 
       132 
132 
     | 
    
         
             
                      when :*
         
     | 
| 
       133 
133 
     | 
    
         
             
                        params << [next_part.value.name, []]
         
     | 
| 
       134 
     | 
    
         
            -
                        params.last.last << part 
     | 
| 
      
 134 
     | 
    
         
            +
                        params.last.last << part
         
     | 
| 
       135 
135 
     | 
    
         
             
                      when :':'
         
     | 
| 
       136 
136 
     | 
    
         
             
                        params << [next_part.value.name, part]
         
     | 
| 
      
 137 
     | 
    
         
            +
                      when:'.:'
         
     | 
| 
      
 138 
     | 
    
         
            +
                        part.slice!(0)
         
     | 
| 
      
 139 
     | 
    
         
            +
                        params << [next_part.value.name, part]
         
     | 
| 
       137 
140 
     | 
    
         
             
                      end
         
     | 
| 
       138 
141 
     | 
    
         
             
                    end
         
     | 
| 
       139 
142 
     | 
    
         
             
                    next_part.find(request, path, params)
         
     | 
| 
       140 
     | 
    
         
            -
                  elsif has_globber? && p = find_parent{|p|  
     | 
| 
       141 
     | 
    
         
            -
                    params.last.last << part 
     | 
| 
      
 143 
     | 
    
         
            +
                  elsif has_globber? && p = find_parent{|p| p.value.is_a?(Route::Variable) && p.value.type == :*}
         
     | 
| 
      
 144 
     | 
    
         
            +
                    params.last.last << part
         
     | 
| 
       142 
145 
     | 
    
         
             
                    find(request, path, params)
         
     | 
| 
       143 
146 
     | 
    
         
             
                  else
         
     | 
| 
       144 
147 
     | 
    
         
             
                    nil
         
     | 
    
        data/lib/usher/route/splitter.rb
    CHANGED
    
    | 
         @@ -2,8 +2,8 @@ class Usher 
     | 
|
| 
       2 
2 
     | 
    
         
             
              class Route
         
     | 
| 
       3 
3 
     | 
    
         
             
                class Splitter
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
                  ScanRegex = /([ 
     | 
| 
       6 
     | 
    
         
            -
                  UrlScanRegex =  
     | 
| 
      
 5 
     | 
    
         
            +
                  ScanRegex = /((:|\*||\.:|)[0-9a-z_]+|\/|\(|\))/
         
     | 
| 
      
 6 
     | 
    
         
            +
                  UrlScanRegex = /\/|\.?\w+/
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                  attr_reader :paths
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
         @@ -13,37 +13,27 @@ class Usher 
     | 
|
| 
       13 
13 
     | 
    
         
             
                  end
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
15 
     | 
    
         
             
                  def self.url_split(path)
         
     | 
| 
       16 
     | 
    
         
            -
                    parts =  
     | 
| 
      
 16 
     | 
    
         
            +
                    parts = []
         
     | 
| 
       17 
17 
     | 
    
         
             
                    ss = StringScanner.new(path)
         
     | 
| 
       18 
18 
     | 
    
         
             
                      while !ss.eos?
         
     | 
| 
       19 
     | 
    
         
            -
                        part = ss.scan(UrlScanRegex)
         
     | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
       21 
     | 
    
         
            -
                        when ?.
         
     | 
| 
       22 
     | 
    
         
            -
                          parts << Separator::Dot
         
     | 
| 
       23 
     | 
    
         
            -
                        when ?/
         
     | 
| 
       24 
     | 
    
         
            -
                          parts << Separator::Slash
         
     | 
| 
       25 
     | 
    
         
            -
                        else
         
     | 
| 
       26 
     | 
    
         
            -
                          parts << part
         
     | 
| 
      
 19 
     | 
    
         
            +
                        if part = ss.scan(UrlScanRegex)
         
     | 
| 
      
 20 
     | 
    
         
            +
                          parts << part unless part == '/'
         
     | 
| 
       27 
21 
     | 
    
         
             
                        end
         
     | 
| 
       28 
22 
     | 
    
         
             
                      end if path && !path.empty?
         
     | 
| 
       29 
23 
     | 
    
         
             
                    parts
         
     | 
| 
       30 
24 
     | 
    
         
             
                  end
         
     | 
| 
       31 
25 
     | 
    
         | 
| 
       32 
26 
     | 
    
         
             
                  def self.split(path, requirements = {}, transformers = {})
         
     | 
| 
       33 
     | 
    
         
            -
                    parts =  
     | 
| 
      
 27 
     | 
    
         
            +
                    parts = []
         
     | 
| 
       34 
28 
     | 
    
         
             
                    ss = StringScanner.new(path)
         
     | 
| 
       35 
29 
     | 
    
         
             
                    groups = [parts]
         
     | 
| 
       36 
30 
     | 
    
         
             
                    current_group = parts
         
     | 
| 
       37 
31 
     | 
    
         
             
                    while !ss.eos?
         
     | 
| 
       38 
32 
     | 
    
         
             
                      part = ss.scan(ScanRegex)
         
     | 
| 
       39 
33 
     | 
    
         
             
                      case part[0]
         
     | 
| 
       40 
     | 
    
         
            -
                      when ?*,  
     | 
| 
       41 
     | 
    
         
            -
                        type = part.slice!(0).chr.to_sym
         
     | 
| 
      
 34 
     | 
    
         
            +
                      when ?*, ?:, ?.
         
     | 
| 
      
 35 
     | 
    
         
            +
                        type = (part[1] == ?: ? part.slice!(0,2) : part.slice!(0).chr).to_sym
         
     | 
| 
       42 
36 
     | 
    
         
             
                        current_group << Variable.new(type, part, :validator => requirements[part.to_sym], :transformer => transformers[part.to_sym])
         
     | 
| 
       43 
     | 
    
         
            -
                      when ?.
         
     | 
| 
       44 
     | 
    
         
            -
                        current_group << Separator::Dot
         
     | 
| 
       45 
     | 
    
         
            -
                      when ?/
         
     | 
| 
       46 
     | 
    
         
            -
                        current_group << Separator::Slash
         
     | 
| 
       47 
37 
     | 
    
         
             
                      when ?(
         
     | 
| 
       48 
38 
     | 
    
         
             
                        new_group = []
         
     | 
| 
       49 
39 
     | 
    
         
             
                        groups << new_group
         
     | 
| 
         @@ -52,6 +42,7 @@ class Usher 
     | 
|
| 
       52 
42 
     | 
    
         
             
                      when ?)
         
     | 
| 
       53 
43 
     | 
    
         
             
                        groups.pop
         
     | 
| 
       54 
44 
     | 
    
         
             
                        current_group = groups.last
         
     | 
| 
      
 45 
     | 
    
         
            +
                      when ?/
         
     | 
| 
       55 
46 
     | 
    
         
             
                      else
         
     | 
| 
       56 
47 
     | 
    
         
             
                        current_group << part
         
     | 
| 
       57 
48 
     | 
    
         
             
                      end
         
     | 
    
        data/lib/usher/route.rb
    CHANGED
    
    
    
        data/lib/usher.rb
    CHANGED
    
    | 
         @@ -93,22 +93,21 @@ class Usher 
     | 
|
| 
       93 
93 
     | 
    
         
             
                  Array(params)
         
     | 
| 
       94 
94 
     | 
    
         
             
                end
         
     | 
| 
       95 
95 
     | 
    
         | 
| 
       96 
     | 
    
         
            -
                generated_path =  
     | 
| 
      
 96 
     | 
    
         
            +
                generated_path = ''
         
     | 
| 
       97 
97 
     | 
    
         | 
| 
       98 
     | 
    
         
            -
                sep_p = nil
         
     | 
| 
       99 
98 
     | 
    
         
             
                path.parts.each do |p|
         
     | 
| 
       100 
99 
     | 
    
         
             
                  case p
         
     | 
| 
       101 
100 
     | 
    
         
             
                  when Route::Variable
         
     | 
| 
       102 
101 
     | 
    
         
             
                    case p.type
         
     | 
| 
       103 
102 
     | 
    
         
             
                    when :*
         
     | 
| 
       104 
     | 
    
         
            -
                      generated_path <<  
     | 
| 
      
 103 
     | 
    
         
            +
                      generated_path << '/' << param_list.shift * '/'
         
     | 
| 
      
 104 
     | 
    
         
            +
                    when :'.:'
         
     | 
| 
      
 105 
     | 
    
         
            +
                      (dp = param_list.shift) && generated_path << '.' << dp.to_s
         
     | 
| 
       105 
106 
     | 
    
         
             
                    else
         
     | 
| 
       106 
     | 
    
         
            -
                      (dp = param_list.shift) && generated_path <<  
     | 
| 
      
 107 
     | 
    
         
            +
                      (dp = param_list.shift) && generated_path << '/' << dp.to_s
         
     | 
| 
       107 
108 
     | 
    
         
             
                    end
         
     | 
| 
       108 
     | 
    
         
            -
                  when Route::Separator
         
     | 
| 
       109 
     | 
    
         
            -
                    sep_p = p
         
     | 
| 
       110 
109 
     | 
    
         
             
                  else
         
     | 
| 
       111 
     | 
    
         
            -
                    generated_path <<  
     | 
| 
      
 110 
     | 
    
         
            +
                    generated_path << '/' << p.to_s
         
     | 
| 
       112 
111 
     | 
    
         
             
                  end
         
     | 
| 
       113 
112 
     | 
    
         
             
                end
         
     | 
| 
       114 
113 
     | 
    
         
             
                unless params_hash.blank?
         
     | 
    
        data/spec/path_spec.rb
    CHANGED
    
    | 
         @@ -2,9 +2,6 @@ require 'lib/usher' 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            route_set = Usher.new
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            S = Usher::Route::Separator::Slash
         
     | 
| 
       6 
     | 
    
         
            -
            D = Usher::Route::Separator::Dot
         
     | 
| 
       7 
     | 
    
         
            -
             
     | 
| 
       8 
5 
     | 
    
         
             
            describe "Usher route adding" do
         
     | 
| 
       9 
6 
     | 
    
         | 
| 
       10 
7 
     | 
    
         
             
              before(:each) do
         
     | 
| 
         @@ -25,12 +22,12 @@ describe "Usher route adding" do 
     | 
|
| 
       25 
22 
     | 
    
         
             
              it "should add every kind of optional route possible" do
         
     | 
| 
       26 
23 
     | 
    
         
             
                route_set.add_route('/a/b(/c)(/d(/e))')
         
     | 
| 
       27 
24 
     | 
    
         
             
                route_set.routes.first.paths.collect{|a| a.parts }.should == [
         
     | 
| 
       28 
     | 
    
         
            -
                  [ 
     | 
| 
       29 
     | 
    
         
            -
                  [ 
     | 
| 
       30 
     | 
    
         
            -
                  [ 
     | 
| 
       31 
     | 
    
         
            -
                  [ 
     | 
| 
       32 
     | 
    
         
            -
                  [ 
     | 
| 
       33 
     | 
    
         
            -
                  [ 
     | 
| 
      
 25 
     | 
    
         
            +
                  ["a", "b"],
         
     | 
| 
      
 26 
     | 
    
         
            +
                  ["a", "b", "c"],
         
     | 
| 
      
 27 
     | 
    
         
            +
                  ["a", "b", "d"],
         
     | 
| 
      
 28 
     | 
    
         
            +
                  ["a", "b", "d", "e"], 
         
     | 
| 
      
 29 
     | 
    
         
            +
                  ["a", "b", "c", "d"], 
         
     | 
| 
      
 30 
     | 
    
         
            +
                  ["a", "b", "c", "d", "e"]
         
     | 
| 
       34 
31 
     | 
    
         
             
                ]
         
     | 
| 
       35 
32 
     | 
    
         | 
| 
       36 
33 
     | 
    
         
             
              end
         
     | 
    
        data/spec/split_spec.rb
    CHANGED
    
    | 
         @@ -1,36 +1,33 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'lib/usher'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            Slash = Usher::Route::Separator::Slash
         
     | 
| 
       4 
     | 
    
         
            -
            Dot = Usher::Route::Separator::Dot
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
3 
     | 
    
         
             
            describe "Usher route tokenizing" do
         
     | 
| 
       7 
4 
     | 
    
         | 
| 
       8 
5 
     | 
    
         | 
| 
       9 
6 
     | 
    
         
             
              it "should split / delimited routes" do
         
     | 
| 
       10 
     | 
    
         
            -
                Usher::Route::Splitter.new('/test/this/split').paths.first.should == [ 
     | 
| 
      
 7 
     | 
    
         
            +
                Usher::Route::Splitter.new('/test/this/split').paths.first.should == ['test', 'this', 'split']
         
     | 
| 
       11 
8 
     | 
    
         
             
              end
         
     | 
| 
       12 
9 
     | 
    
         | 
| 
       13 
10 
     | 
    
         
             
              it "should group optional parts with brackets" do
         
     | 
| 
       14 
11 
     | 
    
         
             
                Usher::Route::Splitter.new('/test/this(/split)').paths.should == [
         
     | 
| 
       15 
     | 
    
         
            -
                  [ 
     | 
| 
       16 
     | 
    
         
            -
                  [ 
     | 
| 
      
 12 
     | 
    
         
            +
                  ['test', 'this'],
         
     | 
| 
      
 13 
     | 
    
         
            +
                  ['test', 'this', 'split']
         
     | 
| 
       17 
14 
     | 
    
         
             
                ]
         
     | 
| 
       18 
15 
     | 
    
         
             
              end
         
     | 
| 
       19 
16 
     | 
    
         | 
| 
       20 
17 
     | 
    
         
             
              it "should group optional parts with brackets (for non overlapping groups)" do
         
     | 
| 
       21 
18 
     | 
    
         
             
                Usher::Route::Splitter.new('/test/this(/split)(/split2)').paths == [
         
     | 
| 
       22 
     | 
    
         
            -
                  [ 
     | 
| 
       23 
     | 
    
         
            -
                  [ 
     | 
| 
       24 
     | 
    
         
            -
                  [ 
     | 
| 
       25 
     | 
    
         
            -
                  [ 
     | 
| 
      
 19 
     | 
    
         
            +
                  ["test", "this"],
         
     | 
| 
      
 20 
     | 
    
         
            +
                  ["test", "this", "split"],
         
     | 
| 
      
 21 
     | 
    
         
            +
                  ["test", "this", "split2"],
         
     | 
| 
      
 22 
     | 
    
         
            +
                  ["test", "this", "split", "split2"]
         
     | 
| 
       26 
23 
     | 
    
         
             
                ]
         
     | 
| 
       27 
24 
     | 
    
         
             
              end
         
     | 
| 
       28 
25 
     | 
    
         | 
| 
       29 
26 
     | 
    
         
             
              it "should group nested-optional parts with brackets" do
         
     | 
| 
       30 
27 
     | 
    
         
             
                Usher::Route::Splitter.new('/test/this(/split(.:format))').paths == [
         
     | 
| 
       31 
     | 
    
         
            -
                  [ 
     | 
| 
       32 
     | 
    
         
            -
                  [ 
     | 
| 
       33 
     | 
    
         
            -
                  [ 
     | 
| 
      
 28 
     | 
    
         
            +
                  ["test", "this"],
         
     | 
| 
      
 29 
     | 
    
         
            +
                  ["test", "this", "split"],
         
     | 
| 
      
 30 
     | 
    
         
            +
                  ["test", "this", "split", Usher::Route::Variable.new(:'.:', :format)]
         
     | 
| 
       34 
31 
     | 
    
         
             
                ]
         
     | 
| 
       35 
32 
     | 
    
         
             
              end
         
     | 
| 
       36 
33 
     | 
    
         | 
    
        data/usher.gemspec
    CHANGED
    
    | 
         @@ -2,20 +2,21 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            Gem::Specification.new do |s|
         
     | 
| 
       4 
4 
     | 
    
         
             
              s.name = %q{usher}
         
     | 
| 
       5 
     | 
    
         
            -
              s.version = "0.0. 
     | 
| 
      
 5 
     | 
    
         
            +
              s.version = "0.0.3"
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         
     | 
| 
       8 
8 
     | 
    
         
             
              s.authors = ["Joshua HullJoshua Hull"]
         
     | 
| 
       9 
9 
     | 
    
         
             
              s.date = %q{2009-03-01}
         
     | 
| 
       10 
10 
     | 
    
         
             
              s.email = %q{joshbuddy@gmail.comjoshbuddy@gmail.com}
         
     | 
| 
       11 
11 
     | 
    
         
             
              s.extra_rdoc_files = ["History.txt", "Manifest.txt"]
         
     | 
| 
       12 
     | 
    
         
            -
              s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "lib/compat.rb", "lib/usher.rb", "lib/usher/exceptions.rb", "lib/usher/grapher.rb", "lib/usher/interface.rb", "lib/usher/interface/merb_interface.rb", "lib/usher/interface/rack_interface.rb", "lib/usher/interface/rack_interface/mapper.rb", "lib/usher/interface/rack_interface/route.rb", "lib/usher/interface/rails2_interface.rb", "lib/usher/interface/rails2_interface/mapper.rb", "lib/usher/node.rb", "lib/usher/node/lookup.rb", "lib/usher/route.rb", "lib/usher/route/http.rb", "lib/usher/route/path.rb", "lib/usher/route/ 
     | 
| 
      
 12 
     | 
    
         
            +
              s.files = ["History.txt", "Manifest.txt", "README.rdoc", "Rakefile", "lib/compat.rb", "lib/usher.rb", "lib/usher/exceptions.rb", "lib/usher/grapher.rb", "lib/usher/interface.rb", "lib/usher/interface/merb_interface.rb", "lib/usher/interface/rack_interface.rb", "lib/usher/interface/rack_interface/mapper.rb", "lib/usher/interface/rack_interface/route.rb", "lib/usher/interface/rails2_interface.rb", "lib/usher/interface/rails2_interface/mapper.rb", "lib/usher/node.rb", "lib/usher/node/lookup.rb", "lib/usher/route.rb", "lib/usher/route/http.rb", "lib/usher/route/path.rb", "lib/usher/route/splitter.rb", "lib/usher/route/variable.rb", "rails/init.rb", "spec/generate_spec.rb", "spec/path_spec.rb", "spec/rack/dispatch_spec.rb", "spec/rails/generate_spec.rb", "spec/rails/path_spec.rb", "spec/rails/recognize_spec.rb", "spec/recognize_spec.rb", "spec/spec.opts", "spec/split_spec.rb", "usher.gemspec"]
         
     | 
| 
       13 
13 
     | 
    
         
             
              s.has_rdoc = true
         
     | 
| 
       14 
14 
     | 
    
         
             
              s.rdoc_options = ["--main", "README.rdoc"]
         
     | 
| 
       15 
15 
     | 
    
         
             
              s.require_paths = ["lib"]
         
     | 
| 
       16 
16 
     | 
    
         
             
              s.rubyforge_project = %q{usher}
         
     | 
| 
       17 
17 
     | 
    
         
             
              s.rubygems_version = %q{1.3.1}
         
     | 
| 
       18 
18 
     | 
    
         
             
              s.summary = %q{Tree-based router}
         
     | 
| 
      
 19 
     | 
    
         
            +
              s.add_dependency(%q<fuzzy_hash>)
         
     | 
| 
       19 
20 
     | 
    
         | 
| 
       20 
21 
     | 
    
         
             
              if s.respond_to? :specification_version then
         
     | 
| 
       21 
22 
     | 
    
         
             
                current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: joshbuddy-usher
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.0. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.0.3
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors: 
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Joshua HullJoshua Hull
         
     | 
| 
         @@ -12,6 +12,16 @@ cert_chain: [] 
     | 
|
| 
       12 
12 
     | 
    
         
             
            date: 2009-03-01 00:00:00 -08:00
         
     | 
| 
       13 
13 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       14 
14 
     | 
    
         
             
            dependencies: 
         
     | 
| 
      
 15 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency 
         
     | 
| 
      
 16 
     | 
    
         
            +
              name: fuzzy_hash
         
     | 
| 
      
 17 
     | 
    
         
            +
              type: :runtime
         
     | 
| 
      
 18 
     | 
    
         
            +
              version_requirement: 
         
     | 
| 
      
 19 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 20 
     | 
    
         
            +
                requirements: 
         
     | 
| 
      
 21 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 22 
     | 
    
         
            +
                  - !ruby/object:Gem::Version 
         
     | 
| 
      
 23 
     | 
    
         
            +
                    version: "0"
         
     | 
| 
      
 24 
     | 
    
         
            +
                version: 
         
     | 
| 
       15 
25 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       16 
26 
     | 
    
         
             
              name: hoe
         
     | 
| 
       17 
27 
     | 
    
         
             
              type: :development
         
     | 
| 
         @@ -52,12 +62,10 @@ files: 
     | 
|
| 
       52 
62 
     | 
    
         
             
            - lib/usher/route.rb
         
     | 
| 
       53 
63 
     | 
    
         
             
            - lib/usher/route/http.rb
         
     | 
| 
       54 
64 
     | 
    
         
             
            - lib/usher/route/path.rb
         
     | 
| 
       55 
     | 
    
         
            -
            - lib/usher/route/separator.rb
         
     | 
| 
       56 
65 
     | 
    
         
             
            - lib/usher/route/splitter.rb
         
     | 
| 
       57 
66 
     | 
    
         
             
            - lib/usher/route/variable.rb
         
     | 
| 
       58 
67 
     | 
    
         
             
            - rails/init.rb
         
     | 
| 
       59 
68 
     | 
    
         
             
            - spec/generate_spec.rb
         
     | 
| 
       60 
     | 
    
         
            -
            - spec/node/lookup_spec.rb
         
     | 
| 
       61 
69 
     | 
    
         
             
            - spec/path_spec.rb
         
     | 
| 
       62 
70 
     | 
    
         
             
            - spec/rack/dispatch_spec.rb
         
     | 
| 
       63 
71 
     | 
    
         
             
            - spec/rails/generate_spec.rb
         
     | 
| 
         @@ -1,21 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            class Usher
         
     | 
| 
       2 
     | 
    
         
            -
              class Route
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
                class Separator
         
     | 
| 
       5 
     | 
    
         
            -
                  private
         
     | 
| 
       6 
     | 
    
         
            -
                  def initialize(sep)
         
     | 
| 
       7 
     | 
    
         
            -
                    @sep = sep
         
     | 
| 
       8 
     | 
    
         
            -
                    @sep_to_s = "#{sep}"
         
     | 
| 
       9 
     | 
    
         
            -
                  end
         
     | 
| 
       10 
     | 
    
         
            -
             
     | 
| 
       11 
     | 
    
         
            -
                  public
         
     | 
| 
       12 
     | 
    
         
            -
                  def to_s
         
     | 
| 
       13 
     | 
    
         
            -
                    @sep_to_s
         
     | 
| 
       14 
     | 
    
         
            -
                  end
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  Dot = Separator.new(:'.')
         
     | 
| 
       17 
     | 
    
         
            -
                  Slash = Separator.new(:/)
         
     | 
| 
       18 
     | 
    
         
            -
                end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              end
         
     | 
| 
       21 
     | 
    
         
            -
            end
         
     | 
    
        data/spec/node/lookup_spec.rb
    DELETED
    
    | 
         @@ -1,53 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'lib/usher'
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe "String/regexp lookup table" do
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              it "should accept strings and retrieve based on them" do
         
     | 
| 
       7 
     | 
    
         
            -
                l = Usher::Node::Lookup.new
         
     | 
| 
       8 
     | 
    
         
            -
                l['asd'] = 'qwe'
         
     | 
| 
       9 
     | 
    
         
            -
                l['asd'].should == 'qwe'
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
              
         
     | 
| 
       12 
     | 
    
         
            -
              it "should accept regexs too" do
         
     | 
| 
       13 
     | 
    
         
            -
                l = Usher::Node::Lookup.new
         
     | 
| 
       14 
     | 
    
         
            -
                l[/asd.*/] = 'qwe'
         
     | 
| 
       15 
     | 
    
         
            -
                l['asdqweasd'].should == 'qwe'
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
       18 
     | 
    
         
            -
              it "should prefer string to regex matches" do
         
     | 
| 
       19 
     | 
    
         
            -
                l = Usher::Node::Lookup.new
         
     | 
| 
       20 
     | 
    
         
            -
                l['asd'] = 'qwe2'
         
     | 
| 
       21 
     | 
    
         
            -
                l[/asd.*/] = 'qwe'
         
     | 
| 
       22 
     | 
    
         
            -
                l['asd'].should == 'qwe2'
         
     | 
| 
       23 
     | 
    
         
            -
              end
         
     | 
| 
       24 
     | 
    
         
            -
             
     | 
| 
       25 
     | 
    
         
            -
              it "should allow nil keys" do
         
     | 
| 
       26 
     | 
    
         
            -
                l = Usher::Node::Lookup.new
         
     | 
| 
       27 
     | 
    
         
            -
                l[nil] = 'qwe2'
         
     | 
| 
       28 
     | 
    
         
            -
                l['asd'] = 'qwe'
         
     | 
| 
       29 
     | 
    
         
            -
                l['asd'].should == 'qwe'
         
     | 
| 
       30 
     | 
    
         
            -
                l[nil].should == 'qwe2'
         
     | 
| 
       31 
     | 
    
         
            -
              end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
              it "should be able to delete by value for hash" do
         
     | 
| 
       34 
     | 
    
         
            -
                l = Usher::Node::Lookup.new
         
     | 
| 
       35 
     | 
    
         
            -
                l[nil] = 'qwe2'
         
     | 
| 
       36 
     | 
    
         
            -
                l['asd'] = 'qwe'
         
     | 
| 
       37 
     | 
    
         
            -
                l['asd'].should == 'qwe'
         
     | 
| 
       38 
     | 
    
         
            -
                l[nil].should == 'qwe2'
         
     | 
| 
       39 
     | 
    
         
            -
                l.delete_value('qwe2')
         
     | 
| 
       40 
     | 
    
         
            -
                l[nil].should == nil
         
     | 
| 
       41 
     | 
    
         
            -
              end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
              it "should be able to delete by value for hash" do
         
     | 
| 
       44 
     | 
    
         
            -
                l = Usher::Node::Lookup.new
         
     | 
| 
       45 
     | 
    
         
            -
                l[/qwe.*/] = 'qwe2'
         
     | 
| 
       46 
     | 
    
         
            -
                l['asd'] = 'qwe'
         
     | 
| 
       47 
     | 
    
         
            -
                l['asd'].should == 'qwe'
         
     | 
| 
       48 
     | 
    
         
            -
                l['qweasd'].should == 'qwe2'
         
     | 
| 
       49 
     | 
    
         
            -
                l.delete_value('qwe2')
         
     | 
| 
       50 
     | 
    
         
            -
                l['qweasd'].should == nil
         
     | 
| 
       51 
     | 
    
         
            -
              end
         
     | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
            end
         
     |