url_plumber 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|