iron-web 1.0.2 → 1.1.1
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/History.txt +13 -2
 - data/README.rdoc +6 -0
 - data/Version.txt +1 -1
 - data/lib/iron/web/url.rb +26 -7
 - data/spec/web/url_spec.rb +16 -1
 - metadata +2 -2
 
    
        data/History.txt
    CHANGED
    
    | 
         @@ -1,3 +1,14 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            == 1.1.1 / 2013-03-13
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Handle setting Url params with keys, accessing with keys using #get_param
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            == 1.1.0 / 2013-03-12
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            * Fix parsing of multi-value params to be keyed without the "[]" - NOTE: BREAKING CHANGE!
         
     | 
| 
      
 8 
     | 
    
         
            +
            * Fix rendering of multi-value params to enforce addition of "[]"
         
     | 
| 
      
 9 
     | 
    
         
            +
            * Add Url#set_params(hash) to allow setting multiple params at once
         
     | 
| 
      
 10 
     | 
    
         
            +
            * Add optional param to Url#make_absolute to allow explicitly setting the server
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
       1 
12 
     | 
    
         
             
            == 1.0.2 / 2012-06-03
         
     | 
| 
       2 
13 
     | 
    
         | 
| 
       3 
14 
     | 
    
         
             
            * Add ability to access attributes on elements using []/[]=
         
     | 
| 
         @@ -9,9 +20,9 @@ 
     | 
|
| 
       9 
20 
     | 
    
         | 
| 
       10 
21 
     | 
    
         
             
            == 1.0.0 / 2012-03-02
         
     | 
| 
       11 
22 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
            *  
     | 
| 
      
 23 
     | 
    
         
            +
            * Break out extensions from older irongaze gem
         
     | 
| 
       13 
24 
     | 
    
         
             
            * Updated Url and Color classes with misc fixes
         
     | 
| 
       14 
25 
     | 
    
         
             
            * Added Url and Color spec coverage
         
     | 
| 
       15 
26 
     | 
    
         
             
            * Major Html::Element spec work, basic Html spec coverage
         
     | 
| 
       16 
27 
     | 
    
         
             
            * Add html_safe support for non-Rails environments
         
     | 
| 
       17 
     | 
    
         
            -
            *  
     | 
| 
      
 28 
     | 
    
         
            +
            * Add to GitHub
         
     | 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -16,6 +16,8 @@ A set of classes useful in the generation of HTML content. 
     | 
|
| 
       16 
16 
     | 
    
         
             
                >> url.params[:key] = 'some value'
         
     | 
| 
       17 
17 
     | 
    
         
             
                >> url.to_s
         
     | 
| 
       18 
18 
     | 
    
         
             
                => '/home?key=some+value'
         
     | 
| 
      
 19 
     | 
    
         
            +
                >> url.make_absolute(false, 'google.com')
         
     | 
| 
      
 20 
     | 
    
         
            +
                => 'http://google.com/home?key=some+value'
         
     | 
| 
       19 
21 
     | 
    
         | 
| 
       20 
22 
     | 
    
         
             
            * Color - an RGB/A color manipulation class, useful in generating CSS etc.
         
     | 
| 
       21 
23 
     | 
    
         | 
| 
         @@ -89,3 +91,7 @@ setting them during construction. 
     | 
|
| 
       89 
91 
     | 
    
         
             
            To install, simply run:
         
     | 
| 
       90 
92 
     | 
    
         | 
| 
       91 
93 
     | 
    
         
             
                sudo gem install iron-web
         
     | 
| 
      
 94 
     | 
    
         
            +
                
         
     | 
| 
      
 95 
     | 
    
         
            +
            RVM users can skip the sudo:
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                gem install iron-web
         
     | 
    
        data/Version.txt
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            1. 
     | 
| 
      
 1 
     | 
    
         
            +
            1.1.1
         
     | 
    
        data/lib/iron/web/url.rb
    CHANGED
    
    | 
         @@ -63,10 +63,11 @@ class Url 
     | 
|
| 
       63 
63 
     | 
    
         
             
                  str += '?'
         
     | 
| 
       64 
64 
     | 
    
         
             
                  str += params.collect do |k,v|
         
     | 
| 
       65 
65 
     | 
    
         
             
                    if v.is_a?(Array)
         
     | 
| 
      
 66 
     | 
    
         
            +
                      k = k.gsub('[]','')
         
     | 
| 
       66 
67 
     | 
    
         
             
                      v.collect do |vs|
         
     | 
| 
       67 
68 
     | 
    
         
             
                        val = vs.respond_to?(:to_param) ? vs.to_param : vs
         
     | 
| 
       68 
69 
     | 
    
         
             
                        val = val.to_s
         
     | 
| 
       69 
     | 
    
         
            -
                        CGI::escape(k.to_s) + '=' + CGI::escape(val)
         
     | 
| 
      
 70 
     | 
    
         
            +
                        CGI::escape(k.to_s) + '[]=' + CGI::escape(val)
         
     | 
| 
       70 
71 
     | 
    
         
             
                      end
         
     | 
| 
       71 
72 
     | 
    
         
             
                    else
         
     | 
