bootstrap-navbar 2.3.0 → 2.4.0
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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -2
- data/README.md +17 -0
- data/lib/bootstrap-navbar.rb +2 -1
- data/lib/bootstrap-navbar/helpers.rb +7 -2
- data/lib/bootstrap-navbar/version.rb +1 -1
- data/spec/support/helpers.rb +40 -2
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ca443255cbdf271153acd52fa96e6d787f4cc391
|
4
|
+
data.tar.gz: 1450fb288c7eff37123cf59c4b6e4a1261f966d1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0ad5a23c193df18e26bbaec8b687a9697b1b1d165d626e50e424b1049764c381fa891de3771af7cf92fe5bc41c9c114cfb092968b852dd20fb5a1f6146b359fd
|
7
|
+
data.tar.gz: 47bd7e4873484fa597d5d2b378cda36c03f9a0815850987d7fbe4bed71a8ddc3d66188e9c141529c2351b750c8334ee3c255e9538b856b662896c836fba5e8bc
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -58,6 +58,23 @@ module BootstrapNavbar::Helpers
|
|
58
58
|
end
|
59
59
|
```
|
60
60
|
|
61
|
+
### Set up root paths (optional)
|
62
|
+
|
63
|
+
When deciding whether a navbar link is marked as current, the following steps are followed:
|
64
|
+
|
65
|
+
* If the link target is one of the root paths (only "/" by default), the link is only marked as current if the target is the current path.
|
66
|
+
* Otherwise the link is marked as current if the target is the current path or a sub path of the current path.
|
67
|
+
|
68
|
+
In certain cases a website might want to treat more paths as root paths, e.g. when it has different locales mapped at /en, /de etc. This can be achieved by setting the `root_paths` configuration.
|
69
|
+
|
70
|
+
```ruby
|
71
|
+
BootstrapNavbar.configure do |config|
|
72
|
+
config.root_paths = ['/', '/en', '/de'] # default: ['/']
|
73
|
+
end
|
74
|
+
```
|
75
|
+
|
76
|
+
With this configuration, if your brand link would be '/en' for example, it would not be marked as current if you are on '/en/some-page'.
|
77
|
+
|
61
78
|
### Mix in the helpers into the rendering engine (required)
|
62
79
|
|
63
80
|
```ruby
|
data/lib/bootstrap-navbar.rb
CHANGED
@@ -4,8 +4,9 @@ module BootstrapNavbar
|
|
4
4
|
include GemConfig::Base
|
5
5
|
|
6
6
|
with_configuration do
|
7
|
-
has :bootstrap_version,
|
7
|
+
has :bootstrap_version, classes: String
|
8
8
|
has :current_url_method, classes: String
|
9
|
+
has :root_paths, classes: Array, default: %w(/)
|
9
10
|
end
|
10
11
|
end
|
11
12
|
|
@@ -31,8 +31,13 @@ module BootstrapNavbar::Helpers
|
|
31
31
|
normalized_path, normalized_current_path = [uri, current_uri].map do |uri|
|
32
32
|
uri.path.sub(%r(/\z), '')
|
33
33
|
end
|
34
|
-
|
35
|
-
|
34
|
+
normalized_root_paths = BootstrapNavbar.configuration.root_paths.map do |path|
|
35
|
+
path.sub(%r(/\z), '')
|
36
|
+
end
|
37
|
+
# If the URL is one of the root URLS, it's only current if it is the current URL.
|
38
|
+
# Otherwise it's current if we're currently on the URL or on a sub URL.
|
39
|
+
if normalized_root_paths.include?(normalized_path)
|
40
|
+
normalized_current_path == normalized_path
|
36
41
|
else
|
37
42
|
normalized_current_path =~ %r(\A#{Regexp.escape(normalized_path)}(/.+)?\z)
|
38
43
|
end
|
data/spec/support/helpers.rb
CHANGED
@@ -16,7 +16,7 @@ module Helpers
|
|
16
16
|
end
|
17
17
|
|
18
18
|
shared_examples 'marking the navbar items as active correctly' do
|
19
|
-
context 'when the navbar item URL is the current root URL or
|
19
|
+
context 'when the navbar item URL is the current root URL or path' do
|
20
20
|
it_behaves_like 'marking current URLs as current and non-current URLs as not-current' do
|
21
21
|
let(:navbar_item_urls) do
|
22
22
|
%w(
|
@@ -39,14 +39,52 @@ shared_examples 'marking the navbar items as active correctly' do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
context 'when another root path is configured and the navbar item URL is the corresponding root URL or path' do
|
43
|
+
before do
|
44
|
+
@_previous_root_paths = BootstrapNavbar.configuration.root_paths
|
45
|
+
BootstrapNavbar.configuration.root_paths = %w(/custom-root)
|
46
|
+
end
|
47
|
+
|
48
|
+
after do
|
49
|
+
BootstrapNavbar.configuration.root_paths = @_previous_root_paths
|
50
|
+
end
|
51
|
+
|
52
|
+
it_behaves_like 'marking current URLs as current and non-current URLs as not-current' do
|
53
|
+
let(:navbar_item_urls) do
|
54
|
+
%w(
|
55
|
+
http://www.foobar.com/custom-root/
|
56
|
+
http://www.foobar.com/custom-root
|
57
|
+
/custom-root/
|
58
|
+
/custom-root
|
59
|
+
)
|
60
|
+
end
|
61
|
+
let(:current_urls) do
|
62
|
+
%w(
|
63
|
+
http://www.foobar.com/custom-root/
|
64
|
+
http://www.foobar.com/custom-root
|
65
|
+
)
|
66
|
+
end
|
67
|
+
let(:non_current_urls) do
|
68
|
+
%w(
|
69
|
+
http://www.foobar.com/
|
70
|
+
http://www.foobar.com
|
71
|
+
http://www.foobar.com/foo/
|
72
|
+
http://www.foobar.com/foo
|
73
|
+
http://www.foobar.com/custom-root/foo/
|
74
|
+
http://www.foobar.com/custom-root/foo
|
75
|
+
)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
42
80
|
context 'when the navbar item URL is a sub URL of the current URL' do
|
43
81
|
it_behaves_like 'marking current URLs as current and non-current URLs as not-current' do
|
44
82
|
let(:navbar_item_urls) do
|
45
83
|
%w(
|
46
84
|
http://www.foobar.com/foo/
|
47
85
|
http://www.foobar.com/foo
|
48
|
-
/foo
|
49
86
|
/foo/
|
87
|
+
/foo
|
50
88
|
)
|
51
89
|
end
|
52
90
|
let(:current_urls) do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bootstrap-navbar
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Manuel Meurer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -155,7 +155,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
155
155
|
version: '0'
|
156
156
|
requirements: []
|
157
157
|
rubyforge_project:
|
158
|
-
rubygems_version: 2.6.
|
158
|
+
rubygems_version: 2.6.8
|
159
159
|
signing_key:
|
160
160
|
specification_version: 4
|
161
161
|
summary: Helpers to generate a Bootstrap style navbar
|
@@ -166,4 +166,3 @@ test_files:
|
|
166
166
|
- spec/bootstrap-navbar/helpers_spec.rb
|
167
167
|
- spec/spec_helper.rb
|
168
168
|
- spec/support/helpers.rb
|
169
|
-
has_rdoc:
|