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 ADDED
Binary file
data/README.md CHANGED
@@ -20,18 +20,22 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- It's best to add a helper to your application to use `UrlPlumber` like this:
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
- # url_plumber.rb
27
- module PlumberHelper
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, value)
33
+ return url_for (@plumber ||= ::UrlPlumber::Plumber.new(params)).plumb(key_path => value)
30
34
  end
31
35
  end
32
36
  ```
33
37
 
34
- Then, in your view, you can use it like this:
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
@@ -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|
@@ -1,3 +1,3 @@
1
1
  module UrlPlumber
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -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 UrlPlumberTest < ActiveSupport::TestCase
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.0
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
- date: 2013-02-05 00:00:00.000000000 Z
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/url_plumber_test.rb
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/url_plumber_test.rb
117
+ - test/url_plumber_extract_test.rb
118
+ - test/url_plumber_plumb_test.rb
90
119
  has_rdoc:
metadata.gz.sig ADDED
Binary file