simple-navigation 4.1.0 → 4.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +6 -1
- data/CHANGELOG.md +15 -0
- data/README.md +1 -1
- data/Rakefile +2 -0
- data/gemfiles/rails-6-0-stable.gemfile +1 -2
- data/gemfiles/rails-6-1-stable.gemfile +9 -0
- data/generators/navigation_config/templates/config/navigation.rb +3 -2
- data/lib/simple_navigation/item.rb +5 -4
- data/lib/simple_navigation/renderer/json.rb +2 -1
- data/lib/simple_navigation/version.rb +1 -1
- data/spec/simple_navigation/adapters/rails_spec.rb +1 -1
- data/spec/simple_navigation/adapters/sinatra_spec.rb +1 -1
- data/spec/simple_navigation/config_file_finder_spec.rb +2 -2
- data/spec/simple_navigation/configuration_spec.rb +2 -2
- data/spec/simple_navigation/helpers_spec.rb +2 -2
- data/spec/simple_navigation/item_container_spec.rb +1 -1
- data/spec/simple_navigation/item_spec.rb +1 -1
- data/spec/simple_navigation/items_provider_spec.rb +1 -1
- data/spec/simple_navigation/renderer/base_spec.rb +1 -1
- data/spec/simple_navigation/renderer/json_spec.rb +13 -2
- data/spec/simple_navigation_spec.rb +2 -2
- data/spec/spec_helper.rb +4 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 66e6c73b8c96a17a4730125ae741fc1f11f3c9495578cafdb2795223a251614c
|
4
|
+
data.tar.gz: 2b7e406ee541892f12e459eb2218a382f4f3ac26b89f11c382dfa92424146312
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 252b910e666cd652c25bc42823c3366d4d7f88b541684d6123b4644bcb121657ea22b59415c8333ffa0e69eff6586f2bee75c754426899ab4b8895f9e66a2814
|
7
|
+
data.tar.gz: c4b8fa52310cda2c367e24e88c0366d49d6cbfff41443be5c50092445a80fe14f27f014df47e08e19b4c75cf8d55d55678e606df9a7f2866feb7ea6d1f2e7859
|
data/.travis.yml
CHANGED
@@ -3,6 +3,12 @@ before_install:
|
|
3
3
|
|
4
4
|
matrix:
|
5
5
|
include:
|
6
|
+
- rvm: 2.5.8
|
7
|
+
gemfile: gemfiles/rails-6-1-stable.gemfile
|
8
|
+
- rvm: 2.6.7
|
9
|
+
gemfile: gemfiles/rails-6-1-stable.gemfile
|
10
|
+
- rvm: 2.7.3
|
11
|
+
gemfile: gemfiles/rails-6-1-stable.gemfile
|
6
12
|
- rvm: 2.5.3
|
7
13
|
gemfile: gemfiles/rails-6-0-stable.gemfile
|
8
14
|
- rvm: 2.6.0
|
@@ -15,4 +21,3 @@ matrix:
|
|
15
21
|
gemfile: gemfiles/rails-4-1-stable.gemfile
|
16
22
|
- rvm: 2.3.3
|
17
23
|
gemfile: gemfiles/rails-3-2-stable.gemfile
|
18
|
-
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,20 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 4.4.0
|
4
|
+
|
5
|
+
* add options rendering to json renderer. Credits to Mikhail Kytyzov.
|
6
|
+
|
7
|
+
## 4.3.0
|
8
|
+
|
9
|
+
* removed warnings from rspec. Thanks mgrunberg.
|
10
|
+
* add compatibility with rails 6.1. Credits to mgrunberg.
|
11
|
+
* run specs against 6.1. Credits to mgrunberg.
|
12
|
+
|
13
|
+
## 4.2.0
|
14
|
+
|
15
|
+
* improvements to generator template. Credits to mgrunberg.
|
16
|
+
* be able to run 'rake spec:rails-6-0-stable'. Credits to mgrunberg.
|
17
|
+
|
3
18
|
## 4.1.0
|
4
19
|
|
5
20
|
* Delay rails6 initialization using on_load (getting rid of deprecation warnings in rails 6). Credits to Markus Benning.
|
data/README.md
CHANGED
data/Rakefile
CHANGED
@@ -24,7 +24,7 @@ SimpleNavigation::Configuration.run do |navigation|
|
|
24
24
|
# If you need to add custom html around item names, you can define a proc that
|
25
25
|
# will be called with the name you pass in to the navigation.
|
26
26
|
# The example below shows how to wrap items spans.
|
27
|
-
#navigation.name_generator = Proc.new {|name, item|
|
27
|
+
#navigation.name_generator = Proc.new {|name, item| tag.span(name) }
|
28
28
|
|
29
29
|
# Specify if the auto highlight feature is turned on (globally, for the whole navigation). Defaults to true
|
30
30
|
#navigation.auto_highlight = true
|
@@ -45,6 +45,7 @@ SimpleNavigation::Configuration.run do |navigation|
|
|
45
45
|
# url - the address that the generated item links to. You can also use url_helpers (named routes, restful routes helper, url_for etc.)
|
46
46
|
# options - can be used to specify attributes that will be included in the rendered navigation item (e.g. id, class etc.)
|
47
47
|
# some special options that can be set:
|
48
|
+
# :html - Specifies html attributes that will be included in the rendered navigation item
|
48
49
|
# :if - Specifies a proc to call to determine if the item should
|
49
50
|
# be rendered (e.g. <tt>if: -> { current_user.admin? }</tt>). The
|
50
51
|
# proc should evaluate to a true or false value and is evaluated in the context of the view.
|
@@ -67,7 +68,7 @@ SimpleNavigation::Configuration.run do |navigation|
|
|
67
68
|
# You can also specify a condition-proc that needs to be fullfilled to display an item.
|
68
69
|
# Conditions are part of the options. They are evaluated in the context of the views,
|
69
70
|
# thus you can use all the methods and vars you have available in the views.
|
70
|
-
primary.item :key_3, 'Admin', url, class: 'special', if: -> { current_user.admin? }
|
71
|
+
primary.item :key_3, 'Admin', url, html: { class: 'special' }, if: -> { current_user.admin? }
|
71
72
|
primary.item :key_4, 'Account', url, unless: -> { logged_in? }
|
72
73
|
|
73
74
|
# you can also specify html attributes to attach to this particular level
|
@@ -5,7 +5,8 @@ module SimpleNavigation
|
|
5
5
|
attr_reader :key,
|
6
6
|
:name,
|
7
7
|
:sub_navigation,
|
8
|
-
:url
|
8
|
+
:url,
|
9
|
+
:options
|
9
10
|
|
10
11
|
# see ItemContainer#item
|
11
12
|
#
|
@@ -121,13 +122,13 @@ module SimpleNavigation
|
|
121
122
|
|
122
123
|
private
|
123
124
|
|
124
|
-
attr_accessor :container
|
125
|
-
:options
|
125
|
+
attr_accessor :container
|
126
126
|
|
127
127
|
attr_writer :key,
|
128
128
|
:name,
|
129
129
|
:sub_navigation,
|
130
|
-
:url
|
130
|
+
:url,
|
131
|
+
:options
|
131
132
|
|
132
133
|
def config
|
133
134
|
SimpleNavigation.config
|
@@ -186,7 +186,7 @@ module SimpleNavigation
|
|
186
186
|
before { adapter.instance_variable_set(:@template, nil) }
|
187
187
|
|
188
188
|
it 'raises an exception' do
|
189
|
-
expect{ adapter.context_for_eval }.to raise_error
|
189
|
+
expect{ adapter.context_for_eval }.to raise_error(RuntimeError, 'no context set for evaluation the config file')
|
190
190
|
end
|
191
191
|
end
|
192
192
|
end
|
@@ -9,7 +9,7 @@ describe SimpleNavigation::Adapters::Sinatra do
|
|
9
9
|
context "when adapter's context is not set" do
|
10
10
|
it 'raises an exception' do
|
11
11
|
allow(adapter).to receive_messages(context: nil)
|
12
|
-
expect{ adapter.context_for_eval }.to raise_error
|
12
|
+
expect{ adapter.context_for_eval }.to raise_error(RuntimeError, 'no context set for evaluation the config file')
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -23,7 +23,7 @@ module SimpleNavigation
|
|
23
23
|
|
24
24
|
context 'and no navigation.rb file is found in the paths' do
|
25
25
|
it 'raises an exception' do
|
26
|
-
expect{ finder.find(context) }.to raise_error
|
26
|
+
expect { finder.find(context) }.to raise_error(RuntimeError, /Config file 'navigation.rb' not found in path\(s\)/)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
end
|
@@ -41,7 +41,7 @@ module SimpleNavigation
|
|
41
41
|
|
42
42
|
context 'and no other_navigation.rb file is found in the paths' do
|
43
43
|
it 'raise an exception' do
|
44
|
-
expect{ finder.find(context) }.to raise_error
|
44
|
+
expect{ finder.find(context) }.to raise_error(RuntimeError, /Config file 'other_navigation.rb' not found in path\(s\)/)
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -89,7 +89,7 @@ module SimpleNavigation
|
|
89
89
|
let(:provider) { double(:provider) }
|
90
90
|
|
91
91
|
it 'raises an exception' do
|
92
|
-
expect{ config.items(provider) {} }.to raise_error
|
92
|
+
expect{ config.items(provider) {} }.to raise_error(RuntimeError, 'please specify either items_provider or block, but not both')
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
@@ -139,7 +139,7 @@ module SimpleNavigation
|
|
139
139
|
|
140
140
|
context 'when items_provider is not specified' do
|
141
141
|
it "raises an exception" do
|
142
|
-
expect{ config.items }.to raise_error
|
142
|
+
expect{ config.items }.to raise_error(RuntimeError, 'please specify either items_provider or block, but not both')
|
143
143
|
end
|
144
144
|
end
|
145
145
|
end
|
@@ -382,7 +382,7 @@ module SimpleNavigation
|
|
382
382
|
it 'raises an exception' do
|
383
383
|
expect{
|
384
384
|
controller.render_navigation(level: :invalid)
|
385
|
-
}.to raise_error
|
385
|
+
}.to raise_error(ArgumentError, 'Invalid navigation level: invalid')
|
386
386
|
end
|
387
387
|
end
|
388
388
|
end
|
@@ -408,7 +408,7 @@ module SimpleNavigation
|
|
408
408
|
before { allow(SimpleNavigation).to receive_messages(primary_navigation: nil) }
|
409
409
|
|
410
410
|
it 'raises an exception' do
|
411
|
-
expect{controller.render_navigation}.to raise_error
|
411
|
+
expect{controller.render_navigation}.to raise_error(RuntimeError, 'no primary navigation defined, either use a navigation config file or pass items directly to render_navigation')
|
412
412
|
end
|
413
413
|
end
|
414
414
|
|
@@ -346,7 +346,7 @@ module SimpleNavigation
|
|
346
346
|
let(:options) {{ highlights_on: :hello }}
|
347
347
|
|
348
348
|
it 'raises an exception' do
|
349
|
-
expect{ item.selected? }.to raise_error
|
349
|
+
expect{ item.selected? }.to raise_error(ArgumentError, ':highlights_on must be a Regexp, Proc or :subpath')
|
350
350
|
end
|
351
351
|
end
|
352
352
|
end
|
@@ -36,7 +36,7 @@ module SimpleNavigation
|
|
36
36
|
let(:provider) { double(:provider) }
|
37
37
|
|
38
38
|
it 'raises an exception' do
|
39
|
-
expect{ items_provider.items }.to raise_error
|
39
|
+
expect{ items_provider.items }.to raise_error(RuntimeError, /items_provider either must be a symbol .*, an object .* or an enumerable/)
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
@@ -32,7 +32,7 @@ module SimpleNavigation
|
|
32
32
|
|
33
33
|
describe '#render' do
|
34
34
|
it "raise an exception to indicate it's a subclass responsibility" do
|
35
|
-
expect{ base.render(:container) }.to raise_error
|
35
|
+
expect{ base.render(:container) }.to raise_error(NotImplementedError, 'subclass responsibility')
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
@@ -20,12 +20,15 @@ module SimpleNavigation
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
# FIXME: not sure if :as_hash returning an array makes sense...
|
24
23
|
context 'when the :as_hash option is true' do
|
25
24
|
let(:options) {{ level: :all, as_hash: true }}
|
26
25
|
|
27
|
-
it 'returns a hash' do
|
26
|
+
it 'returns every item as a hash' do
|
28
27
|
expect(output).to be_an Array
|
28
|
+
|
29
|
+
output.each do |item|
|
30
|
+
expect(item).to be_an Hash
|
31
|
+
end
|
29
32
|
end
|
30
33
|
|
31
34
|
it 'renders the selected page' do
|
@@ -34,6 +37,14 @@ module SimpleNavigation
|
|
34
37
|
end
|
35
38
|
end
|
36
39
|
|
40
|
+
context 'with options' do
|
41
|
+
it 'should render options for each item' do
|
42
|
+
parsed_output.each do |item|
|
43
|
+
expect(item).to have_key('options')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
37
48
|
context 'when a sub navigation item is selected' do
|
38
49
|
let(:invoices_item) do
|
39
50
|
parsed_output.find { |item| item['name'] == 'Invoices' }
|
@@ -104,7 +104,7 @@ describe SimpleNavigation do
|
|
104
104
|
|
105
105
|
context "when the config file for the context doesn't exists" do
|
106
106
|
it 'raises an exception' do
|
107
|
-
expect{ subject.load_config }.to raise_error
|
107
|
+
expect{ subject.load_config }.to raise_error(RuntimeError, /Config file 'navigation.rb' not found in path\(s\)/)
|
108
108
|
end
|
109
109
|
end
|
110
110
|
end
|
@@ -152,7 +152,7 @@ describe SimpleNavigation do
|
|
152
152
|
it 'raises an exception' do
|
153
153
|
expect{
|
154
154
|
subject.active_item_container_for('something else')
|
155
|
-
}.to raise_error
|
155
|
+
}.to raise_error(ArgumentError, 'Invalid navigation level: something else')
|
156
156
|
end
|
157
157
|
end
|
158
158
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -24,7 +24,10 @@ end
|
|
24
24
|
|
25
25
|
def setup_adapter_for(framework, context = double(:context))
|
26
26
|
if framework == :rails
|
27
|
-
|
27
|
+
# Rails 6.0 and 6.1 provide ActionView::Base.empty method that creates ActionView with an empty LookupContext.
|
28
|
+
# The method is not available on older versions
|
29
|
+
view_context = ActionView::Base.respond_to?(:empty) ? ActionView::Base.empty : ActionView::Base.new
|
30
|
+
allow(context).to receive_messages(view_context: view_context)
|
28
31
|
end
|
29
32
|
|
30
33
|
allow(SimpleNavigation).to receive_messages(framework: framework)
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple-navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andi Schacke
|
8
8
|
- Mark J. Titorenko
|
9
9
|
- Simon Courtois
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2022-05-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
@@ -177,6 +177,7 @@ files:
|
|
177
177
|
- gemfiles/rails-4-2-stable.gemfile
|
178
178
|
- gemfiles/rails-5-2-stable.gemfile
|
179
179
|
- gemfiles/rails-6-0-stable.gemfile
|
180
|
+
- gemfiles/rails-6-1-stable.gemfile
|
180
181
|
- generators/navigation_config/USAGE
|
181
182
|
- generators/navigation_config/navigation_config_generator.rb
|
182
183
|
- generators/navigation_config/templates/config/navigation.rb
|
@@ -241,7 +242,7 @@ homepage: http://github.com/codeplant/simple-navigation
|
|
241
242
|
licenses:
|
242
243
|
- MIT
|
243
244
|
metadata: {}
|
244
|
-
post_install_message:
|
245
|
+
post_install_message:
|
245
246
|
rdoc_options:
|
246
247
|
- "--inline-source"
|
247
248
|
- "--charset=UTF-8"
|
@@ -258,9 +259,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
259
|
- !ruby/object:Gem::Version
|
259
260
|
version: '0'
|
260
261
|
requirements: []
|
261
|
-
|
262
|
-
|
263
|
-
signing_key:
|
262
|
+
rubygems_version: 3.2.3
|
263
|
+
signing_key:
|
264
264
|
specification_version: 4
|
265
265
|
summary: simple-navigation is a ruby library for creating navigations (with multiple
|
266
266
|
levels) for your Rails, Sinatra or Padrino application.
|