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 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