link_to_active_state 0.1.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.public_cert.pem +20 -0
- data/README.md +32 -2
- data/lib/link_to_active_state/version.rb +1 -1
- data/lib/link_to_active_state/view_helpers/url_helper.rb +11 -3
- data/link_to_active_state.gemspec +0 -3
- data/spec/link_to_active_state_spec.rb +34 -9
- metadata +5 -31
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -0
data/.public_cert.pem
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDMjCCAhqgAwIBAgIBADANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhyb2Jv
|
3
|
+
dG1heTEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
|
4
|
+
MB4XDTEzMDIwMTEyMjAzOFoXDTE0MDIwMTEyMjAzOFowPzERMA8GA1UEAwwIcm9i
|
5
|
+
b3RtYXkxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
|
6
|
+
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN6wix6nt1IBhgSyIeMB
|
7
|
+
ytPpn515nwSvJhG1ej7Yt9T0faMCnWTrm8jZtdtXsB/9RwHpUoCqCdttNrm/1jBQ
|
8
|
+
j8ddTmqPV9L5W7mvbC4a+4YQ5+xBqG0WV5LDYQek0hXWGM7XJd/eo82CANrgmiu5
|
9
|
+
MqCna8ovoABtqXQb+t83DtK0xdL0rSd5zBP752VzKC8/AEw5EZlTWH9xXWy7asF+
|
10
|
+
U0nyymwyPKvfwDh02c7WRrz7/8NCCyto7GWfrmD9c4UkIqrsFx40FSkETXapLIpW
|
11
|
+
6q5859c00+weeAImX8gHnCXTxMdcxxmPQ8sZ6KZ/NEyZh7yApJaPVmQI+m2Ou2GA
|
12
|
+
JKMCAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQURPXWvYZqwmHnqw4uMjZh
|
13
|
+
liL3GgkwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQCpWF+B6K5megIH
|
14
|
+
9WJxV2Vi81w00CoaxNMQBL38KMUDkq4u4V7EOoYdp9qdQ2tDwJ2CBhIRSPS6bNtp
|
15
|
+
GAM1peOCXblsSGoyNWS0kNd8/eWVyMCFt7PsWi4nADVTM7uHYR9MtmIQ5BbsS8OS
|
16
|
+
zeufMQfyuV2Yp3a+oGFdGrWa6cicRhvBlJglriUiUGTf/Z45hrNQ1xP9WyPJqTLV
|
17
|
+
cEvC1LiLSCSb/v2lFVpA51wdiIC5/CTAgyIMCc7LmToncqgvEY3hQFsLNZlfGtVz
|
18
|
+
5O7cF3CDHuZIFkHlGBg3nC/6n7XV9np8pe9688on4Nb/2zCOwzcwOCM6hJyn8IUf
|
19
|
+
zj5dQ3p0
|
20
|
+
-----END CERTIFICATE-----
|
data/README.md
CHANGED
@@ -2,7 +2,8 @@
|
|
2
2
|
|
3
3
|
[![Build Status](https://travis-ci.org/robotmay/link_to_active_state.png?branch=master)](https://travis-ci.org/robotmay/link_to_active_state) [![Code Climate](https://codeclimate.com/badge.png)](https://codeclimate.com/github/robotmay/link_to_active_state) [![Dependency Status](https://gemnasium.com/robotmay/link_to_active_state.png)](https://gemnasium.com/robotmay/link_to_active_state)
|
4
4
|
|
5
|
-
A simple gem to implement active states on links using the standard Rails `link_to` helper.
|
5
|
+
A simple gem to implement active states on links using the standard Rails `link_to` helper.
|
6
|
+
This can be helpful in navigation lists or buttons to give them a class when the current URL matches a condition on the link helper.
|
6
7
|
|
7
8
|
## Installation
|
8
9
|
|
@@ -10,7 +11,7 @@ Add this line to your application's Gemfile:
|
|
10
11
|
|
11
12
|
gem 'link_to_active_state'
|
12
13
|
|
13
|
-
|
14
|
+
Or install from the repository:
|
14
15
|
|
15
16
|
gem 'link_to_active_state', git: 'git://github.com/robotmay/link_to_active_state.git', tag: 'v0.1.2'
|
16
17
|
|
@@ -33,6 +34,11 @@ Test the path using a string/path helper:
|
|
33
34
|
link_to "Account", account_path, active_on: account_path
|
34
35
|
```
|
35
36
|
|
37
|
+
Which, if the `request.fullpath` matches `account_path`, will result in:
|
38
|
+
```html
|
39
|
+
<a href="/account" class="active">Account</a>
|
40
|
+
```
|
41
|
+
|
36
42
|
Using a regular expression:
|
37
43
|
```ruby
|
38
44
|
link_to "Account", account_path, active_on: /\/account/i
|
@@ -51,6 +57,10 @@ By default the class "active" will be added to the existing classes of the link.
|
|
51
57
|
link_to "Account", account_path, active_on: /\/account/i, active_state: "highlighted"
|
52
58
|
```
|
53
59
|
|
60
|
+
```html
|
61
|
+
<a href="/account" class="highlighted">Account</a>
|
62
|
+
```
|
63
|
+
|
54
64
|
You can also customise other options by using a proc:
|
55
65
|
```ruby
|
56
66
|
link_to "Account", account_path, active_on: /\/account/i, active_state: lambda { |html_options|
|
@@ -58,6 +68,26 @@ link_to "Account", account_path, active_on: /\/account/i, active_state: lambda {
|
|
58
68
|
}
|
59
69
|
```
|
60
70
|
|
71
|
+
```html
|
72
|
+
<a href="/account" data-active="true">Account</a>
|
73
|
+
```
|
74
|
+
|
75
|
+
### Wrappers
|
76
|
+
|
77
|
+
If you need an active class on an li tag, for use in a Bootstrap nav for example:
|
78
|
+
```ruby
|
79
|
+
link_to "Account", account_path, active_on: account_path, active_wrapper: :li
|
80
|
+
```
|
81
|
+
|
82
|
+
Which will result in:
|
83
|
+
```html
|
84
|
+
<li class="active">
|
85
|
+
<a href="/account" class="active">Account</a>
|
86
|
+
</li>
|
87
|
+
```
|
88
|
+
|
89
|
+
Note the li tag is included as part of the html generated by the link_to helper and should not be added separately.
|
90
|
+
|
61
91
|
## Contributing
|
62
92
|
|
63
93
|
1. Fork it
|
@@ -14,7 +14,7 @@ module LinkToActiveState
|
|
14
14
|
else
|
15
15
|
args[2]
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
if html_options.present? && html_options[:active_on].present?
|
19
19
|
active_on = html_options[:active_on]
|
20
20
|
|
@@ -32,7 +32,15 @@ module LinkToActiveState
|
|
32
32
|
html_options.delete(:active_state)
|
33
33
|
end
|
34
34
|
|
35
|
-
|
35
|
+
if html_options.present? && html_options[:active_wrapper]
|
36
|
+
element = html_options.delete(:active_wrapper)
|
37
|
+
|
38
|
+
content_tag(element, html_options) do
|
39
|
+
link_to_without_active_state(*args, &block)
|
40
|
+
end
|
41
|
+
else
|
42
|
+
link_to_without_active_state(*args, &block)
|
43
|
+
end
|
36
44
|
end
|
37
45
|
|
38
46
|
private
|
@@ -43,7 +51,7 @@ module LinkToActiveState
|
|
43
51
|
when Array
|
44
52
|
active_on.include?(request.fullpath)
|
45
53
|
when Regexp
|
46
|
-
request.fullpath =~ active_on
|
54
|
+
request.fullpath =~ active_on
|
47
55
|
when Proc
|
48
56
|
active_on.arity == 1 ? active_on.call(request) : active_on.call
|
49
57
|
end
|
@@ -17,9 +17,6 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
18
|
gem.require_paths = ["lib"]
|
19
19
|
|
20
|
-
gem.cert_chain = ["gem-public_cert.pem"]
|
21
|
-
gem.signing_key = ENV['PRIVATE_KEY']
|
22
|
-
|
23
20
|
gem.add_development_dependency "rails", [">= 3.2.11"]
|
24
21
|
gem.add_development_dependency "rspec", ["~> 2.12.0"]
|
25
22
|
end
|
@@ -34,7 +34,7 @@ describe LinkToActiveState::ViewHelpers::UrlHelper do
|
|
34
34
|
def fullpath
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
Request.new
|
39
39
|
end
|
40
40
|
|
@@ -42,16 +42,41 @@ describe LinkToActiveState::ViewHelpers::UrlHelper do
|
|
42
42
|
helper.stub!(:request).and_return(request)
|
43
43
|
end
|
44
44
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
45
|
+
context "when the current request path matches" do
|
46
|
+
|
47
|
+
it "adds an active state" do
|
48
|
+
request.stub!(:fullpath).and_return("/")
|
49
|
+
lt = helper.link_to "Home", "/", :active_on => "/"
|
50
|
+
lt.should match(/class=\"active\"/i)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "encloses link in an element with active state if active_wrapper is true" do
|
54
|
+
request.stub!(:fullpath).and_return("/")
|
55
|
+
lt = helper.link_to "Home", "/", :active_on => "/", :active_wrapper => :li
|
56
|
+
lt.should match(/li class=\"active\"/i)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "doesn't enclose link in an element if active_wrapper is not specified" do
|
60
|
+
request.stub!(:fullpath).and_return("/")
|
61
|
+
lt = helper.link_to "Home", "/", :active_on => "/"
|
62
|
+
lt.should_not match(/li class=\"active\"/i)
|
63
|
+
end
|
49
64
|
end
|
50
65
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
66
|
+
context "when the current request doesn't match" do
|
67
|
+
it "doesn't add an active state" do
|
68
|
+
request.stub!(:fullpath).and_return("/wibble")
|
69
|
+
lt = helper.link_to "Madness", "/wobble", :active_on => "/wobble"
|
70
|
+
lt.should_not match(/class=\"active\"/i)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "encloses link in an element if active_wrapper is true" do
|
74
|
+
request.stub!(:fullpath).and_return("/wibble")
|
75
|
+
lt = helper.link_to "Home", "/", :active_on => "/", :active_wrapper => :li
|
76
|
+
lt.should match(/<li>/i)
|
77
|
+
end
|
78
|
+
|
55
79
|
end
|
80
|
+
|
56
81
|
end
|
57
82
|
end
|
metadata
CHANGED
@@ -1,42 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: link_to_active_state
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Robert May
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
|
-
cert_chain:
|
12
|
-
-
|
13
|
-
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURNakNDQWhxZ0F3SUJB
|
14
|
-
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREEvTVJFd0R3WURWUVFEREFoeWIy
|
15
|
-
SnYKZEcxaGVURVZNQk1HQ2dtU0pvbVQ4aXhrQVJrV0JXZHRZV2xzTVJNd0VR
|
16
|
-
WUtDWkltaVpQeUxHUUJHUllEWTI5dApNQjRYRFRFek1ESXdNVEV5TWpBek9G
|
17
|
-
b1hEVEUwTURJd01URXlNakF6T0Zvd1B6RVJNQThHQTFVRUF3d0ljbTlpCmIz
|
18
|
-
UnRZWGt4RlRBVEJnb0praWFKay9Jc1pBRVpGZ1ZuYldGcGJERVRNQkVHQ2dt
|
19
|
-
U0pvbVQ4aXhrQVJrV0EyTnYKYlRDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFB
|
20
|
-
RGdnRVBBRENDQVFvQ2dnRUJBTjZ3aXg2bnQxSUJoZ1N5SWVNQgp5dFBwbjUx
|
21
|
-
NW53U3ZKaEcxZWo3WXQ5VDBmYU1DbldUcm04alp0ZHRYc0IvOVJ3SHBVb0Nx
|
22
|
-
Q2R0dE5ybS8xakJRCmo4ZGRUbXFQVjlMNVc3bXZiQzRhKzRZUTUreEJxRzBX
|
23
|
-
VjVMRFlRZWswaFhXR003WEpkL2VvODJDQU5yZ21pdTUKTXFDbmE4b3ZvQUJ0
|
24
|
-
cVhRYit0ODNEdEsweGRMMHJTZDV6QlA3NTJWektDOC9BRXc1RVpsVFdIOXhY
|
25
|
-
V3k3YXNGKwpVMG55eW13eVBLdmZ3RGgwMmM3V1JyejcvOE5DQ3l0bzdHV2Zy
|
26
|
-
bUQ5YzRVa0lxcnNGeDQwRlNrRVRYYXBMSXBXCjZxNTg1OWMwMCt3ZWVBSW1Y
|
27
|
-
OGdIbkNYVHhNZGN4eG1QUThzWjZLWi9ORXlaaDd5QXBKYVBWbVFJK20yT3Uy
|
28
|
-
R0EKSktNQ0F3RUFBYU01TURjd0NRWURWUjBUQkFJd0FEQWRCZ05WSFE0RUZn
|
29
|
-
UVVSUFhXdllacXdtSG5xdzR1TWpaaApsaUwzR2drd0N3WURWUjBQQkFRREFn
|
30
|
-
U3dNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUNwV0YrQjZLNW1lZ0lICjlX
|
31
|
-
SnhWMlZpODF3MDBDb2F4Tk1RQkwzOEtNVURrcTR1NFY3RU9vWWRwOXFkUTJ0
|
32
|
-
RHdKMkNCaElSU1BTNmJOdHAKR0FNMXBlT0NYYmxzU0dveU5XUzBrTmQ4L2VX
|
33
|
-
VnlNQ0Z0N1BzV2k0bkFEVlRNN3VIWVI5TXRtSVE1QmJzUzhPUwp6ZXVmTVFm
|
34
|
-
eXVWMllwM2Erb0dGZEdyV2E2Y2ljUmh2QmxKZ2xyaVVpVUdUZi9aNDVock5R
|
35
|
-
MXhQOVd5UEpxVExWCmNFdkMxTGlMU0NTYi92MmxGVnBBNTF3ZGlJQzUvQ1RB
|
36
|
-
Z3lJTUNjN0xtVG9uY3FndkVZM2hRRnNMTlpsZkd0VnoKNU83Y0YzQ0RIdVpJ
|
37
|
-
RmtIbEdCZzNuQy82bjdYVjlucDhwZTk2ODhvbjROYi8yekNPd3pjd09DTTZo
|
38
|
-
SnluOElVZgp6ajVkUTNwMAotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
39
|
-
date: 2013-02-01 00:00:00.000000000 Z
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-02-17 00:00:00.000000000 Z
|
40
13
|
dependencies:
|
41
14
|
- !ruby/object:Gem::Dependency
|
42
15
|
name: rails
|
@@ -79,6 +52,7 @@ extensions: []
|
|
79
52
|
extra_rdoc_files: []
|
80
53
|
files:
|
81
54
|
- .gitignore
|
55
|
+
- .public_cert.pem
|
82
56
|
- .travis.yml
|
83
57
|
- Gemfile
|
84
58
|
- LICENSE.txt
|
@@ -112,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
112
86
|
version: '0'
|
113
87
|
requirements: []
|
114
88
|
rubyforge_project:
|
115
|
-
rubygems_version: 1.8.
|
89
|
+
rubygems_version: 1.8.24
|
116
90
|
signing_key:
|
117
91
|
specification_version: 3
|
118
92
|
summary: Active states for links using the Rails link_to helper.
|
data.tar.gz.sig
DELETED
Binary file
|
metadata.gz.sig
DELETED
Binary file
|