uri_template 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +6 -1
- data/README.md +43 -40
- data/lib/uri_template.rb +17 -11
- data/lib/uri_template/colon.rb +17 -11
- data/lib/uri_template/expression.rb +18 -12
- data/lib/uri_template/literal.rb +17 -11
- data/lib/uri_template/rfc6570.rb +18 -12
- data/lib/uri_template/rfc6570/expression.rb +66 -28
- data/lib/uri_template/rfc6570/expression/named.rb +55 -13
- data/lib/uri_template/rfc6570/expression/unnamed.rb +17 -11
- data/lib/uri_template/rfc6570/regex_builder.rb +18 -12
- data/lib/uri_template/token.rb +17 -11
- data/lib/uri_template/utils.rb +18 -11
- data/uri_template.gemspec +6 -4
- metadata +29 -39
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9e795b18afed57cb37be55473035352b72840137
|
4
|
+
data.tar.gz: bc9b6c7926531fa76e6c5d2cbcbade14f5c32832
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 12d4f67c125ae1bb05054765563217ec63438793ea709f554d648f25d1ec30f437fd1854b784023516975c938ebf21263cc271a42c670097e4ba3c46c46f32e4
|
7
|
+
data.tar.gz: 3062ed310d22881fd560d9e8cfcfa7f8bab87c9e72a76adb8f32089d9a04b380f69e5f7b821f6f0799163639351014fa1609344bc840f289c93ff6dc178de7e0
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,9 @@
|
|
1
|
-
# 0.
|
1
|
+
# 0.7.0 - 21.03.2014
|
2
|
+
|
3
|
+
* [CHANGE] Licence is now MIT
|
4
|
+
* [ENHANCEMENT] partial expansion has now more features
|
5
|
+
|
6
|
+
# 0.6.0 - 09.08.2013
|
2
7
|
|
3
8
|
* [FEATURE] partial expansion
|
4
9
|
* [FEATURE] You can now pass variables as an Array to URITemplate#expand ( thanks to @bmaland )
|
data/README.md
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
URITemplate - a uri template library
|
2
|
-
========================
|
1
|
+
# URITemplate - a uri template library
|
3
2
|
|
4
3
|
[![Build Status](https://secure.travis-ci.org/hannesg/uri_template.png)](http://travis-ci.org/hannesg/uri_template)
|
5
4
|
[![Dependency Status](https://gemnasium.com/hannesg/uri_template.png)](https://gemnasium.com/hannesg/uri_template)
|
@@ -10,50 +9,54 @@ With URITemplate you can generate URIs based on simple templates and extract var
|
|
10
9
|
|
11
10
|
From version 0.2.0, it will use escape_utils if available. This will significantly boost uri-escape/unescape performance if more characters need to be escaped ( may be slightly slower in trivial cases. working on that ... ), but does not run everywhere. To enable this, do the following:
|
12
11
|
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
12
|
+
```ruby
|
13
|
+
# escape_utils has to be loaded when uri_templates is loaded
|
14
|
+
gem 'escape_utils'
|
15
|
+
require 'escape_utils'
|
16
|
+
|
17
|
+
gem 'uri_template'
|
18
|
+
require 'uri_template'
|
19
|
+
|
20
|
+
URITemplate::Utils.using_escape_utils? #=> true
|
21
|
+
```
|
22
|
+
|
23
|
+
## Examples
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
require 'uri_template'
|
27
|
+
|
28
|
+
tpl = URITemplate.new('http://{host}{/segments*}/{file}{.extensions*}')
|
29
|
+
|
30
|
+
# This will give: http://www.host.com/path/to/a/file.x.y
|
31
|
+
tpl.expand('host'=>'www.host.com','segments'=>['path','to','a'],'file'=>'file','extensions'=>['x','y'])
|
32
|
+
|
33
|
+
# This will give: { 'host'=>'www.host.com','segments'=>['path','to','a'],'file'=>'file','extensions'=>['x','y']}
|
34
|
+
tpl.extract('http://www.host.com/path/to/a/file.x.y')
|
35
|
+
|
36
|
+
# If you like colon templates more:
|
37
|
+
tpl2 = URITemplate.new(:colon, '/:x/y')
|
38
|
+
|
39
|
+
# This will give: {'x' => 'z'}
|
40
|
+
tpl2.extract('/z/y')
|
41
|
+
|
42
|
+
# This will give a new uri template with just the host expanded:
|
43
|
+
tpl.expand_partial(host: "www.host.com")
|
44
|
+
```
|
45
|
+
|
46
|
+
## RFC 6570 Syntax
|
47
47
|
|
48
48
|
The syntax defined by [RFC 6570]( http://tools.ietf.org/html/rfc6570 ) is pretty straight forward. Basically anything surrounded by curly brackets is interpreted as variable.
|
49
49
|
|
50
|
-
|
50
|
+
```ruby
|
51
|
+
URITemplate.new('{variable}').expand('variable' => 'value') #=> "value"
|
52
|
+
```
|
51
53
|
|
52
54
|
The way variables are inserted can be modified using operators. The operator is the first character between the curly brackets. There are seven operators defined `#`, `+`, `;`, `?`, `&`, `/` and `.`. So if you want to create a form-style query do this:
|
53
55
|
|
54
|
-
|
56
|
+
```ruby
|
57
|
+
URITemplate.new('{?variable}').expand('variable' => 'value') #=> "?variable=value"
|
58
|
+
```
|
55
59
|
|
56
|
-
Benchmarks
|
57
|
-
-----------------------
|
60
|
+
## Benchmarks
|
58
61
|
|
59
62
|
I have assembled one benchmark based on the uritemplate-test examples. You can find them in the "benchmarks" folder. The short result: uri_template is 2-10x faster than addressable on ruby 1.9.3.
|
data/lib/uri_template.rb
CHANGED
@@ -1,19 +1,25 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
17
23
|
|
18
24
|
# A base module for all implementations of a uri template.
|
19
25
|
module URITemplate
|
data/lib/uri_template/colon.rb
CHANGED
@@ -1,19 +1,25 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
17
23
|
|
18
24
|
require 'forwardable'
|
19
25
|
|
@@ -1,19 +1,25 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
17
23
|
|
18
24
|
# A module which all non-literal tokens should include.
|
19
25
|
module URITemplate::Expression
|
@@ -30,4 +36,4 @@ module URITemplate::Expression
|
|
30
36
|
true
|
31
37
|
end
|
32
38
|
|
33
|
-
end
|
39
|
+
end
|
data/lib/uri_template/literal.rb
CHANGED
@@ -1,19 +1,25 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
17
23
|
|
18
24
|
# A module which all literal tokens should include.
|
19
25
|
module URITemplate::Literal
|
data/lib/uri_template/rfc6570.rb
CHANGED
@@ -1,19 +1,25 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
17
23
|
|
18
24
|
require 'strscan'
|
19
25
|
require 'set'
|
@@ -319,7 +325,7 @@ __REGEXP__
|
|
319
325
|
# @method expand_partial(variables = {})
|
320
326
|
# Works like expand but keeps missing variables in place.
|
321
327
|
# @example
|
322
|
-
# URITemplate::RFC6570.new('{foo}').expand_partial('foo'=>'bar') #=> URITemplate::RFC6570.new('bar')
|
328
|
+
# URITemplate::RFC6570.new('{foo}').expand_partial('foo'=>'bar') #=> URITemplate::RFC6570.new('bar{foo}')
|
323
329
|
# URITemplate::RFC6570.new('{undef}').expand_partial() #=> URITemplate::RFC6570.new('{undef}')
|
324
330
|
#
|
325
331
|
# @param variables [Hash,Array]
|
@@ -1,20 +1,25 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
17
|
-
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
18
23
|
require 'uri_template/rfc6570'
|
19
24
|
|
20
25
|
class URITemplate::RFC6570
|
@@ -75,20 +80,33 @@ class URITemplate::RFC6570
|
|
75
80
|
|
76
81
|
def expand_partial( vars )
|
77
82
|
result = []
|
78
|
-
|
83
|
+
follow_up = self.class::FOLLOW_UP
|
84
|
+
var_specs = []
|
79
85
|
@variable_specs.each do | var, expand , max_length |
|
80
|
-
|
81
|
-
|
82
|
-
|
86
|
+
if vars.key? var
|
87
|
+
unless var_specs.none?
|
88
|
+
result.push( follow_up.new( var_specs ) )
|
89
|
+
var_specs = []
|
90
|
+
end
|
91
|
+
unless result.none?
|
92
|
+
result.push( Literal.new(self.class::SEPARATOR) )
|
93
|
+
end
|
94
|
+
one = Array(expand_one(var, vars[var], expand, max_length))
|
95
|
+
result.push( Literal.new(one.join(self.class::SEPARATOR)))
|
83
96
|
end
|
97
|
+
var_specs << [var,expand,max_length]
|
84
98
|
end
|
85
|
-
if result.
|
86
|
-
|
87
|
-
elsif defined
|
88
|
-
return []
|
89
|
-
else
|
99
|
+
if result.none?
|
100
|
+
# no literal was emitted so far
|
90
101
|
return [ self ]
|
91
102
|
end
|
103
|
+
unless self.class::PREFIX.empty? || empty_literals?( result )
|
104
|
+
result.unshift( Literal.new(self.class::PREFIX) )
|
105
|
+
end
|
106
|
+
if var_specs.size != 0
|
107
|
+
result.push( follow_up.new( var_specs ) )
|
108
|
+
end
|
109
|
+
return result
|
92
110
|
end
|
93
111
|
|
94
112
|
def extract(position,matched)
|
@@ -261,12 +279,18 @@ class URITemplate::RFC6570
|
|
261
279
|
[ self_pair(name, ary, max_length){|value| escape(value) } ]
|
262
280
|
end
|
263
281
|
end
|
282
|
+
|
283
|
+
def empty_literals?( list )
|
284
|
+
list.none?{|x| x.kind_of?(Literal) && !x.to_s.empty? }
|
285
|
+
end
|
264
286
|
end
|
265
287
|
|
266
288
|
require 'uri_template/rfc6570/expression/named'
|
267
289
|
require 'uri_template/rfc6570/expression/unnamed'
|
268
290
|
|
269
291
|
class Expression::Basic < Expression::Unnamed
|
292
|
+
FOLLOW_UP = self
|
293
|
+
BULK_FOLLOW_UP = self
|
270
294
|
end
|
271
295
|
|
272
296
|
class Expression::Reserved < Expression::Unnamed
|
@@ -274,6 +298,8 @@ class URITemplate::RFC6570
|
|
274
298
|
CHARACTER_CLASS = CHARACTER_CLASSES[:unreserved_reserved_pct]
|
275
299
|
OPERATOR = '+'.freeze
|
276
300
|
BASE_LEVEL = 2
|
301
|
+
FOLLOW_UP = self
|
302
|
+
BULK_FOLLOW_UP = self
|
277
303
|
|
278
304
|
def escape(x)
|
279
305
|
Utils.escape_uri(Utils.object_to_param(x))
|
@@ -299,6 +325,8 @@ class URITemplate::RFC6570
|
|
299
325
|
PREFIX = '#'.freeze
|
300
326
|
OPERATOR = '#'.freeze
|
301
327
|
BASE_LEVEL = 2
|
328
|
+
FOLLOW_UP = Expression::Reserved
|
329
|
+
BULK_FOLLOW_UP = Expression::Reserved
|
302
330
|
|
303
331
|
def escape(x)
|
304
332
|
Utils.escape_uri(Utils.object_to_param(x))
|
@@ -316,6 +344,8 @@ class URITemplate::RFC6570
|
|
316
344
|
PREFIX = '.'.freeze
|
317
345
|
OPERATOR = '.'.freeze
|
318
346
|
BASE_LEVEL = 3
|
347
|
+
FOLLOW_UP = self
|
348
|
+
BULK_FOLLOW_UP = self
|
319
349
|
|
320
350
|
end
|
321
351
|
|
@@ -325,6 +355,8 @@ class URITemplate::RFC6570
|
|
325
355
|
PREFIX = '/'.freeze
|
326
356
|
OPERATOR = '/'.freeze
|
327
357
|
BASE_LEVEL = 3
|
358
|
+
FOLLOW_UP = self
|
359
|
+
BULK_FOLLOW_UP = self
|
328
360
|
|
329
361
|
def starts_with_slash?
|
330
362
|
true
|
@@ -339,27 +371,33 @@ class URITemplate::RFC6570
|
|
339
371
|
PAIR_IF_EMPTY = false
|
340
372
|
OPERATOR = ';'.freeze
|
341
373
|
BASE_LEVEL = 3
|
374
|
+
FOLLOW_UP = self
|
375
|
+
BULK_FOLLOW_UP = self
|
342
376
|
|
343
377
|
end
|
344
378
|
|
345
|
-
class Expression::
|
379
|
+
class Expression::FormQueryContinuation < Expression::Named
|
346
380
|
|
347
381
|
SEPARATOR = '&'.freeze
|
348
|
-
PREFIX = '
|
349
|
-
OPERATOR = '
|
382
|
+
PREFIX = '&'.freeze
|
383
|
+
OPERATOR = '&'.freeze
|
350
384
|
BASE_LEVEL = 3
|
351
|
-
|
385
|
+
FOLLOW_UP = Expression::Basic
|
386
|
+
BULK_FOLLOW_UP = self
|
352
387
|
end
|
353
388
|
|
354
|
-
class Expression::
|
389
|
+
class Expression::FormQuery < Expression::Named
|
355
390
|
|
356
391
|
SEPARATOR = '&'.freeze
|
357
|
-
PREFIX = '
|
358
|
-
OPERATOR = '
|
392
|
+
PREFIX = '?'.freeze
|
393
|
+
OPERATOR = '?'.freeze
|
359
394
|
BASE_LEVEL = 3
|
395
|
+
FOLLOW_UP = Expression::Basic
|
396
|
+
BULK_FOLLOW_UP = Expression::FormQueryContinuation
|
360
397
|
|
361
398
|
end
|
362
399
|
|
400
|
+
|
363
401
|
# @private
|
364
402
|
OPERATORS = {
|
365
403
|
'' => Expression::Basic,
|
@@ -1,23 +1,31 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
17
23
|
|
18
24
|
require 'uri_template/rfc6570'
|
19
25
|
|
20
|
-
class URITemplate::RFC6570
|
26
|
+
class URITemplate::RFC6570
|
27
|
+
|
28
|
+
class Expression::Named < Expression
|
21
29
|
|
22
30
|
alias self_pair pair
|
23
31
|
|
@@ -54,6 +62,39 @@ class URITemplate::RFC6570::Expression::Named < URITemplate::RFC6570::Expression
|
|
54
62
|
return source.join
|
55
63
|
end
|
56
64
|
|
65
|
+
def expand_partial( vars )
|
66
|
+
result = []
|
67
|
+
rest = []
|
68
|
+
defined = false
|
69
|
+
@variable_specs.each do | var, expand , max_length |
|
70
|
+
if vars.key? var
|
71
|
+
if Utils.def? vars[var]
|
72
|
+
if result.any? && !self.class::SEPARATOR.empty?
|
73
|
+
result.push( Literal.new(self.class::SEPARATOR) )
|
74
|
+
end
|
75
|
+
one = expand_one(var, vars[var], expand, max_length)
|
76
|
+
result.push( Literal.new(Array(one).join(self.class::SEPARATOR)) )
|
77
|
+
end
|
78
|
+
if expand
|
79
|
+
rest << [var, expand, max_length]
|
80
|
+
else
|
81
|
+
result.push( self.class::FOLLOW_UP.new([[var,expand,max_length]]) )
|
82
|
+
end
|
83
|
+
else
|
84
|
+
rest.push( [var,expand,max_length] )
|
85
|
+
end
|
86
|
+
end
|
87
|
+
if result.any?
|
88
|
+
unless self.class::PREFIX.empty? || empty_literals?( result )
|
89
|
+
result.unshift( Literal.new(self.class::PREFIX) )
|
90
|
+
end
|
91
|
+
result.push( self.class::BULK_FOLLOW_UP.new(rest) ) if rest.size != 0
|
92
|
+
return result
|
93
|
+
else
|
94
|
+
return [ self ]
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
57
98
|
private
|
58
99
|
|
59
100
|
def extracted_nil
|
@@ -69,4 +110,5 @@ private
|
|
69
110
|
end
|
70
111
|
end
|
71
112
|
|
72
|
-
end
|
113
|
+
end
|
114
|
+
end
|
@@ -1,19 +1,25 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
17
23
|
|
18
24
|
require 'uri_template/rfc6570'
|
19
25
|
|
@@ -1,19 +1,25 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
17
23
|
|
18
24
|
require 'uri_template/rfc6570'
|
19
25
|
|
@@ -114,4 +120,4 @@ class URITemplate::RFC6570
|
|
114
120
|
|
115
121
|
end
|
116
122
|
|
117
|
-
end
|
123
|
+
end
|
data/lib/uri_template/token.rb
CHANGED
@@ -1,19 +1,25 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
17
23
|
|
18
24
|
# This should make it possible to do basic analysis independently from the concrete type.
|
19
25
|
# Usually the submodules {URITemplate::Literal} and {URITemplate::Expression} are used.
|
data/lib/uri_template/utils.rb
CHANGED
@@ -1,19 +1,26 @@
|
|
1
1
|
# -*- encoding : utf-8 -*-
|
2
|
-
#
|
3
|
-
# it under the terms of the Affero GNU General Public License as published by
|
4
|
-
# the Free Software Foundation, either version 3 of the License, or
|
5
|
-
# (at your option) any later version.
|
2
|
+
# The MIT License (MIT)
|
6
3
|
#
|
7
|
-
#
|
8
|
-
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9
|
-
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10
|
-
# GNU General Public License for more details.
|
4
|
+
# Copyright (c) 2011-2014 Hannes Georg
|
11
5
|
#
|
12
|
-
#
|
13
|
-
#
|
6
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
# of this software and associated documentation files (the "Software"), to deal
|
8
|
+
# in the Software without restriction, including without limitation the rights
|
9
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
# copies of the Software, and to permit persons to whom the Software is
|
11
|
+
# furnished to do so, subject to the following conditions:
|
14
12
|
#
|
15
|
-
#
|
13
|
+
# The above copyright notice and this permission notice shall be included in
|
14
|
+
# all copies or substantial portions of the Software.
|
16
15
|
#
|
16
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
# THE SOFTWARE.
|
23
|
+
|
17
24
|
module URITemplate
|
18
25
|
|
19
26
|
# An awesome little helper which helps iterating over a string.
|
data/uri_template.gemspec
CHANGED
@@ -1,17 +1,19 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'uri_template'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.7.0'
|
4
4
|
s.date = Time.now.strftime('%Y-%m-%d')
|
5
5
|
s.authors = ["HannesG"]
|
6
6
|
s.email = %q{hannes.georg@googlemail.com}
|
7
7
|
s.summary = 'A templating system for URIs.'
|
8
8
|
s.homepage = 'http://github.com/hannesg/uri_template'
|
9
9
|
s.description = 'A templating system for URIs, which implements RFC6570 and Colon based URITemplates in a clean and straight forward way.'
|
10
|
-
|
10
|
+
|
11
11
|
s.require_paths = ['lib']
|
12
|
-
|
12
|
+
|
13
|
+
s.license = 'MIT'
|
14
|
+
|
13
15
|
s.files = Dir.glob('lib/**/**/*.rb') + ['uri_template.gemspec', 'README.md', 'CHANGELOG.md']
|
14
|
-
|
16
|
+
|
15
17
|
s.add_development_dependency 'multi_json'
|
16
18
|
s.add_development_dependency 'rspec'
|
17
19
|
s.add_development_dependency 'yard'
|
metadata
CHANGED
@@ -1,94 +1,83 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: uri_template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.7.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- HannesG
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-03-21 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: multi_json
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '0'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rspec
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
40
|
version: '0'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: yard
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: rake
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: '0'
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: '0'
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: bundler
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
75
|
version: '0'
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
82
|
version: '0'
|
94
83
|
description: A templating system for URIs, which implements RFC6570 and Colon based
|
@@ -98,42 +87,43 @@ executables: []
|
|
98
87
|
extensions: []
|
99
88
|
extra_rdoc_files: []
|
100
89
|
files:
|
101
|
-
-
|
90
|
+
- CHANGELOG.md
|
91
|
+
- README.md
|
92
|
+
- lib/uri_template.rb
|
102
93
|
- lib/uri_template/colon.rb
|
103
94
|
- lib/uri_template/expression.rb
|
104
|
-
- lib/uri_template/token.rb
|
105
|
-
- lib/uri_template/rfc6570.rb
|
106
95
|
- lib/uri_template/literal.rb
|
107
|
-
- lib/uri_template/rfc6570
|
108
|
-
- lib/uri_template/rfc6570/expression/unnamed.rb
|
109
|
-
- lib/uri_template/rfc6570/expression/named.rb
|
96
|
+
- lib/uri_template/rfc6570.rb
|
110
97
|
- lib/uri_template/rfc6570/expression.rb
|
111
|
-
- lib/uri_template.rb
|
98
|
+
- lib/uri_template/rfc6570/expression/named.rb
|
99
|
+
- lib/uri_template/rfc6570/expression/unnamed.rb
|
100
|
+
- lib/uri_template/rfc6570/regex_builder.rb
|
101
|
+
- lib/uri_template/token.rb
|
102
|
+
- lib/uri_template/utils.rb
|
112
103
|
- uri_template.gemspec
|
113
|
-
- README.md
|
114
|
-
- CHANGELOG.md
|
115
104
|
homepage: http://github.com/hannesg/uri_template
|
116
|
-
licenses:
|
105
|
+
licenses:
|
106
|
+
- MIT
|
107
|
+
metadata: {}
|
117
108
|
post_install_message:
|
118
109
|
rdoc_options: []
|
119
110
|
require_paths:
|
120
111
|
- lib
|
121
112
|
required_ruby_version: !ruby/object:Gem::Requirement
|
122
|
-
none: false
|
123
113
|
requirements:
|
124
|
-
- -
|
114
|
+
- - ">="
|
125
115
|
- !ruby/object:Gem::Version
|
126
116
|
version: '0'
|
127
117
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
|
-
none: false
|
129
118
|
requirements:
|
130
|
-
- -
|
119
|
+
- - ">="
|
131
120
|
- !ruby/object:Gem::Version
|
132
121
|
version: '0'
|
133
122
|
requirements: []
|
134
123
|
rubyforge_project:
|
135
|
-
rubygems_version:
|
124
|
+
rubygems_version: 2.2.1
|
136
125
|
signing_key:
|
137
|
-
specification_version:
|
126
|
+
specification_version: 4
|
138
127
|
summary: A templating system for URIs.
|
139
128
|
test_files: []
|
129
|
+
has_rdoc:
|