addressable 2.2.6 → 2.2.7
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/CHANGELOG +25 -21
 - data/lib/addressable/template.rb +3 -3
 - data/lib/addressable/uri.rb +61 -32
 - data/lib/addressable/version.rb +1 -1
 - data/spec/addressable/net_http_compat_spec.rb +26 -0
 - data/spec/addressable/uri_spec.rb +123 -13
 - data/tasks/gem.rake +2 -0
 - data/tasks/git.rake +6 -1
 - data/tasks/spec.rake +7 -0
 - metadata +6 -18
 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,33 +1,37 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            # Addressable 2.2.7
         
     | 
| 
      
 2 
     | 
    
         
            +
            - fixed issues related to Addressable::URI#query_values=
         
     | 
| 
      
 3 
     | 
    
         
            +
            - the Addressable::URI.parse method is now polymorphic
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            # Addressable 2.2.6
         
     | 
| 
       2 
6 
     | 
    
         
             
            - changed the way ambiguous paths are handled
         
     | 
| 
       3 
7 
     | 
    
         
             
            - fixed bug with frozen URIs
         
     | 
| 
       4 
8 
     | 
    
         
             
            - https supported in heuristic parsing
         
     | 
| 
       5 
9 
     | 
    
         | 
| 
       6 
     | 
    
         
            -
             
     | 
| 
      
 10 
     | 
    
         
            +
            # Addressable 2.2.5
         
     | 
| 
       7 
11 
     | 
    
         
             
            - 'parsing' a pre-parsed URI object is now a dup operation
         
     | 
| 
       8 
12 
     | 
    
         
             
            - introduced conditional support for libidn
         
     | 
| 
       9 
13 
     | 
    
         
             
            - fixed normalization issue on ampersands in query strings
         
     | 
| 
       10 
14 
     | 
    
         
             
            - added additional tests around handling of query strings
         
     | 
| 
       11 
15 
     | 
    
         | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 16 
     | 
    
         
            +
            # Addressable 2.2.4
         
     | 
| 
       13 
17 
     | 
    
         
             
            - added origin support from draft-ietf-websec-origin-00
         
     | 
| 
       14 
18 
     | 
    
         
             
            - resolved issue with attempting to navigate below root
         
     | 
| 
       15 
19 
     | 
    
         
             
            - fixed bug with string splitting in query strings
         
     | 
| 
       16 
20 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 21 
     | 
    
         
            +
            # Addressable 2.2.3
         
     | 
| 
       18 
22 
     | 
    
         
             
            - added :flat_array notation for query strings
         
     | 
| 
       19 
23 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
             
     | 
| 
      
 24 
     | 
    
         
            +
            # Addressable 2.2.2
         
     | 
| 
       21 
25 
     | 
    
         
             
            - fixed issue with percent escaping of '+' character in query strings
         
     | 
| 
       22 
26 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
             
     | 
| 
      
 27 
     | 
    
         
            +
            # Addressable 2.2.1
         
     | 
| 
       24 
28 
     | 
    
         
             
            - added support for application/x-www-form-urlencoded.
         
     | 
| 
       25 
29 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
      
 30 
     | 
    
         
            +
            # Addressable 2.2.0
         
     | 
| 
       27 
31 
     | 
    
         
             
            - added site methods
         
     | 
| 
       28 
32 
     | 
    
         
             
            - improved documentation
         
     | 
| 
       29 
33 
     | 
    
         | 
| 
       30 
     | 
    
         
            -
             
     | 
| 
      
 34 
     | 
    
         
            +
            # Addressable 2.1.2
         
     | 
| 
       31 
35 
     | 
    
         
             
            - added HTTP request URI methods
         
     | 
| 
       32 
36 
     | 
    
         
             
            - better handling of Windows file paths
         
     | 
| 
       33 
37 
     | 
    
         
             
            - validation_deferred boolean replaced with defer_validation block
         
     | 
| 
         @@ -35,14 +39,14 @@ 
     | 
|
| 
       35 
39 
     | 
    
         
             
            - fixed issue with constructing URIs with relative paths
         
     | 
| 
       36 
40 
     | 
    
         
             
            - fixed warnings
         
     | 
| 
       37 
41 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
      
 42 
     | 
    
         
            +
            # Addressable 2.1.1
         
     | 
| 
       39 
43 
     | 
    
         
             
            - more type checking changes
         
     | 
| 
       40 
44 
     | 
    
         
             
            - fixed issue with unicode normalization
         
     | 
| 
       41 
45 
     | 
    
         
             
            - added method to find template defaults
         
     | 
| 
       42 
46 
     | 
    
         
             
            - symbolic keys are now allowed in template mappings
         
     | 
| 
       43 
47 
     | 
    
         
             
            - numeric values and symbolic values are now allowed in template mappings
         
     | 
| 
       44 
48 
     | 
    
         | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
      
 49 
     | 
    
         
            +
            # Addressable 2.1.0
         
     | 
| 
       46 
50 
     | 
    
         
             
            - refactored URI template support out into its own class
         
     | 
| 
       47 
51 
     | 
    
         
             
            - removed extract method due to being useless and unreliable
         
     | 
| 
       48 
52 
     | 
    
         
             
            - removed Addressable::URI.expand_template
         
     | 
| 
         @@ -56,15 +60,15 @@ 
     | 
|
| 
       56 
60 
     | 
    
         
             
            - worked around issue with freezing URIs
         
     | 
| 
       57 
61 
     | 
    
         
             
            - improved specs
         
     | 
| 
       58 
62 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
      
 63 
     | 
    
         
            +
            # Addressable 2.0.2
         
     | 
| 
       60 
64 
     | 
    
         
             
            - fixed issue with URI template expansion
         
     | 
| 
       61 
65 
     | 
    
         
             
            - fixed issue with percent escaping characters 0-15
         
     | 
| 
       62 
66 
     | 
    
         | 
| 
       63 
     | 
    
         
            -
             
     | 
| 
      
 67 
     | 
    
         
            +
            # Addressable 2.0.1
         
     | 
| 
       64 
68 
     | 
    
         
             
            - fixed issue with query string assignment
         
     | 
| 
       65 
69 
     | 
    
         
             
            - fixed issue with improperly encoded components
         
     | 
| 
       66 
70 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
      
 71 
     | 
    
         
            +
            # Addressable 2.0.0
         
     | 
| 
       68 
72 
     | 
    
         
             
            - the initialize method now takes an options hash as its only parameter
         
     | 
| 
       69 
73 
     | 
    
         
             
            - added query_values method to URI class
         
     | 
| 
       70 
74 
     | 
    
         
             
            - completely replaced IDNA implementation with pure Ruby
         
     | 
| 
         @@ -79,20 +83,20 @@ 
     | 
|
| 
       79 
83 
     | 
    
         
             
            - updated URI Template code to match v 03 of the draft spec
         
     | 
| 
       80 
84 
     | 
    
         
             
            - added a bunch of new specifications
         
     | 
| 
       81 
85 
     | 
    
         | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
      
 86 
     | 
    
         
            +
            # Addressable 1.0.4
         
     | 
| 
       83 
87 
     | 
    
         
             
            - switched to using RSpec's pending system for specs that rely on IDN
         
     | 
| 
       84 
88 
     | 
    
         
             
            - fixed issue with creating URIs with paths that are not prefixed with '/'
         
     | 
| 
       85 
89 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
      
 90 
     | 
    
         
            +
            # Addressable 1.0.3
         
     | 
| 
       87 
91 
     | 
    
         
             
            - implemented a hash method
         
     | 
