url_plumber 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data.tar.gz.sig +0 -0
- data/README.md +28 -5
- data/lib/url_plumber/plumber.rb +16 -0
- data/lib/url_plumber/version.rb +1 -1
- data/test/url_plumber_extract_test.rb +27 -0
- data/test/{url_plumber_test.rb → url_plumber_plumb_test.rb} +1 -1
- data/url_plumber.gemspec +4 -0
- metadata +34 -5
- metadata.gz.sig +0 -0
data.tar.gz.sig
ADDED
Binary file
|
data/README.md
CHANGED
@@ -20,18 +20,22 @@ Or install it yourself as:
|
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
23
|
-
|
23
|
+
`UrlPlumber` has two main functions: changing values inside a hash and reading values stored inside of hash objects.
|
24
|
+
|
25
|
+
#### changing url parameters
|
26
|
+
|
27
|
+
The easiest way to get start is somewhere along these lines:
|
24
28
|
|
25
29
|
```
|
26
|
-
#
|
27
|
-
module
|
30
|
+
# url_plumber_helper.rb
|
31
|
+
module UrlPlumberHelper
|
28
32
|
def plumb(key_path, value = nil)
|
29
|
-
return url_for (@plumber ||= ::UrlPlumber::Plumber.new(params)).plumb(key_path
|
33
|
+
return url_for (@plumber ||= ::UrlPlumber::Plumber.new(params)).plumb(key_path => value)
|
30
34
|
end
|
31
35
|
end
|
32
36
|
```
|
33
37
|
|
34
|
-
|
38
|
+
You can use it like this:
|
35
39
|
|
36
40
|
```
|
37
41
|
# some_view.haml
|
@@ -44,6 +48,25 @@ Then, in your view, you can use it like this:
|
|
44
48
|
= link_to 'Option B 2', plumb('filter.option_b', 2)
|
45
49
|
```
|
46
50
|
|
51
|
+
#### reading url parameters
|
52
|
+
|
53
|
+
```
|
54
|
+
# url_plumber_helper.rb
|
55
|
+
module UrlPlumberHelper
|
56
|
+
def url_inquirer(key_path)
|
57
|
+
return ::ActiveSupport::StringInquirer.new(@plumber ||= ::UrlPlumber::Plumber.new(params)).extract(key_path)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
```
|
61
|
+
|
62
|
+
You can use it like this:
|
63
|
+
|
64
|
+
```
|
65
|
+
# some_view.haml
|
66
|
+
- unless url_inquirer("filter.free_text").blank?
|
67
|
+
= link_to 'clear search', root_path
|
68
|
+
```
|
69
|
+
|
47
70
|
Mix and match your plumber got you covert :)
|
48
71
|
|
49
72
|
## Contributing
|
data/lib/url_plumber/plumber.rb
CHANGED
@@ -8,6 +8,22 @@ module UrlPlumber
|
|
8
8
|
@params = dup(params)
|
9
9
|
end
|
10
10
|
|
11
|
+
def extract key_path
|
12
|
+
keys = key_path.to_s.split('.').map(&:to_sym)
|
13
|
+
key = keys[-1]
|
14
|
+
|
15
|
+
scope = params
|
16
|
+
keys[0..-2].each do |part|
|
17
|
+
scope = scope.fetch(part) { HashWithIndifferentAccess.new }
|
18
|
+
end
|
19
|
+
|
20
|
+
if scope.has_key?(key)
|
21
|
+
scope[key]
|
22
|
+
else
|
23
|
+
nil
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
11
27
|
def plumb attributes = {}
|
12
28
|
scope = dup(params)
|
13
29
|
attributes.each do |key, value|
|
data/lib/url_plumber/version.rb
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
require "test/unit"
|
2
|
+
require "active_support/test_case"
|
3
|
+
require "active_support/inflector"
|
4
|
+
|
5
|
+
require "url_plumber"
|
6
|
+
|
7
|
+
class UrlPlumberExtractTest < ActiveSupport::TestCase
|
8
|
+
test 'returns nil for key_paths that do not match' do
|
9
|
+
plumber = ::UrlPlumber::Plumber.new({ "foo" => 42 })
|
10
|
+
assert_nil plumber.extract("bar")
|
11
|
+
end
|
12
|
+
|
13
|
+
test 'returns nil for nested, unknown key_paths' do
|
14
|
+
plumber = ::UrlPlumber::Plumber.new({ "foo" => { "bar" => 12 } })
|
15
|
+
assert_nil plumber.extract("foo.x")
|
16
|
+
end
|
17
|
+
|
18
|
+
test 'returns value for known key_paths' do
|
19
|
+
plumber = ::UrlPlumber::Plumber.new({ "foo" => 42 })
|
20
|
+
assert_equal 42, plumber.extract("foo")
|
21
|
+
end
|
22
|
+
|
23
|
+
test 'returns value for known nested key_paths' do
|
24
|
+
plumber = ::UrlPlumber::Plumber.new({ "foo" => { "bar" => 12 } })
|
25
|
+
assert_equal 12, plumber.extract("foo.bar")
|
26
|
+
end
|
27
|
+
end
|
@@ -4,7 +4,7 @@ require "active_support/inflector"
|
|
4
4
|
|
5
5
|
require "url_plumber"
|
6
6
|
|
7
|
-
class
|
7
|
+
class UrlPlumberPlumbTest < ActiveSupport::TestCase
|
8
8
|
test 'removes key from hash' do
|
9
9
|
plumber = ::UrlPlumber::Plumber.new({ "foo" => 42 })
|
10
10
|
assert_empty plumber.plumb("foo" => nil)
|
data/url_plumber.gemspec
CHANGED
@@ -20,4 +20,8 @@ Gem::Specification.new do |gem|
|
|
20
20
|
|
21
21
|
gem.add_dependency 'activesupport', '>= 3.0.0'
|
22
22
|
gem.add_development_dependency 'rake', '~> 10.0.3'
|
23
|
+
|
24
|
+
# signing key and certificate chain
|
25
|
+
gem.signing_key = 'gem-private_key.pem'
|
26
|
+
gem.cert_chain = ['gem-public_cert.pem']
|
23
27
|
end
|
metadata
CHANGED
@@ -2,14 +2,41 @@
|
|
2
2
|
name: url_plumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.1.
|
5
|
+
version: 0.1.1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Raphael Randschau
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
|
-
cert_chain:
|
12
|
-
|
11
|
+
cert_chain:
|
12
|
+
- !binary |-
|
13
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURMakNDQWhhZ0F3SUJB
|
14
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREE5TVJJd0VBWURWUVFEREFsdWFX
|
15
|
+
TnYKYkdGcE9EWXhFakFRQmdvSmtpYUprL0lzWkFFWkZnSnRaVEVUTUJFR0Nn
|
16
|
+
bVNKb21UOGl4a0FSa1dBMk52YlRBZQpGdzB4TXpBeU1EVXlNRFExTWpaYUZ3
|
17
|
+
MHhOREF5TURVeU1EUTFNalphTUQweEVqQVFCZ05WQkFNTUNXNXBZMjlzCllX
|
18
|
+
azROakVTTUJBR0NnbVNKb21UOGl4a0FSa1dBbTFsTVJNd0VRWUtDWkltaVpQ
|
19
|
+
eUxHUUJHUllEWTI5dE1JSUIKSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4
|
20
|
+
QU1JSUJDZ0tDQVFFQW9lSHIwbTMvY1Q1Z1dURzU2Z3duMjA1agpibGZERXl3
|
21
|
+
cWZIc3FDcnExZjNZS0NHSEdPY0JmUkZaQlRxeG5WU0dRZGdUa0lCNFYzb3A4
|
22
|
+
V2xmTFR3QlIxUC82CkxDZGlSd2RObG9IeEoyaGh6MVBZTDYzKzZuVTZDb0ZW
|
23
|
+
NDZIdUxSL0dST3lhRGlhclpDQm9la0Z6a0RFbDVUdzEKcUVQZmJHQ0dibDND
|
24
|
+
VWZkc1NCWWhNcW0zSEp4bmFOWnQ3dGNFdE9EYUF6Yi8zNkdvU1lLWmhiWG9B
|
25
|
+
dHBvbUJENAplTmk5ZFRNYjc2N3FYTDNtRm9FOUgrNWpkVjlsdVgzQ1huV3dx
|
26
|
+
WS91N3U4b29udHN5b0hsQWhvYW45bExScjZNCjdKalFyUXN6dm94SlplN3NS
|
27
|
+
RFhidUN1anJ4cVQxVkh4QkF3YnFHL1RFS3NkQWZpaWRZd0ZBZlBRZ1dWRkR3
|
28
|
+
SUQKQVFBQm96a3dOekFKQmdOVkhSTUVBakFBTUIwR0ExVWREZ1FXQkJTMEx6
|
29
|
+
RUp2eVNwR0tFT3JqTHpDWlloejZLSwpkekFMQmdOVkhROEVCQU1DQkxBd0RR
|
30
|
+
WUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFGVjFZRm5XRE5WL1luS2JTY2loCkhB
|
31
|
+
M2hYK1NLTTdkQ0lZUjNqOFFORVRqNi9lNXN5czN0dHNNaTJSZ3VVNHNzQlBx
|
32
|
+
cE9TUWJYR01UZEpOMi9SZkkKZFE0bG9nSS92T2RlWkd0cDBsL1lmdjNPZ2pM
|
33
|
+
aitGS3k5L2R3MGMxY1BhNFJaS3gvckhUcFYrTXlIWlR3THVybgpxUldEdkVh
|
34
|
+
eGR4UkhHTk1wTHhUdWtqcFBaOElyc2VZZkROOXVERzNGV1M3NmdyMmhhL2FP
|
35
|
+
d0lnZHFtQWkzRUhMCmNwUW0wNG9VNDAzZkdKMWxIZ1ZFeHdxNUhVTWV1TElI
|
36
|
+
b3QybzdxaE9Wb1Y0dXQvYVVXWlVGK013R3VtNU5GUlYKQXJnN0RwRjJWSnBx
|
37
|
+
dDg2d1RkQ1prQnBNcktodFlVRkp1ay8zckdHSEd6Z213cXlCQ0dmWDZDMXN5
|
38
|
+
cmNoa09QUApRT1k9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
|
39
|
+
date: 2013-02-12 00:00:00.000000000 Z
|
13
40
|
dependencies:
|
14
41
|
- !ruby/object:Gem::Dependency
|
15
42
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,7 +85,8 @@ files:
|
|
58
85
|
- lib/url_plumber.rb
|
59
86
|
- lib/url_plumber/plumber.rb
|
60
87
|
- lib/url_plumber/version.rb
|
61
|
-
- test/
|
88
|
+
- test/url_plumber_extract_test.rb
|
89
|
+
- test/url_plumber_plumb_test.rb
|
62
90
|
- url_plumber.gemspec
|
63
91
|
homepage: https://github.com/nicolai86/url_plumber
|
64
92
|
licenses:
|
@@ -86,5 +114,6 @@ signing_key:
|
|
86
114
|
specification_version: 3
|
87
115
|
summary: modify parts of a hash using a key_path
|
88
116
|
test_files:
|
89
|
-
- test/
|
117
|
+
- test/url_plumber_extract_test.rb
|
118
|
+
- test/url_plumber_plumb_test.rb
|
90
119
|
has_rdoc:
|
metadata.gz.sig
ADDED
Binary file
|