| 
       72 
73 
     | 
    
         
             
                      val = v.respond_to?(:to_param) ? v.to_param : v
         
     | 
| 
         @@ -103,7 +104,13 @@ class Url 
     | 
|
| 
       103 
104 
     | 
    
         
             
                @params = {}
         
     | 
| 
       104 
105 
     | 
    
         
             
                params.split('&').each do |p|
         
     | 
| 
       105 
106 
     | 
    
         
             
                  k, v = p.split('=')
         
     | 
| 
       106 
     | 
    
         
            -
                   
     | 
| 
      
 107 
     | 
    
         
            +
                  if k && v
         
     | 
| 
      
 108 
     | 
    
         
            +
                    if k.ends_with?('[]')
         
     | 
| 
      
 109 
     | 
    
         
            +
                      add_param(CGI::unescape(k.gsub('[]','')), [CGI::unescape(v)])
         
     | 
| 
      
 110 
     | 
    
         
            +
                    else
         
     | 
| 
      
 111 
     | 
    
         
            +
                      add_param(CGI::unescape(k), CGI::unescape(v))
         
     | 
| 
      
 112 
     | 
    
         
            +
                    end
         
     | 
| 
      
 113 
     | 
    
         
            +
                  end
         
     | 
| 
       107 
114 
     | 
    
         
             
                end
         
     | 
| 
       108 
115 
     | 
    
         
             
              end
         
     | 
| 
       109 
116 
     | 
    
         | 
| 
         @@ -153,14 +160,22 @@ class Url 
     | 
|
| 
       153 
160 
     | 
    
         | 
| 
       154 
161 
     | 
    
         
             
              # Override current param val or set if none
         
     | 
| 
       155 
162 
     | 
    
         
             
              def set_param(k, v)
         
     | 
| 
       156 
     | 
    
         
            -
                @params[k] = v
         
     | 
| 
      
 163 
     | 
    
         
            +
                @params[k.to_s] = v
         
     | 
| 
      
 164 
     | 
    
         
            +
              end
         
     | 
| 
      
 165 
     | 
    
         
            +
              
         
     | 
| 
      
 166 
     | 
    
         
            +
              def set_params(hash)
         
     | 
| 
      
 167 
     | 
    
         
            +
                hash.each_pair {|k,v|
         
     | 
| 
      
 168 
     | 
    
         
            +
                  set_param(k, v)
         
     | 
| 
      
 169 
     | 
    
         
            +
                }
         
     | 
| 
       157 
170 
     | 
    
         
             
              end
         
     | 
| 
       158 
171 
     | 
    
         | 
| 
       159 
172 
     | 
    
         
             
              # Add a param value (can be called multiply for the same param key)
         
     | 
| 
       160 
173 
     | 
    
         
             
              def add_param(k, v)
         
     | 
| 
      
 174 
     | 
    
         
            +
                k = k.to_s
         
     | 
| 
       161 
175 
     | 
    
         
             
                oldval = @params[k]
         
     | 
| 
       162 
176 
     | 
    
         
             
                if oldval
         
     | 
| 
       163 
177 
     | 
    
         
             
                  @params[k] = oldval.is_a?(Array) ? oldval + [v] :  [oldval, v]
         
     | 
| 
      
 178 
     | 
    
         
            +
                  @params[k].flatten!
         
     | 
| 
       164 
179 
     | 
    
         
             
                else
         
     | 
| 
       165 
180 
     | 
    
         
             
                  @params[k] = v
         
     | 
| 
       166 
181 
     | 
    
         
             
                end
         
     | 
| 
         @@ -172,10 +187,14 @@ class Url 
     | 
|
| 
       172 
187 
     | 
    
         
             
                  if key_or_regex.is_a?(Regexp)
         
     | 
| 
       173 
188 
     | 
    
         
             
                    k.match(key_or_regex)
         
     | 
| 
       174 
189 
     | 
    
         
             
                  else
         
     | 
| 
       175 
     | 
    
         
            -
                    k == key_or_regex
         
     | 
| 
      
 190 
     | 
    
         
            +
                    k == key_or_regex.to_s
         
     | 
| 
       176 
191 
     | 
    
         
             
                  end
         
     | 
| 
       177 
192 
     | 
    
         
             
                end
         
     | 
| 
       178 
193 
     | 
    
         
             
              end
         
     | 
| 
      
 194 
     | 
    
         
            +
              
         
     | 
| 
      
 195 
     | 
    
         
            +
              def get_param(k)
         
     | 
| 
      
 196 
     | 
    
         
            +
                @params[k.to_s]
         
     | 
| 
      
 197 
     | 
    
         
            +
              end
         
     | 
| 
       179 
198 
     | 
    
         | 
| 
       180 
199 
     | 
    
         
             
              # Reset params
         
     | 
| 
       181 
200 
     | 
    
         
             
              def clear_params
         
     | 
| 
         @@ -200,10 +219,10 @@ class Url 
     | 
|
| 
       200 
219 
     | 
    
         
             
              end
         
     | 
| 
       201 
220 
     | 
    
         | 
| 
       202 