| 
       88 
92 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
      
 93 
     | 
    
         
            +
            # Addressable 1.0.2
         
     | 
| 
       90 
94 
     | 
    
         
             
            - fixed minor bug with the extract_mapping method
         
     | 
| 
       91 
95 
     | 
    
         | 
| 
       92 
     | 
    
         
            -
             
     | 
| 
      
 96 
     | 
    
         
            +
            # Addressable 1.0.1
         
     | 
| 
       93 
97 
     | 
    
         
             
            - fixed minor bug with the extract_mapping method
         
     | 
| 
       94 
98 
     | 
    
         | 
| 
       95 
     | 
    
         
            -
             
     | 
| 
      
 99 
     | 
    
         
            +
            # Addressable 1.0.0
         
     | 
| 
       96 
100 
     | 
    
         
             
            - heuristic parse method added
         
     | 
| 
       97 
101 
     | 
    
         
             
            - parsing is slightly more strict
         
     | 
| 
       98 
102 
     | 
    
         
             
            - replaced to_h with to_hash
         
     | 
| 
         @@ -101,16 +105,16 @@ 
     | 
|
| 
       101 
105 
     | 
    
         
             
            - improved heckle rake task
         
     | 
| 
       102 
106 
     | 
    
         
             
            - no surviving heckle mutations
         
     | 
| 
       103 
107 
     | 
    
         | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
      
 108 
     | 
    
         
            +
            # Addressable 0.1.2
         
     | 
| 
       105 
109 
     | 
    
         
             
            - improved normalization
         
     | 
| 
       106 
110 
     | 
    
         
             
            - fixed bug in joining algorithm
         
     | 
| 
       107 
111 
     | 
    
         
             
            - updated specifications
         
     | 
| 
       108 
112 
     | 
    
         | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
      
 113 
     | 
    
         
            +
            # Addressable 0.1.1
         
     | 
| 
       110 
114 
     | 
    
         
             
            - updated documentation
         
     | 
| 
       111 
115 
     | 
    
         
             
            - added URI Template variable extraction
         
     | 
| 
       112 
116 
     | 
    
         | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
      
 117 
     | 
    
         
            +
            # Addressable 0.1.0
         
     | 
| 
       114 
118 
     | 
    
         
             
            - initial release
         
     | 
| 
       115 
119 
     | 
    
         
             
            - implementation based on RFC 3986, 3987
         
     | 
| 
       116 
120 
     | 
    
         
             
            - support for IRIs via libidn
         
     | 
    
        data/lib/addressable/template.rb
    CHANGED
    
    | 
         @@ -931,7 +931,7 @@ module Addressable 
     | 
|
| 
       931 
931 
     | 
    
         
             
                  values.pop if values[-1] == ""
         
     | 
| 
       932 
932 
     | 
    
         | 
| 
       933 
933 
     | 
    
         
             
                  if processor && processor.respond_to?(:restore)
         
     | 
