simple-navigation 3.3.3 → 3.3.4
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/CHANGELOG +4 -0
- data/README +2 -2
- data/VERSION +1 -1
- data/lib/simple_navigation/core/item.rb +11 -5
- data/spec/lib/simple_navigation/core/item_spec.rb +32 -18
- metadata +43 -43
data/CHANGELOG
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
*3.3.4
|
2
|
+
|
3
|
+
* modified :highlights_on option to accept a Proc (as well as the existing Regexp form). This can be used to provide specific highlighting conditions inline. Thanks to superlou for sparking the idea for the concept.
|
4
|
+
|
1
5
|
*3.3.3
|
2
6
|
|
3
7
|
* Bugfix in Adapters::Sinatra#current_url? (compares unencoded URIs). Thanks to Matthew Gast.
|
data/README
CHANGED
@@ -10,7 +10,7 @@ Documentation:
|
|
10
10
|
http://wiki.github.com/andi/simple-navigation
|
11
11
|
|
12
12
|
RDoc:
|
13
|
-
|
13
|
+
Please checkout the repository and execute 'rake rdoc'.
|
14
14
|
|
15
15
|
Online Demo:
|
16
16
|
http://simple-navigation-demo.andischacke.com
|
@@ -18,5 +18,5 @@ Online Demo:
|
|
18
18
|
Discussion Group for Feedback and Questions
|
19
19
|
http://groups.google.com/group/simple-navigation
|
20
20
|
|
21
|
-
Copyright (c)
|
21
|
+
Copyright (c) 2011 Andi Schacke, released under the MIT license
|
22
22
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.3.
|
1
|
+
3.3.4
|
@@ -45,7 +45,7 @@ module SimpleNavigation
|
|
45
45
|
# * its url matches the url of the current request (auto highlighting)
|
46
46
|
#
|
47
47
|
def selected?
|
48
|
-
@selected = @selected || selected_by_config? || selected_by_subnav? ||
|
48
|
+
@selected = @selected || selected_by_config? || selected_by_subnav? || selected_by_condition?
|
49
49
|
end
|
50
50
|
|
51
51
|
# Returns the html-options hash for the item, i.e. the options specified for this item in the config-file.
|
@@ -76,10 +76,16 @@ module SimpleNavigation
|
|
76
76
|
end
|
77
77
|
|
78
78
|
# Returns true if the item's url matches the request's current url.
|
79
|
-
def
|
79
|
+
def selected_by_condition?
|
80
80
|
if highlights_on
|
81
|
-
|
82
|
-
|
81
|
+
case highlights_on
|
82
|
+
when Regexp
|
83
|
+
SimpleNavigation.request_uri =~ highlights_on
|
84
|
+
when Proc
|
85
|
+
highlights_on.call
|
86
|
+
else
|
87
|
+
raise ArgumentError, ':highlights_on must be a Regexp or Proc'
|
88
|
+
end
|
83
89
|
elsif auto_highlight?
|
84
90
|
!!(root_path_match? || SimpleNavigation.current_page?(url_without_anchor))
|
85
91
|
else
|
@@ -112,4 +118,4 @@ module SimpleNavigation
|
|
112
118
|
end
|
113
119
|
|
114
120
|
end
|
115
|
-
end
|
121
|
+
end
|
@@ -138,7 +138,7 @@ describe SimpleNavigation::Item do
|
|
138
138
|
it {@item.should be_selected}
|
139
139
|
it "should not evaluate the subnav or urls" do
|
140
140
|
@item.should_not_receive(:selected_by_subnav?)
|
141
|
-
@item.should_not_receive(:
|
141
|
+
@item.should_not_receive(:selected_by_condition?)
|
142
142
|
@item.selected?
|
143
143
|
end
|
144
144
|
end
|
@@ -156,15 +156,15 @@ describe SimpleNavigation::Item do
|
|
156
156
|
before(:each) do
|
157
157
|
@item.stub!(:selected_by_subnav? => false)
|
158
158
|
end
|
159
|
-
context 'selected by
|
159
|
+
context 'selected by condition' do
|
160
160
|
before(:each) do
|
161
|
-
@item.stub!(:
|
161
|
+
@item.stub!(:selected_by_condition? => true)
|
162
162
|
end
|
163
163
|
it {@item.should be_selected}
|
164
164
|
end
|
165
|
-
context 'not selected by
|
165
|
+
context 'not selected by condition' do
|
166
166
|
before(:each) do
|
167
|
-
@item.stub!(:
|
167
|
+
@item.stub!(:selected_by_condition? => false)
|
168
168
|
end
|
169
169
|
it {@item.should_not be_selected}
|
170
170
|
end
|
@@ -300,7 +300,7 @@ describe SimpleNavigation::Item do
|
|
300
300
|
end
|
301
301
|
end
|
302
302
|
|
303
|
-
describe '
|
303
|
+
describe 'selected_by_condition?' do
|
304
304
|
context ':highlights_on option is set' do
|
305
305
|
before(:each) do
|
306
306
|
@item.stub!(:highlights_on => /^\/current/)
|
@@ -308,25 +308,39 @@ describe SimpleNavigation::Item do
|
|
308
308
|
end
|
309
309
|
it "should not check for autohighlighting" do
|
310
310
|
@item.should_not_receive(:auto_highlight?)
|
311
|
-
@item.send(:
|
311
|
+
@item.send(:selected_by_condition?)
|
312
312
|
end
|
313
313
|
context ':highlights_on is a regexp' do
|
314
314
|
context 'regexp matches current_url' do
|
315
|
-
it {@item.send(:
|
315
|
+
it {@item.send(:selected_by_condition?).should be_true}
|
316
316
|
end
|
317
317
|
context 'regexp does not match current_url' do
|
318
318
|
before(:each) do
|
319
319
|
@item.stub!(:highlights_on => /^\/no_match/)
|
320
320
|
end
|
321
|
-
it {@item.send(:
|
321
|
+
it {@item.send(:selected_by_condition?).should be_false}
|
322
322
|
end
|
323
323
|
end
|
324
|
-
context ':highlights_on is
|
324
|
+
context ':highlights_on is a lambda' do
|
325
|
+
context 'truthy lambda results in selection' do
|
326
|
+
before(:each) do
|
327
|
+
@item.stub!(:highlights_on => lambda{true})
|
328
|
+
end
|
329
|
+
it {@item.send(:selected_by_condition?).should be_true}
|
330
|
+
end
|
331
|
+
context 'falsey lambda results in no selection' do
|
332
|
+
before(:each) do
|
333
|
+
@item.stub!(:highlights_on => lambda{false})
|
334
|
+
end
|
335
|
+
it {@item.send(:selected_by_condition?).should be_false}
|
336
|
+
end
|
337
|
+
end
|
338
|
+
context ':highlights_on is not a regexp or a proc' do
|
325
339
|
before(:each) do
|
326
340
|
@item.stub!(:highlights_on => "not a regexp")
|
327
341
|
end
|
328
342
|
it "should raise an error" do
|
329
|
-
lambda {@item.send(:
|
343
|
+
lambda {@item.send(:selected_by_condition?).should raise_error(ArgumentError)}
|
330
344
|
end
|
331
345
|
end
|
332
346
|
end
|
@@ -336,7 +350,7 @@ describe SimpleNavigation::Item do
|
|
336
350
|
end
|
337
351
|
it "should check for autohighlighting" do
|
338
352
|
@item.should_receive(:auto_highlight?)
|
339
|
-
@item.send(:
|
353
|
+
@item.send(:selected_by_condition?)
|
340
354
|
end
|
341
355
|
end
|
342
356
|
context 'auto_highlight is turned on' do
|
@@ -347,7 +361,7 @@ describe SimpleNavigation::Item do
|
|
347
361
|
before(:each) do
|
348
362
|
@item.stub!(:root_path_match? => true)
|
349
363
|
end
|
350
|
-
it {@item.send(:
|
364
|
+
it {@item.send(:selected_by_condition?).should be_true}
|
351
365
|
end
|
352
366
|
context 'root path does not match' do
|
353
367
|
before(:each) do
|
@@ -359,20 +373,20 @@ describe SimpleNavigation::Item do
|
|
359
373
|
end
|
360
374
|
it "should test with the item's url" do
|
361
375
|
@adapter.should_receive(:current_page?).with('url')
|
362
|
-
@item.send(:
|
376
|
+
@item.send(:selected_by_condition?)
|
363
377
|
end
|
364
378
|
it "should remove anchors before testing the item's url" do
|
365
379
|
@item.stub!(:url => 'url#anchor')
|
366
380
|
@adapter.should_receive(:current_page?).with('url')
|
367
|
-
@item.send(:
|
381
|
+
@item.send(:selected_by_condition?)
|
368
382
|
end
|
369
|
-
it {@item.send(:
|
383
|
+
it {@item.send(:selected_by_condition?).should be_true}
|
370
384
|
end
|
371
385
|
context 'no match' do
|
372
386
|
before(:each) do
|
373
387
|
@adapter.stub!(:current_page? => false)
|
374
388
|
end
|
375
|
-
it {@item.send(:
|
389
|
+
it {@item.send(:selected_by_condition?).should be_false}
|
376
390
|
end
|
377
391
|
end
|
378
392
|
end
|
@@ -380,7 +394,7 @@ describe SimpleNavigation::Item do
|
|
380
394
|
before(:each) do
|
381
395
|
@item.stub!(:auto_highlight? => false)
|
382
396
|
end
|
383
|
-
it {@item.send(:
|
397
|
+
it {@item.send(:selected_by_condition?).should be_false}
|
384
398
|
end
|
385
399
|
end
|
386
400
|
|
metadata
CHANGED
@@ -1,49 +1,50 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple-navigation
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 3.3.4
|
4
5
|
prerelease:
|
5
|
-
version: 3.3.3
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Andi Schacke
|
9
9
|
- Mark J. Titorenko
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2011-07-11 00:00:00.000000000 +01:00
|
14
|
+
default_executable:
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
17
17
|
name: rspec
|
18
|
-
|
19
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirement: &2152960620 !ruby/object:Gem::Requirement
|
20
19
|
none: false
|
21
|
-
requirements:
|
22
|
-
- -
|
23
|
-
- !ruby/object:Gem::Version
|
20
|
+
requirements:
|
21
|
+
- - ! '>='
|
22
|
+
- !ruby/object:Gem::Version
|
24
23
|
version: 2.0.1
|
25
24
|
type: :development
|
26
|
-
version_requirements: *id001
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: activesupport
|
29
25
|
prerelease: false
|
30
|
-
|
26
|
+
version_requirements: *2152960620
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: &2152959780 !ruby/object:Gem::Requirement
|
31
30
|
none: false
|
32
|
-
requirements:
|
33
|
-
- -
|
34
|
-
- !ruby/object:Gem::Version
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
35
34
|
version: 2.3.2
|
36
35
|
type: :runtime
|
37
|
-
|
38
|
-
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *2152959780
|
38
|
+
description: With the simple-navigation gem installed you can easily create multilevel
|
39
|
+
navigations for your Rails, Sinatra or Padrino applications. The navigation is defined
|
40
|
+
in a single configuration file. It supports automatic as well as explicit highlighting
|
41
|
+
of the currently active navigation through regular expressions.
|
39
42
|
email: andreas.schacke@gmail.com
|
40
43
|
executables: []
|
41
|
-
|
42
44
|
extensions: []
|
43
|
-
|
44
|
-
extra_rdoc_files:
|
45
|
+
extra_rdoc_files:
|
45
46
|
- README
|
46
|
-
files:
|
47
|
+
files:
|
47
48
|
- CHANGELOG
|
48
49
|
- README
|
49
50
|
- Rakefile
|
@@ -91,33 +92,32 @@ files:
|
|
91
92
|
- spec/lib/simple_navigation/rendering/renderer/text_spec.rb
|
92
93
|
- spec/lib/simple_navigation_spec.rb
|
93
94
|
- spec/spec_helper.rb
|
95
|
+
has_rdoc: true
|
94
96
|
homepage: http://github.com/andi/simple-navigation
|
95
97
|
licenses: []
|
96
|
-
|
97
98
|
post_install_message:
|
98
|
-
rdoc_options:
|
99
|
+
rdoc_options:
|
99
100
|
- --inline-source
|
100
101
|
- --charset=UTF-8
|
101
|
-
require_paths:
|
102
|
+
require_paths:
|
102
103
|
- lib
|
103
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
105
|
none: false
|
105
|
-
requirements:
|
106
|
-
- -
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
version:
|
109
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
111
|
none: false
|
111
|
-
requirements:
|
112
|
-
- -
|
113
|
-
- !ruby/object:Gem::Version
|
114
|
-
version:
|
112
|
+
requirements:
|
113
|
+
- - ! '>='
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
115
116
|
requirements: []
|
116
|
-
|
117
117
|
rubyforge_project: andi
|
118
|
-
rubygems_version: 1.
|
118
|
+
rubygems_version: 1.6.2
|
119
119
|
signing_key:
|
120
120
|
specification_version: 3
|
121
|
-
summary: simple-navigation is a ruby library for creating navigations (with multiple
|
121
|
+
summary: simple-navigation is a ruby library for creating navigations (with multiple
|
122
|
+
levels) for your Rails2, Rails3, Sinatra or Padrino application.
|
122
123
|
test_files: []
|
123
|
-
|