221 
     | 
    
         
             
              # Ensure url contains a server + scheme section, eg converts '/foo' into 'http://example.com/foo'.
         
     | 
| 
       203 
     | 
    
         
            -
              def make_absolute(secure = false)
         
     | 
| 
      
 222 
     | 
    
         
            +
              def make_absolute(secure = false, server = nil)
         
     | 
| 
       204 
223 
     | 
    
         
             
                unless absolute? && secure? == secure
         
     | 
| 
       205 
     | 
    
         
            -
                  raise 'No default server  
     | 
| 
       206 
     | 
    
         
            -
                  @server  
     | 
| 
      
 224 
     | 
    
         
            +
                  raise 'No default server set for Url#make_absolute' unless server || @server || Url.default_server
         
     | 
| 
      
 225 
     | 
    
         
            +
                  @server ||= (server || Url.default_server)
         
     | 
| 
       207 
226 
     | 
    
         
             
                  unless @scheme
         
     | 
| 
       208 
227 
     | 
    
         
             
                    @scheme = Url.default_scheme 
         
     | 
| 
       209 
228 
     | 
    
         
             
                    @port = nil
         
     | 
    
        data/spec/web/url_spec.rb
    CHANGED
    
    | 
         @@ -30,7 +30,7 @@ describe Url do 
     | 
|
| 
       30 
30 
     | 
    
         
             
                u.port.should == 819
         
     | 
| 
       31 
31 
     | 
    
         
             
                u.path.should == '/this/is-a-bunch.jpg'
         
     | 
| 
       32 
32 
     | 
    
         
             
                u.params['of'].should == 'crazy'
         
     | 
| 
       33 
     | 
    
         
            -
                u.params['free 
     | 
| 
      
 33 
     | 
    
         
            +
                u.params['free'].should == ['55']
         
     | 
| 
       34 
34 
     | 
    
         
             
                u.fragment.should == 'now'
         
     | 
| 
       35 
35 
     | 
    
         
             
              end
         
     | 
| 
       36 
36 
     | 
    
         | 
| 
         @@ -60,6 +60,7 @@ describe Url do 
     | 
|
| 
       60 
60 
     | 
    
         
             
                u = Url.new('/scores')
         
     | 
| 
       61 
61 
     | 
    
         
             
                u.add_param('soccer', '123')
         
     | 
| 
       62 
62 
     | 
    
         
             
                u.add_param('soccer', '456')
         
     | 
| 
      
 63 
     | 
    
         
            +
                u.to_s.should match(/soccer\[\]=/)
         
     | 
| 
       63 
64 
     | 
    
         
             
                u = Url.parse(u.to_s)
         
     | 
| 
       64 
65 
     | 
    
         
             
                val = u.params['soccer']
         
     | 
| 
       65 
66 
     | 
    
         
             
                val.should be_an(Array)
         
     | 
| 
         @@ -94,8 +95,22 @@ describe Url do 
     | 
|
| 
       94 
95 
     | 
    
         
             
                u.make_absolute.should == 'http://irongaze.com/bar'
         
     | 
| 
       95 
96 
     | 
    
         
             
              end
         
     | 
| 
       96 
97 
     | 
    
         | 
| 
      
 98 
     | 
    
         
            +
              it 'should allow explicit servers in make_absolute' do
         
     | 
| 
      
 99 
     | 
    
         
            +
                u = Url.parse('/bob')
         
     | 
| 
      
 100 
     | 
    
         
            +
                u.make_absolute(true, 'microsoft.com').should == 'https://microsoft.com/bob'
         
     | 
| 
      
 101 
     | 
    
         
            +
              end
         
     | 
| 
      
 102 
     | 
    
         
            +
              
         
     | 
| 
       97 
103 
     | 
    
         
             
              it 'should escape params correctly' do
         
     | 
| 
       98 
104 
     | 
    
         
             
                Url.build('/foo', 'one:two' => 'http://other.com').should == '/foo?one%3Atwo=http%3A%2F%2Fother.com'
         
     | 
| 
       99 
105 
     | 
    
         
             
              end
         
     | 
| 
       100 
106 
     | 
    
         | 
| 
      
 107 
     | 
    
         
            +
              it 'should allow setting and getting using symbols or strings' do
         
     | 
| 
      
 108 
     | 
    
         
            +
                u = Url.parse('/')
         
     | 
| 
      
 109 
     | 
    
         
            +
                u.set_param(:bob, 4)
         
     | 
| 
      
 110 
     | 
    
         
            +
                u.to_s.should == '/?bob=4'
         
     | 
| 
      
 111 
     | 
    
         
            +
                u.set_param('bob', 5)
         
     | 
| 
      
 112 
     | 
    
         
            +
                u.to_s.should == '/?bob=5'
         
     | 
| 
      
 113 
     | 
    
         
            +
                u.get_param(:bob).should == 5
         
     | 
| 
      
 114 
     | 
    
         
            +
              end
         
     | 
| 
      
 115 
     | 
    
         
            +
              
         
     | 
| 
       101 
116 
     | 
    
         
             
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: iron-web
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.1.1
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date:  
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2013-03-12 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: iron-extensions
         
     |