| 
       934 
     | 
    
         
            -
                    values.map! { | 
     | 
| 
      
 934 
     | 
    
         
            +
                    values.map! { |val| processor.restore(variables.first, val) }
         
     | 
| 
       935 
935 
     | 
    
         
             
                  end
         
     | 
| 
       936 
936 
     | 
    
         
             
                  values = values.first if values.size == 1
         
     | 
| 
       937 
937 
     | 
    
         
             
                  if mapping[variables.first] == nil || mapping[variables.first] == values
         
     | 
| 
         @@ -965,7 +965,7 @@ module Addressable 
     | 
|
| 
       965 
965 
     | 
    
         
             
                  values = value.split(argument, -1)
         
     | 
| 
       966 
966 
     | 
    
         
             
                  values.pop if values[-1] == ""
         
     | 
| 
       967 
967 
     | 
    
         
             
                  if processor && processor.respond_to?(:restore)
         
     | 
| 
       968 
     | 
    
         
            -
                    values.map! { | 
     | 
| 
      
 968 
     | 
    
         
            +
                    values.map! { |val| processor.restore(variables.first, val) }
         
     | 
| 
       969 
969 
     | 
    
         
             
                  end
         
     | 
| 
       970 
970 
     | 
    
         
             
                  values = values.first if values.size == 1
         
     | 
| 
       971 
971 
     | 
    
         
             
                  if mapping[variables.first] == nil || mapping[variables.first] == values
         
     | 
| 
         @@ -1034,7 +1034,7 @@ module Addressable 
     | 
|
| 
       1034 
1034 
     | 
    
         
             
                  values = value.split(argument, -1)
         
     | 
| 
       1035 
1035 
     | 
    
         
             
                  values.pop if values[-1] == ""
         
     | 
| 
       1036 
1036 
     | 
    
         
             
                  if processor && processor.respond_to?(:restore)
         
     | 
| 
       1037 
     | 
    
         
            -
                    values.map! { | 
     | 
| 
      
 1037 
     | 
    
         
            +
                    values.map! { |val| processor.restore(variables.first, val) }
         
     | 
| 
       1038 
1038 
     | 
    
         
             
                  end
         
     | 
| 
       1039 
1039 
     | 
    
         
             
                  if mapping[variables.first] == nil || mapping[variables.first] == values
         
     | 
| 
       1040 
1040 
     | 
    
         
             
                    mapping[variables.first] = values
         
     | 
    
        data/lib/addressable/uri.rb
    CHANGED
    
    | 
         @@ -127,7 +127,7 @@ module Addressable 
     | 
|
| 
       127 
127 
     | 
    
         
             
                    port = nil
         
     | 
| 
       128 
128 
     | 
    
         
             
                  end
         
     | 
| 
       129 
129 
     | 
    
         | 
| 
       130 
     | 
    
         
            -
                  return  
     | 
| 
      
 130 
     | 
    
         
            +
                  return new(
         
     | 
| 
       131 
131 
     | 
    
         
             
                    :scheme => scheme,
         
     | 
| 
       132 
132 
     | 
    
         
             
                    :user => user,
         
     | 
| 
       133 
133 
     | 
    
         
             
                    :password => password,
         
     | 
| 
         @@ -325,7 +325,11 @@ module Addressable 
     | 
|
| 
       325 
325 
     | 
    
         
             
                  return nil if component.nil?
         
     | 
| 
       326 
326 
     | 
    
         | 
| 
       327 
327 
     | 
    
         
             
                  begin
         
     | 
| 
       328 
     | 
    
         
            -
                    component  
     | 
| 
      
 328 
     | 
    
         
            +
                    if component.kind_of?(Symbol) || component.kind_of?(Numeric)
         
     | 
| 
      
 329 
     | 
    
         
            +
                      component = component.to_s
         
     | 
| 
      
 330 
     | 
    
         
            +
                    else
         
     | 
| 
      
 331 
     | 
    
         
            +
                      component = component.to_str
         
     | 
| 
      
 332 
     | 
    
         
            +
                    end
         
     | 
| 
       329 
333 
     | 
    
         
             
                  rescue TypeError, NoMethodError
         
     | 
| 
       330 
334 
     | 
    
         
             
                    raise TypeError, "Can't convert #{component.class} into String."
         
     | 
| 
       331 
335 
     | 
    
         
             
                  end if !component.is_a? String
         
     | 
| 
         @@ -715,6 +719,7 @@ module Addressable 
     | 
|
| 
       715 
719 
     | 
    
         
             
                    self.authority = options[:authority] if options[:authority]
         
     | 
| 
       716 
720 
     | 
    
         
             
                    self.path = options[:path] if options[:path]
         
     | 
| 
       717 
721 
     | 
    
         
             
                    self.query = options[:query] if options[:query]
         
     | 
| 
      
 722 
     | 
    
         
            +
                    self.query_values = options[:query_values] if options[:query_values]
         
     | 
| 
       718 
723 
     | 
    
         
             
                    self.fragment = options[:fragment] if options[:fragment]
         
     | 
| 
       719 
724 
     | 
    
         
             
                  end
         
     | 
| 
       720 
725 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1015,6 +1020,14 @@ module Addressable 
     | 
|
| 
       1015 
1020 
     | 
    
         
             
                  validate()
         
     | 
| 
       1016 
1021 
     | 
    
         
             
                end
         
     | 
| 
       1017 
1022 
     | 
    
         | 
| 
      
 1023 
     | 
    
         
            +
                ##
         
     | 
| 
      
 1024 
     | 
    
         
            +
                # @see Addressable::URI#host
         
     | 
| 
      
 1025 
     | 
    
         
            +
                alias_method :hostname, :host
         
     | 
| 
      
 1026 
     | 
    
         
            +
             
     | 
| 
      
 1027 
     | 
    
         
            +
                ##
         
     | 
| 
      
 1028 
     | 
    
         
            +
                # @see Addressable::URI#host=
         
     | 
| 
      
 1029 
     | 
    
         
            +
                alias_method :hostname=, :host=
         
     | 
| 
      
 1030 
     | 
    
         
            +
             
     | 
| 
       1018 
1031 
     | 
    
         
             
                ##
         
     | 
| 
       1019 
1032 
     | 
    
         
             
                # The authority component for this URI.
         
     | 
| 
       1020 
1033 
     | 
    
         
             
                # Combines the user, password, host, and port components.
         
     | 
| 
         @@ -1415,7 +1428,7 @@ module Addressable 
     | 
|
| 
       1415 
1428 
     | 
    
         
             
                      end
         
     | 
| 
       1416 
1429 
     | 
    
         
             
                    end
         
     | 
| 
       1417 
1430 
     | 
    
         
             
                    if hash != {} && hash.keys.all? { |key| key =~ /^\d+$/ }
         
     | 
| 
       1418 
     | 
    
         
            -
                      hash.sort.inject([]) do |accu, ( 
     | 
| 
      
 1431 
     | 
    
         
            +
                      hash.sort.inject([]) do |accu, (_, value)|
         
     | 
| 
       1419 
1432 
     | 
    
         
             
                        accu << value; accu
         
     | 
| 
       1420 
1433 
     | 
    
         
             
                      end
         
     | 
| 
       1421 
1434 
     | 
    
         
             
                    else
         
     | 
| 
         @@ -1497,39 +1510,55 @@ module Addressable 
     | 
|
| 
       1497 
1510 
     | 
    
         
             
                    # Only to be used for non-Array inputs. Arrays should preserve order.
         
     | 
| 
       1498 
1511 
     | 
    
         
             
                    new_query_values.sort!
         
     | 
| 
       1499 
1512 
     | 
    
         
             
                  end
         
     | 
| 
       1500 
     | 
    
         
            -
                  # new_query_values have form [['key1', 'value1'], ['key2', 'value2']]
         
     | 
| 
       1501 
1513 
     | 
    
         | 
| 
       1502 
     | 
    
         
            -
                   
     | 
| 
       1503 
     | 
    
         
            -
                   
     | 
| 
       1504 
     | 
    
         
            -
                   
     | 
| 
       1505 
     | 
    
         
            -
                   
     | 
| 
       1506 
     | 
    
         
            -
             
     | 
| 
       1507 
     | 
    
         
            -
             
     | 
| 
       1508 
     | 
    
         
            -
                   
     | 
| 
       1509 
     | 
    
         
            -
                   
     | 
| 
       1510 
     | 
    
         
            -
             
     | 
| 
       1511 
     | 
    
         
            -
             
     | 
| 
       1512 
     | 
    
         
            -
                     
     | 
| 
       1513 
     | 
    
         
            -
                       
     | 
| 
       1514 
     | 
    
         
            -
                         
     | 
| 
       1515 
     | 
    
         
            -
             
     | 
| 
       1516 
     | 
    
         
            -
             
     | 
| 
      
 1514 
     | 
    
         
            +
                  ##
         
     | 
| 
      
 1515 
     | 
    
         
            +
                  # Joins and converts parent and value into a properly encoded and
         
     | 
| 
      
 1516 
     | 
    
         
            +
                  # ordered URL query.
         
     | 
| 
      
 1517 
     | 
    
         
            +
                  #
         
     | 
| 
      
 1518 
     | 
    
         
            +
                  # @private
         
     | 
| 
      
 1519 
     | 
    
         
            +
                  # @param [String] parent an URI encoded component.
         
     | 
| 
      
 1520 
     | 
    
         
            +
                  # @param [Array, Hash, Symbol, #to_str] value
         
     | 
| 
      
 1521 
     | 
    
         
            +
                  #
         
     | 
| 
      
 1522 
     | 
    
         
            +
                  # @return [String] a properly escaped and ordered URL query.
         
     | 
| 
      
 1523 
     | 
    
         
            +
                  to_query = lambda do |parent, value|
         
     | 
| 
      
 1524 
     | 
    
         
            +
                    if value.is_a?(Hash)
         
     | 
| 
      
 1525 
     | 
    
         
            +
                      value = value.map do |key, val|
         
     | 
| 
      
 1526 
     | 
    
         
            +
                        [
         
     | 
| 
      
 1527 
     | 
    
         
            +
                          URI.encode_component(key, CharacterClasses::UNRESERVED),
         
     | 
| 
      
 1528 
     | 
    
         
            +
                          val
         
     | 
| 
      
 1529 
     | 
    
         
            +
                        ]
         
     | 
| 
      
 1530 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1531 
     | 
    
         
            +
                      value.sort!
         
     | 
| 
      
 1532 
     | 
    
         
            +
                      buffer = ""
         
     | 
| 
      
 1533 
     | 
    
         
            +
                      value.each do |key, val|
         
     | 
| 
      
 1534 
     | 
    
         
            +
                        new_parent = "#{parent}[#{key}]"
         
     | 
| 
      
 1535 
     | 
    
         
            +
                        buffer << "#{to_query.call(new_parent, val)}&"
         
     | 
| 
      
 1536 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1537 
     | 
    
         
            +
                      return buffer.chop
         
     | 
| 
      
 1538 
     | 
    
         
            +
                    elsif value.is_a?(Array)
         
     | 
| 
      
 1539 
     | 
    
         
            +
                      buffer = ""
         
     | 
| 
      
 1540 
     | 
    
         
            +
                      value.each_with_index do |val, i|
         
     | 
| 
      
 1541 
     | 
    
         
            +
                        new_parent = "#{parent}[#{i}]"
         
     | 
| 
      
 1542 
     | 
    
         
            +
                        buffer << "#{to_query.call(new_parent, val)}&"
         
     | 
| 
      
 1543 
     | 
    
         
            +
                      end
         
     | 
| 
      
 1544 
     | 
    
         
            +
                      return buffer.chop
         
     | 
| 
       1517 
1545 
     | 
    
         
             
                    elsif value == true
         
     | 
| 
       1518 
     | 
    
         
            -
                       
     | 
| 
      
 1546 
     | 
    
         
            +
                      return parent
         
     | 
| 
       1519 
1547 
     | 
    
         
             
                    else
         
     | 
| 
       1520 
     | 
    
         
            -
                       
     | 
| 
      
 1548 
     | 
    
         
            +
                      encoded_value = URI.encode_component(
         
     | 
| 
      
 1549 
     | 
    
         
            +
                        value, CharacterClasses::UNRESERVED
         
     | 
| 
      
 1550 
     | 
    
         
            +
                      )
         
     | 
| 
      
 1551 
     | 
    
         
            +
                      return "#{parent}=#{encoded_value}"
         
     | 
| 
       1521 
1552 
     | 
    
         
             
                    end
         
     | 
| 
       1522 
1553 
     | 
    
         
             
                  end
         
     | 
| 
       1523 
     | 
    
         
            -
             
     | 
| 
       1524 
     | 
    
         
            -
             
     | 
| 
       1525 
     | 
    
         
            -
             
     | 
| 
       1526 
     | 
    
         
            -
             
     | 
| 
       1527 
     | 
    
         
            -
             
     | 
| 
       1528 
     | 
    
         
            -
             
     | 
| 
       1529 
     | 
    
         
            -
             
     | 
| 
       1530 
     | 
    
         
            -
             
     | 
| 
       1531 
     | 
    
         
            -
                      end
         
     | 
| 
       1532 
     | 
    
         
            -
                    end
         
     | 
| 
      
 1554 
     | 
    
         
            +
             
     | 
| 
      
 1555 
     | 
    
         
            +
                  # new_query_values have form [['key1', 'value1'], ['key2', 'value2']]
         
     | 
| 
      
 1556 
     | 
    
         
            +
                  buffer = ""
         
     | 
| 
      
 1557 
     | 
    
         
            +
                  new_query_values.each do |parent, value|
         
     | 
| 
      
 1558 
     | 
    
         
            +
                    encoded_parent = URI.encode_component(
         
     | 
| 
      
 1559 
     | 
    
         
            +
                      parent, CharacterClasses::UNRESERVED
         
     | 
| 
      
 1560 
     | 
    
         
            +
                    )
         
     | 
| 
      
 1561 
     | 
    
         
            +
                    buffer << "#{to_query.call(encoded_parent, value)}&"
         
     | 
| 
       1533 
1562 
     | 
    
         
             
                  end
         
     | 
| 
       1534 
1563 
     | 
    
         
             
                  self.query = buffer.chop
         
     | 
| 
       1535 
1564 
     | 
    
         
             
                end
         
     | 
| 
         @@ -2182,7 +2211,7 @@ module Addressable 
     | 
|
| 
       2182 
2211 
     | 
    
         
             
                    parent = normalized_path.match(NPATH2)
         
     | 
| 
       2183 
2212 
     | 
    
         
             
                    if parent && ((parent[1] != PARENT1 && parent[1] != PARENT2) \
         
     | 
| 
       2184 
2213 
     | 
    
         
             
                                  || (parent[2] != PARENT1 && parent[2] != PARENT2))
         
     | 
| 
       2185 
     | 
    
         
            -
                      mod ||= normalized_path.gsub!(/\/#{parent[1]}\/\.\.\/|(\/#{parent[2]}\/\.\.$)/, SLASH)
         
     | 
| 
      
 2214 
     | 
    
         
            +
                      mod ||= normalized_path.gsub!(/\/#{Regexp.escape(parent[1].to_s)}\/\.\.\/|(\/#{Regexp.escape(parent[2].to_s)}\/\.\.$)/, SLASH)
         
     | 
| 
       2186 
2215 
     | 
    
         
             
                    end
         
     | 
| 
       2187 
2216 
     | 
    
         | 
| 
       2188 
2217 
     | 
    
         
             
                    mod ||= normalized_path.gsub!(NPATH3, EMPTYSTR)
         
     | 
    
        data/lib/addressable/version.rb
    CHANGED
    
    
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # coding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Copyright (C) 2006-2011 Bob Aman
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            #    Licensed under the Apache License, Version 2.0 (the "License");
         
     | 
| 
      
 5 
     | 
    
         
            +
            #    you may not use this file except in compliance with the License.
         
     | 
| 
      
 6 
     | 
    
         
            +
            #    You may obtain a copy of the License at
         
     | 
| 
      
 7 
     | 
    
         
            +
            #
         
     | 
| 
      
 8 
     | 
    
         
            +
            #        http://www.apache.org/licenses/LICENSE-2.0
         
     | 
| 
      
 9 
     | 
    
         
            +
            #
         
     | 
| 
      
 10 
     | 
    
         
            +
            #    Unless required by applicable law or agreed to in writing, software
         
     | 
| 
      
 11 
     | 
    
         
            +
            #    distributed under the License is distributed on an "AS IS" BASIS,
         
     | 
| 
      
 12 
     | 
    
         
            +
            #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
         
     | 
| 
      
 13 
     | 
    
         
            +
            #    See the License for the specific language governing permissions and
         
     | 
| 
      
 14 
     | 
    
         
            +
            #    limitations under the License.
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            require "addressable/uri"
         
     | 
| 
      
 18 
     | 
    
         
            +
            require "net/http"
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            describe Net::HTTP do
         
     | 
| 
      
 21 
     | 
    
         
            +
              it "should be compatible with Addressable" do
         
     | 
| 
      
 22 
     | 
    
         
            +
                response_body =
         
     | 
| 
      
 23 
     | 
    
         
            +
                  Net::HTTP.get(Addressable::URI.parse('http://www.google.com/'))
         
     | 
| 
      
 24 
     | 
    
         
            +
                response_body.should_not be_nil
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1013,11 +1013,11 @@ describe Addressable::URI, "when parsed from " + 
     | 
|
| 
       1013 
1013 
     | 
    
         
             
              end
         
     | 
| 
       1014 
1014 
     | 
    
         | 
| 
       1015 
1015 
     | 
    
         
             
              it "should have the correct password after assignment" do
         
     | 
| 
       1016 
     | 
    
         
            -
                @uri.password = "secret@123!"
         
     | 
| 
       1017 
     | 
    
         
            -
                @uri.password.should == "secret@123!"
         
     | 
| 
       1018 
     | 
    
         
            -
                @uri.normalized_password.should == " 
     | 
| 
      
 1016 
     | 
    
         
            +
                @uri.password = "#secret@123!"
         
     | 
| 
      
 1017 
     | 
    
         
            +
                @uri.password.should == "#secret@123!"
         
     | 
| 
      
 1018 
     | 
    
         
            +
                @uri.normalized_password.should == "%23secret%40123%21"
         
     | 
| 
       1019 
1019 
     | 
    
         
             
                @uri.user.should == ""
         
     | 
| 
       1020 
     | 
    
         
            -
                @uri.normalize.to_s.should == "http 
     | 
| 
      
 1020 
     | 
    
         
            +
                @uri.normalize.to_s.should == "http://:%23secret%40123%21@example.com/"
         
     | 
| 
       1021 
1021 
     | 
    
         
             
                @uri.omit(:password).to_s.should == "http://example.com"
         
     | 
| 
       1022 
1022 
     | 
    
         
             
              end
         
     | 
| 
       1023 
1023 
     | 
    
         | 
| 
         @@ -1844,6 +1844,82 @@ describe Addressable::URI, "when parsed from " + 
     | 
|
| 
       1844 
1844 
     | 
    
         
             
              end
         
     | 
| 
       1845 
1845 
     | 
    
         
             
            end
         
     | 
| 
       1846 
1846 
     | 
    
         | 
| 
      
 1847 
     | 
    
         
            +
            describe Addressable::URI, "when parsed from " +
         
     | 
| 
      
 1848 
     | 
    
         
            +
                "'http://example.com/path(/..'" do
         
     | 
| 
      
 1849 
     | 
    
         
            +
              before do
         
     | 
| 
      
 1850 
     | 
    
         
            +
                @uri = Addressable::URI.parse("http://example.com/path(/..")
         
     | 
| 
      
 1851 
     | 
    
         
            +
              end
         
     | 
| 
      
 1852 
     | 
    
         
            +
             
     | 
| 
      
 1853 
     | 
    
         
            +
              it "should have the correct port" do
         
     | 
| 
      
 1854 
     | 
    
         
            +
                @uri.inferred_port.should == 80
         
     | 
| 
      
 1855 
     | 
    
         
            +
              end
         
     | 
| 
      
 1856 
     | 
    
         
            +
             
     | 
| 
      
 1857 
     | 
    
         
            +
              it "should not be considered to be in normal form" do
         
     | 
| 
      
 1858 
     | 
    
         
            +
                @uri.normalize.should_not be_eql(@uri)
         
     | 
| 
      
 1859 
     | 
    
         
            +
              end
         
     | 
| 
      
 1860 
     | 
    
         
            +
             
     | 
| 
      
 1861 
     | 
    
         
            +
              it "should normalize to 'http://example.com/'" do
         
     | 
| 
      
 1862 
     | 
    
         
            +
                @uri.normalize.should === "http://example.com/"
         
     | 
| 
      
 1863 
     | 
    
         
            +
              end
         
     | 
| 
      
 1864 
     | 
    
         
            +
            end
         
     | 
| 
      
 1865 
     | 
    
         
            +
             
     | 
| 
      
 1866 
     | 
    
         
            +
            describe Addressable::URI, "when parsed from " +
         
     | 
| 
      
 1867 
     | 
    
         
            +
                "'http://example.com/(path)/..'" do
         
     | 
| 
      
 1868 
     | 
    
         
            +
              before do
         
     | 
| 
      
 1869 
     | 
    
         
            +
                @uri = Addressable::URI.parse("http://example.com/(path)/..")
         
     | 
| 
      
 1870 
     | 
    
         
            +
              end
         
     | 
| 
      
 1871 
     | 
    
         
            +
             
     | 
| 
      
 1872 
     | 
    
         
            +
              it "should have the correct port" do
         
     | 
| 
      
 1873 
     | 
    
         
            +
                @uri.inferred_port.should == 80
         
     | 
| 
      
 1874 
     | 
    
         
            +
              end
         
     | 
| 
      
 1875 
     | 
    
         
            +
             
     | 
| 
      
 1876 
     | 
    
         
            +
              it "should not be considered to be in normal form" do
         
     | 
| 
      
 1877 
     | 
    
         
            +
                @uri.normalize.should_not be_eql(@uri)
         
     | 
| 
      
 1878 
     | 
    
         
            +
              end
         
     | 
| 
      
 1879 
     | 
    
         
            +
             
     | 
| 
      
 1880 
     | 
    
         
            +
              it "should normalize to 'http://example.com/'" do
         
     | 
| 
      
 1881 
     | 
    
         
            +
                @uri.normalize.should === "http://example.com/"
         
     | 
| 
      
 1882 
     | 
    
         
            +
              end
         
     | 
| 
      
 1883 
     | 
    
         
            +
            end
         
     | 
| 
      
 1884 
     | 
    
         
            +
             
     | 
| 
      
 1885 
     | 
    
         
            +
            describe Addressable::URI, "when parsed from " +
         
     | 
| 
      
 1886 
     | 
    
         
            +
                "'http://example.com/path(/../'" do
         
     | 
| 
      
 1887 
     | 
    
         
            +
              before do
         
     | 
| 
      
 1888 
     | 
    
         
            +
                @uri = Addressable::URI.parse("http://example.com/path(/../")
         
     | 
| 
      
 1889 
     | 
    
         
            +
              end
         
     | 
| 
      
 1890 
     | 
    
         
            +
             
     | 
| 
      
 1891 
     | 
    
         
            +
              it "should have the correct port" do
         
     | 
| 
      
 1892 
     | 
    
         
            +
                @uri.inferred_port.should == 80
         
     | 
| 
      
 1893 
     | 
    
         
            +
              end
         
     | 
| 
      
 1894 
     | 
    
         
            +
             
     | 
| 
      
 1895 
     | 
    
         
            +
              it "should not be considered to be in normal form" do
         
     | 
| 
      
 1896 
     | 
    
         
            +
                @uri.normalize.should_not be_eql(@uri)
         
     | 
| 
      
 1897 
     | 
    
         
            +
              end
         
     | 
| 
      
 1898 
     | 
    
         
            +
             
     | 
| 
      
 1899 
     | 
    
         
            +
              it "should normalize to 'http://example.com/'" do
         
     | 
| 
      
 1900 
     | 
    
         
            +
                @uri.normalize.should === "http://example.com/"
         
     | 
| 
      
 1901 
     | 
    
         
            +
              end
         
     | 
| 
      
 1902 
     | 
    
         
            +
            end
         
     | 
| 
      
 1903 
     | 
    
         
            +
             
     | 
| 
      
 1904 
     | 
    
         
            +
            describe Addressable::URI, "when parsed from " +
         
     | 
| 
      
 1905 
     | 
    
         
            +
                "'http://example.com/(path)/../'" do
         
     | 
| 
      
 1906 
     | 
    
         
            +
              before do
         
     | 
| 
      
 1907 
     | 
    
         
            +
                @uri = Addressable::URI.parse("http://example.com/(path)/../")
         
     | 
| 
      
 1908 
     | 
    
         
            +
              end
         
     | 
| 
      
 1909 
     | 
    
         
            +
             
     | 
| 
      
 1910 
     | 
    
         
            +
              it "should have the correct port" do
         
     | 
| 
      
 1911 
     | 
    
         
            +
                @uri.inferred_port.should == 80
         
     | 
| 
      
 1912 
     | 
    
         
            +
              end
         
     | 
| 
      
 1913 
     | 
    
         
            +
             
     | 
| 
      
 1914 
     | 
    
         
            +
              it "should not be considered to be in normal form" do
         
     | 
| 
      
 1915 
     | 
    
         
            +
                @uri.normalize.should_not be_eql(@uri)
         
     | 
| 
      
 1916 
     | 
    
         
            +
              end
         
     | 
| 
      
 1917 
     | 
    
         
            +
             
     | 
| 
      
 1918 
     | 
    
         
            +
              it "should normalize to 'http://example.com/'" do
         
     | 
| 
      
 1919 
     | 
    
         
            +
                @uri.normalize.should === "http://example.com/"
         
     | 
| 
      
 1920 
     | 
    
         
            +
              end
         
     | 
| 
      
 1921 
     | 
    
         
            +
            end
         
     | 
| 
      
 1922 
     | 
    
         
            +
             
     | 
| 
       1847 
1923 
     | 
    
         
             
            describe Addressable::URI, "when parsed from " +
         
     | 
| 
       1848 
1924 
     | 
    
         
             
                "'http://example.com/path/to/resource/'" do
         
     | 
| 
       1849 
1925 
     | 
    
         
             
              before do
         
     | 
| 
         @@ -2777,7 +2853,8 @@ describe Addressable::URI, "when parsed from " + 
     | 
|
| 
       2777 
2853 
     | 
    
         
             
                @uri.query_values.should == { 'q' => 'Q&A' }
         
     | 
| 
       2778 
2854 
     | 
    
         
             
              end
         
     | 
| 
       2779 
2855 
     | 
    
         | 
| 
       2780 
     | 
    
         
            -
              it "should normalize to the original uri  
     | 
| 
      
 2856 
     | 
    
         
            +
              it "should normalize to the original uri " +
         
     | 
| 
      
 2857 
     | 
    
         
            +
                  "(with the ampersand properly percent-encoded)" do
         
     | 
| 
       2781 
2858 
     | 
    
         
             
                @uri.normalize.to_s.should == "http://example.com/search?q=Q%26A"
         
     | 
| 
       2782 
2859 
     | 
    
         
             
              end
         
     | 
| 
       2783 
2860 
     | 
    
         
             
            end
         
     | 
| 
         @@ -4422,25 +4499,25 @@ end 
     | 
|
| 
       4422 
4499 
     | 
    
         
             
            describe Addressable::URI, "when encoding a bogus object" do
         
     | 
| 
       4423 
4500 
     | 
    
         
             
              it "should raise a TypeError" do
         
     | 
| 
       4424 
4501 
     | 
    
         
             
                (lambda do
         
     | 
| 
       4425 
     | 
    
         
            -
                  Addressable::URI.encode( 
     | 
| 
      
 4502 
     | 
    
         
            +
                  Addressable::URI.encode(Object.new)
         
     | 
| 
       4426 
4503 
     | 
    
         
             
                end).should raise_error(TypeError)
         
     | 
| 
       4427 
4504 
     | 
    
         
             
              end
         
     | 
| 
       4428 
4505 
     | 
    
         | 
| 
       4429 
4506 
     | 
    
         
             
              it "should raise a TypeError" do
         
     | 
| 
       4430 
4507 
     | 
    
         
             
                (lambda do
         
     | 
| 
       4431 
     | 
    
         
            -
                  Addressable::URI.normalized_encode( 
     | 
| 
      
 4508 
     | 
    
         
            +
                  Addressable::URI.normalized_encode(Object.new)
         
     | 
| 
       4432 
4509 
     | 
    
         
             
                end).should raise_error(TypeError)
         
     | 
| 
       4433 
4510 
     | 
    
         
             
              end
         
     | 
| 
       4434 
4511 
     | 
    
         | 
| 
       4435 
4512 
     | 
    
         
             
              it "should raise a TypeError" do
         
     | 
| 
       4436 
4513 
     | 
    
         
             
                (lambda do
         
     | 
| 
       4437 
     | 
    
         
            -
                  Addressable::URI.encode_component("günther",  
     | 
| 
      
 4514 
     | 
    
         
            +
                  Addressable::URI.encode_component("günther", Object.new)
         
     | 
| 
       4438 
4515 
     | 
    
         
             
                end).should raise_error(TypeError)
         
     | 
| 
       4439 
4516 
     | 
    
         
             
              end
         
     | 
| 
       4440 
4517 
     | 
    
         | 
| 
       4441 
4518 
     | 
    
         
             
              it "should raise a TypeError" do
         
     | 
| 
       4442 
4519 
     | 
    
         
             
                (lambda do
         
     | 
| 
       4443 
     | 
    
         
            -
                  Addressable::URI.encode_component( 
     | 
| 
      
 4520 
     | 
    
         
            +
                  Addressable::URI.encode_component(Object.new)
         
     | 
| 
       4444 
4521 
     | 
    
         
             
                end).should raise_error(TypeError)
         
     | 
| 
       4445 
4522 
     | 
    
         
             
              end
         
     | 
| 
       4446 
4523 
     | 
    
         
             
            end
         
     | 
| 
         @@ -4457,7 +4534,9 @@ describe Addressable::URI, "when given the input " + 
     | 
|
| 
       4457 
4534 
     | 
    
         
             
              end
         
     | 
| 
       4458 
4535 
     | 
    
         | 
| 
       4459 
4536 
     | 
    
         
             
              it "should not raise error when frozen" do
         
     | 
| 
       4460 
     | 
    
         
            -
                lambda  
     | 
| 
      
 4537 
     | 
    
         
            +
                (lambda do
         
     | 
| 
      
 4538 
     | 
    
         
            +
                  Addressable::URI.heuristic_parse(@input).freeze.to_s
         
     | 
| 
      
 4539 
     | 
    
         
            +
                end).should_not raise_error
         
     | 
| 
       4461 
4540 
     | 
    
         
             
              end
         
     | 
| 
       4462 
4541 
     | 
    
         
             
            end
         
     | 
| 
       4463 
4542 
     | 
    
         | 
| 
         @@ -4653,8 +4732,19 @@ describe Addressable::URI, "when assigning query values" do 
     | 
|
| 
       4653 
4732 
     | 
    
         
             
                @uri.query.should == "a=a&b[0]=c&b[1]=d&b[2]=e"
         
     | 
| 
       4654 
4733 
     | 
    
         
             
              end
         
     | 
| 
       4655 
4734 
     | 
    
         | 
| 
      
 4735 
     | 
    
         
            +
              it "should correctly assign {'a' => {'b' => [ 'c']}}" do
         
     | 
| 
      
 4736 
     | 
    
         
            +
                @uri.query_values = { 'a' => {'b' => [ 'c'] } }
         
     | 
| 
      
 4737 
     | 
    
         
            +
                @uri.query.should == "a[b][0]=c"
         
     | 
| 
      
 4738 
     | 
    
         
            +
              end
         
     | 
| 
      
 4739 
     | 
    
         
            +
             
     | 
| 
      
 4740 
     | 
    
         
            +
              it "should correctly assign {:b => '2', :a => {:c => '1'}}" do
         
     | 
| 
      
 4741 
     | 
    
         
            +
                @uri.query_values = {:b => '2', :a => { :c => '1' }}
         
     | 
| 
      
 4742 
     | 
    
         
            +
                @uri.query.should == "a[c]=1&b=2"
         
     | 
| 
      
 4743 
     | 
    
         
            +
              end
         
     | 
| 
      
 4744 
     | 
    
         
            +
             
     | 
| 
       4656 
4745 
     | 
    
         
             
              it "should correctly assign " +
         
     | 
| 
       4657 
     | 
    
         
            -
                  "{:a => 'a', :b => [{:c => 'c', :d => 'd'},  
     | 
| 
      
 4746 
     | 
    
         
            +
                  "{:a => 'a', :b => [{:c => 'c', :d => 'd'}, " +
         
     | 
| 
      
 4747 
     | 
    
         
            +
                  "{:e => 'e', :f => 'f'}]}" do
         
     | 
| 
       4658 
4748 
     | 
    
         
             
                @uri.query_values = {
         
     | 
| 
       4659 
4749 
     | 
    
         
             
                  :a => "a", :b => [{:c => "c", :d => "d"}, {:e => "e", :f => "f"}]
         
     | 
| 
       4660 
4750 
     | 
    
         
             
                }
         
     | 
| 
         @@ -4662,7 +4752,8 @@ describe Addressable::URI, "when assigning query values" do 
     | 
|
| 
       4662 
4752 
     | 
    
         
             
              end
         
     | 
| 
       4663 
4753 
     | 
    
         | 
| 
       4664 
4754 
     | 
    
         
             
              it "should correctly assign " +
         
     | 
| 
       4665 
     | 
    
         
            -
                  "{:a => 'a', :b => [{:c => true, :d => 'd'},  
     | 
| 
      
 4755 
     | 
    
         
            +
                  "{:a => 'a', :b => [{:c => true, :d => 'd'}, " +
         
     | 
| 
      
 4756 
     | 
    
         
            +
                  "{:e => 'e', :f => 'f'}]}" do
         
     | 
| 
       4666 
4757 
     | 
    
         
             
                @uri.query_values = {
         
     | 
| 
       4667 
4758 
     | 
    
         
             
                  :a => 'a', :b => [{:c => true, :d => 'd'}, {:e => 'e', :f => 'f'}]
         
     | 
| 
       4668 
4759 
     | 
    
         
             
                }
         
     | 
| 
         @@ -4678,13 +4769,32 @@ describe Addressable::URI, "when assigning query values" do 
     | 
|
| 
       4678 
4769 
     | 
    
         
             
              end
         
     | 
| 
       4679 
4770 
     | 
    
         | 
| 
       4680 
4771 
     | 
    
         
             
              it "should correctly assign " +
         
     | 
| 
       4681 
     | 
    
         
            -
                  "{:a => 'a', :b => {:c => true, :d => 'd'} 
     | 
| 
      
 4772 
     | 
    
         
            +
                  "{:a => 'a', :b => {:c => true, :d => 'd'}}" do
         
     | 
| 
       4682 
4773 
     | 
    
         
             
                @uri.query_values = {
         
     | 
| 
       4683 
4774 
     | 
    
         
             
                  :a => 'a', :b => {:c => true, :d => 'd'}
         
     | 
| 
       4684 
4775 
     | 
    
         
             
                }
         
     | 
| 
       4685 
4776 
     | 
    
         
             
                @uri.query.should == "a=a&b[c]&b[d]=d"
         
     | 
| 
       4686 
4777 
     | 
    
         
             
              end
         
     | 
| 
       4687 
4778 
     | 
    
         | 
| 
      
 4779 
     | 
    
         
            +
              it "should correctly assign {:a => 1, :b => 1.5}" do
         
     | 
| 
      
 4780 
     | 
    
         
            +
                @uri.query_values = { :a => 1, :b => 1.5 }
         
     | 
| 
      
 4781 
     | 
    
         
            +
                @uri.query.should == "a=1&b=1.5"
         
     | 
| 
      
 4782 
     | 
    
         
            +
              end
         
     | 
| 
      
 4783 
     | 
    
         
            +
             
     | 
| 
      
 4784 
     | 
    
         
            +
              it "should correctly assign " +
         
     | 
| 
      
 4785 
     | 
    
         
            +
                  "{:z => 1, :f => [2, {999.1 => [3,'4']}, ['h', 'i']], " +
         
     | 
| 
      
 4786 
     | 
    
         
            +
                  ":a => {:b => ['c', 'd'], :e => true, :y => 0.5}}" do
         
     | 
| 
      
 4787 
     | 
    
         
            +
                @uri.query_values = {
         
     | 
| 
      
 4788 
     | 
    
         
            +
                  :z => 1,
         
     | 
| 
      
 4789 
     | 
    
         
            +
                  :f => [ 2, {999.1 => [3,'4']}, ['h', 'i'] ],
         
     | 
| 
      
 4790 
     | 
    
         
            +
                  :a => { :b => ['c', 'd'], :e => true, :y => 0.5 }
         
     | 
| 
      
 4791 
     | 
    
         
            +
                }
         
     | 
| 
      
 4792 
     | 
    
         
            +
                @uri.query.should == (
         
     | 
| 
      
 4793 
     | 
    
         
            +
                  "a[b][0]=c&a[b][1]=d&a[e]&a[y]=0.5&f[0]=2&" +
         
     | 
| 
      
 4794 
     | 
    
         
            +
                  "f[1][999.1][0]=3&f[1][999.1][1]=4&f[2][0]=h&f[2][1]=i&z=1"
         
     | 
| 
      
 4795 
     | 
    
         
            +
                )
         
     | 
| 
      
 4796 
     | 
    
         
            +
              end
         
     | 
| 
      
 4797 
     | 
    
         
            +
             
     | 
| 
       4688 
4798 
     | 
    
         
             
              it "should correctly assign {}" do
         
     | 
| 
       4689 
4799 
     | 
    
         
             
                @uri.query_values = {}
         
     | 
| 
       4690 
4800 
     | 
    
         
             
                @uri.query.should == ''
         
     | 
    
        data/tasks/gem.rake
    CHANGED
    
    
    
        data/tasks/git.rake
    CHANGED
    
    | 
         @@ -19,10 +19,15 @@ namespace :git do 
     | 
|
| 
       19 
19 
     | 
    
         
             
                  v = ENV["VERSION"] or abort "Must supply VERSION=x.y.z"
         
     | 
| 
       20 
20 
     | 
    
         
             
                  abort "Versions don't match #{v} vs #{PKG_VERSION}" if v != PKG_VERSION
         
     | 
| 
       21 
21 
     | 
    
         | 
| 
      
 22 
     | 
    
         
            +
                  git_status = `git status`
         
     | 
| 
      
 23 
     | 
    
         
            +
                  if git_status !~ /nothing to commit \(working directory clean\)/
         
     | 
| 
      
 24 
     | 
    
         
            +
                    abort "Working directory isn't clean."
         
     | 
| 
      
 25 
     | 
    
         
            +
                  end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       22 
27 
     | 
    
         
             
                  tag = "#{PKG_NAME}-#{PKG_VERSION}"
         
     | 
| 
       23 
28 
     | 
    
         
             
                  msg = "Release #{PKG_NAME}-#{PKG_VERSION}"
         
     | 
| 
       24 
29 
     | 
    
         | 
| 
       25 
     | 
    
         
            -
                  existing_tags = `git tag -l  
     | 
| 
      
 30 
     | 
    
         
            +
                  existing_tags = `git tag -l #{PKG_NAME}-*`.split('\n')
         
     | 
| 
       26 
31 
     | 
    
         
             
                  if existing_tags.include?(tag)
         
     | 
| 
       27 
32 
     | 
    
         
             
                    warn("Tag already exists, deleting...")
         
     | 
| 
       28 
33 
     | 
    
         
             
                    unless system "git tag -d #{tag}"
         
     | 
    
        data/tasks/spec.rake
    CHANGED
    
    | 
         @@ -18,6 +18,13 @@ namespace :spec do 
     | 
|
| 
       18 
18 
     | 
    
         
             
              end
         
     | 
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
              Spec::Rake::SpecTask.new(:normal) do |t|
         
     | 
| 
      
 21 
     | 
    
         
            +
                t.libs = %w[lib spec]
         
     | 
| 
      
 22 
     | 
    
         
            +
                t.spec_files = FileList['spec/**/*_spec.rb'].exclude(/compat/)
         
     | 
| 
      
 23 
     | 
    
         
            +
                t.spec_opts = ['--color', '--format', 'specdoc']
         
     | 
| 
      
 24 
     | 
    
         
            +
                t.rcov = false
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              Spec::Rake::SpecTask.new(:all) do |t|
         
     | 
| 
       21 
28 
     | 
    
         
             
                t.libs = %w[lib spec]
         
     | 
| 
       22 
29 
     | 
    
         
             
                t.spec_files = FileList['spec/**/*_spec.rb']
         
     | 
| 
       23 
30 
     | 
    
         
             
                t.spec_opts = ['--color', '--format', 'specdoc']
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,13 +1,12 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification 
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: addressable
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version 
         
     | 
| 
       4 
     | 
    
         
            -
               
     | 
| 
       5 
     | 
    
         
            -
              prerelease: 
         
     | 
| 
      
 4 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
       6 
5 
     | 
    
         
             
              segments: 
         
     | 
| 
       7 
6 
     | 
    
         
             
              - 2
         
     | 
| 
       8 
7 
     | 
    
         
             
              - 2
         
     | 
| 
       9 
     | 
    
         
            -
              -  
     | 
| 
       10 
     | 
    
         
            -
              version: 2.2. 
     | 
| 
      
 8 
     | 
    
         
            +
              - 7
         
     | 
| 
      
 9 
     | 
    
         
            +
              version: 2.2.7
         
     | 
| 
       11 
10 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       12 
11 
     | 
    
         
             
            authors: 
         
     | 
| 
       13 
12 
     | 
    
         
             
            - Bob Aman
         
     | 
| 
         @@ -15,18 +14,16 @@ autorequire: 
     | 
|
| 
       15 
14 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       16 
15 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       17 
16 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
            date:  
     | 
| 
      
 17 
     | 
    
         
            +
            date: 2012-02-16 00:00:00 +03:00
         
     | 
| 
       19 
18 
     | 
    
         
             
            default_executable: 
         
     | 
| 
       20 
19 
     | 
    
         
             
            dependencies: 
         
     | 
| 
       21 
20 
     | 
    
         
             
            - !ruby/object:Gem::Dependency 
         
     | 
| 
       22 
21 
     | 
    
         
             
              name: rake
         
     | 
| 
       23 
22 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       24 
23 
     | 
    
         
             
              requirement: &id001 !ruby/object:Gem::Requirement 
         
     | 
| 
       25 
     | 
    
         
            -
                none: false
         
     | 
| 
       26 
24 
     | 
    
         
             
                requirements: 
         
     | 
| 
       27 
25 
     | 
    
         
             
                - - ">="
         
     | 
| 
       28 
26 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       29 
     | 
    
         
            -
                    hash: 5
         
     | 
| 
       30 
27 
     | 
    
         
             
                    segments: 
         
     | 
| 
       31 
28 
     | 
    
         
             
                    - 0
         
     | 
| 
       32 
29 
     | 
    
         
             
                    - 7
         
     | 
| 
         @@ -38,11 +35,9 @@ dependencies: 
     | 
|
| 
       38 
35 
     | 
    
         
             
              name: rspec
         
     | 
| 
       39 
36 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       40 
37 
     | 
    
         
             
              requirement: &id002 !ruby/object:Gem::Requirement 
         
     | 
| 
       41 
     | 
    
         
            -
                none: false
         
     | 
| 
       42 
38 
     | 
    
         
             
                requirements: 
         
     | 
| 
       43 
39 
     | 
    
         
             
                - - ">="
         
     | 
| 
       44 
40 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       45 
     | 
    
         
            -
                    hash: 7
         
     | 
| 
       46 
41 
     | 
    
         
             
                    segments: 
         
     | 
| 
       47 
42 
     | 
    
         
             
                    - 1
         
     | 
| 
       48 
43 
     | 
    
         
             
                    - 0
         
     | 
| 
         @@ -54,11 +49,9 @@ dependencies: 
     | 
|
| 
       54 
49 
     | 
    
         
             
              name: launchy
         
     | 
| 
       55 
50 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       56 
51 
     | 
    
         
             
              requirement: &id003 !ruby/object:Gem::Requirement 
         
     | 
| 
       57 
     | 
    
         
            -
                none: false
         
     | 
| 
       58 
52 
     | 
    
         
             
                requirements: 
         
     | 
| 
       59 
53 
     | 
    
         
             
                - - ">="
         
     | 
| 
       60 
54 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       61 
     | 
    
         
            -
                    hash: 23
         
     | 
| 
       62 
55 
     | 
    
         
             
                    segments: 
         
     | 
| 
       63 
56 
     | 
    
         
             
                    - 0
         
     | 
| 
       64 
57 
     | 
    
         
             
                    - 3
         
     | 
| 
         @@ -70,11 +63,9 @@ dependencies: 
     | 
|
| 
       70 
63 
     | 
    
         
             
              name: diff-lcs
         
     | 
| 
       71 
64 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       72 
65 
     | 
    
         
             
              requirement: &id004 !ruby/object:Gem::Requirement 
         
     | 
| 
       73 
     | 
    
         
            -
                none: false
         
     | 
| 
       74 
66 
     | 
    
         
             
                requirements: 
         
     | 
| 
       75 
67 
     | 
    
         
             
                - - ">="
         
     | 
| 
       76 
68 
     | 
    
         
             
                  - !ruby/object:Gem::Version 
         
     | 
| 
       77 
     | 
    
         
            -
                    hash: 23
         
     | 
| 
       78 
69 
     | 
    
         
             
                    segments: 
         
     | 
| 
       79 
70 
     | 
    
         
             
                    - 1
         
     | 
| 
       80 
71 
     | 
    
         
             
                    - 1
         
     | 
| 
         @@ -102,6 +93,7 @@ files: 
     | 
|
| 
       102 
93 
     | 
    
         
             
            - lib/addressable/uri.rb
         
     | 
| 
       103 
94 
     | 
    
         
             
            - lib/addressable/version.rb
         
     | 
| 
       104 
95 
     | 
    
         
             
            - spec/addressable/idna_spec.rb
         
     | 
| 
      
 96 
     | 
    
         
            +
            - spec/addressable/net_http_compat_spec.rb
         
     | 
| 
       105 
97 
     | 
    
         
             
            - spec/addressable/template_spec.rb
         
     | 
| 
       106 
98 
     | 
    
         
             
            - spec/addressable/uri_spec.rb
         
     | 
| 
       107 
99 
     | 
    
         
             
            - tasks/clobber.rake
         
     | 
| 
         @@ -128,27 +120,23 @@ rdoc_options: 
     | 
|
| 
       128 
120 
     | 
    
         
             
            require_paths: 
         
     | 
| 
       129 
121 
     | 
    
         
             
            - lib
         
     | 
| 
       130 
122 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       131 
     | 
    
         
            -
              none: false
         
     | 
| 
       132 
123 
     | 
    
         
             
              requirements: 
         
     | 
| 
       133 
124 
     | 
    
         
             
              - - ">="
         
     | 
| 
       134 
125 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       135 
     | 
    
         
            -
                  hash: 3
         
     | 
| 
       136 
126 
     | 
    
         
             
                  segments: 
         
     | 
| 
       137 
127 
     | 
    
         
             
                  - 0
         
     | 
| 
       138 
128 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       139 
129 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
       140 
     | 
    
         
            -
              none: false
         
     | 
| 
       141 
130 
     | 
    
         
             
              requirements: 
         
     | 
| 
       142 
131 
     | 
    
         
             
              - - ">="
         
     | 
| 
       143 
132 
     | 
    
         
             
                - !ruby/object:Gem::Version 
         
     | 
| 
       144 
     | 
    
         
            -
                  hash: 3
         
     | 
| 
       145 
133 
     | 
    
         
             
                  segments: 
         
     | 
| 
       146 
134 
     | 
    
         
             
                  - 0
         
     | 
| 
       147 
135 
     | 
    
         
             
                  version: "0"
         
     | 
| 
       148 
136 
     | 
    
         
             
            requirements: []
         
     | 
| 
       149 
137 
     | 
    
         | 
| 
       150 
138 
     | 
    
         
             
            rubyforge_project: addressable
         
     | 
| 
       151 
     | 
    
         
            -
            rubygems_version: 1. 
     | 
| 
      
 139 
     | 
    
         
            +
            rubygems_version: 1.3.6
         
     | 
| 
       152 
140 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       153 
141 
     | 
    
         
             
            specification_version: 3
         
     | 
| 
       154 
142 
     | 
    
         
             
            summary: URI Implementation
         
     |