http-protocol 0.13.0 → 0.14.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6a7da4c00bbe6c3eeb8c56f46f4d4e78ff133f360b11396229b620873c33c35b
4
- data.tar.gz: b822849d7f1614eab1a469d446569ac5456a7b3921f2fa2402a89deb2fdc2a88
3
+ metadata.gz: c88f948d7e13dd7114fc7f83b002035a6fa5229b15756fcad9edc92e9ac14ad9
4
+ data.tar.gz: ef513cdd8c0ad42a5ac9cc7e24f37ce2540abe8e4e041ca04322d61de656192c
5
5
  SHA512:
6
- metadata.gz: 9e3856fed9a60a1793b0dbcfc08d860b8e5a1b1d4a12b383cd64bee0775851068a18f56fd6c2c3d3afc5d60dda0810e93e5d45d579c603431196f81b5aef3df2
7
- data.tar.gz: 2fdb86e2258946bf0b92c15358817a56bea6b640f091f11903c1455f7f5fd5fa272d31135818612d661d7c9160eb765e5113b49867c15c1e575f5c0731dd2b8b
6
+ metadata.gz: '0694ce003550f943c96bcbe8a8b9dc5e1bc387f496bf7feb07bc5e7614f43f2bdd3745c6709327e3b073d466cdb33f1fa8cb73259c994c02d986d5afe9663ef3'
7
+ data.tar.gz: d21bb4ab8fdbeacecc4772d5108f7e5ae79878b7ea6b5fc51b15a89eff6f766e6910e7fc72472d2f3b1213f29fb6556f665045a1cfb5510248c6d6cf8eb23e3e
@@ -78,13 +78,11 @@ module HTTP
78
78
  name.scan(/([^\[]+)|(?:\[(.*?)\])/).flatten!.compact!
79
79
  end
80
80
 
81
- def self.assign(name, value, parent)
82
- top, *middle = self.split(name)
83
-
84
- yield(top, middle) if block_given?
81
+ def self.assign(keys, value, parent)
82
+ top, *middle = keys
85
83
 
86
84
  middle.each_with_index do |key, index|
87
- if key.empty?
85
+ if key.nil? or key.empty?
88
86
  parent = (parent[top] ||= Array.new)
89
87
  top = parent.size
90
88
 
@@ -100,15 +98,21 @@ module HTTP
100
98
  parent[top] = value
101
99
  end
102
100
 
103
- def self.decode(string, maximum = 8)
101
+ def self.decode(string, maximum = 8, symbolize_keys: false)
104
102
  parameters = {}
105
103
 
106
- self.scan(string) do |key, value|
107
- self.assign(key, value, parameters) do |top, middle|
108
- if maximum and middle.count > maximum
109
- raise ArgumentError, "Key length exceeded limit!"
110
- end
104
+ self.scan(string) do |name, value|
105
+ keys = self.split(name)
106
+
107
+ if keys.count > maximum
108
+ raise ArgumentError, "Key length exceeded limit!"
111
109
  end
110
+
111
+ if symbolize_keys
112
+ keys.collect!{|key| key.empty? ? nil : key.to_sym}
113
+ end
114
+
115
+ self.assign(keys, value, parameters)
112
116
  end
113
117
 
114
118
  return parameters
@@ -20,6 +20,6 @@
20
20
 
21
21
  module HTTP
22
22
  module Protocol
23
- VERSION = "0.13.0"
23
+ VERSION = "0.14.0"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http-protocol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.0
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-07 00:00:00.000000000 Z
11
+ date: 2019-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http-hpack