semantic_navigation 0.2.3 → 0.2.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/lib/semantic_navigation/core/base.rb +7 -1
- data/lib/semantic_navigation/core/mix_in/dsl_methods.rb +16 -12
- data/lib/semantic_navigation/version.rb +1 -1
- data/spec/lib/semantic_navigation/core/navigation_spec.rb +23 -22
- data/spec/lib/semantic_navigation/renderers/list_spec.rb +281 -252
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d11fbfc574d4f330af86cca8173569f75ee9327
|
4
|
+
data.tar.gz: 3124611a34e1d5a94174b978b5a2c08a11d48d26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f79196d81f87f41260903b52c6438b1e5373875074300aaaa6d7781c421b38c0efb45793d6da1c1bde6303767f8e723d98e1ae62207bf3b70e35173e4fa884fb
|
7
|
+
data.tar.gz: f5592c9a936c43ae524a1ca411e8ddfb0e340336435f9437a77828a2a2711f7e04dc2c0b593dd38be3092fb4387c10293962823c23c46ae7b346c73a8b9cff98
|
data/Gemfile.lock
CHANGED
@@ -6,7 +6,13 @@ module SemanticNavigation
|
|
6
6
|
attr_writer :render_if
|
7
7
|
|
8
8
|
def render_if
|
9
|
-
|
9
|
+
unless @render_if.nil?
|
10
|
+
@render_if.map do |bl|
|
11
|
+
view_object.instance_exec(self, &bl)
|
12
|
+
end.all?
|
13
|
+
else
|
14
|
+
true
|
15
|
+
end
|
10
16
|
end
|
11
17
|
|
12
18
|
def initialize(options, level)
|
@@ -5,16 +5,16 @@ module SemanticNavigation
|
|
5
5
|
|
6
6
|
def item(id, url=nil, options={}, &block)
|
7
7
|
options[:id] = id.to_sym
|
8
|
-
options[:render_if]
|
9
|
-
|
8
|
+
options[:render_if] = [*@render_if, options[:render_if], *@scope_render_if].compact
|
9
|
+
|
10
10
|
if url.is_a?(Array)
|
11
11
|
options[:url] = [url].flatten(1).map{|url| scope_url_params(decode_url(url))}
|
12
12
|
else
|
13
13
|
options[:url] = scope_url_params(decode_url(url))
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
options[:i18n_name] = @i18n_name
|
17
|
-
|
17
|
+
|
18
18
|
if block_given?
|
19
19
|
element = Node.new(options, @level+1)
|
20
20
|
element.instance_eval &block
|
@@ -34,21 +34,21 @@ module SemanticNavigation
|
|
34
34
|
'divider definition')
|
35
35
|
end
|
36
36
|
end
|
37
|
-
|
37
|
+
|
38
38
|
@sub_elements.push element
|
39
39
|
end
|
40
40
|
|
41
41
|
def header(id, options={})
|
42
42
|
options[:id] = id.to_sym
|
43
|
-
options[:render_if]
|
43
|
+
options[:render_if] = [options[:render_if], *@scope_render_if].compact
|
44
44
|
options[:url] = nil
|
45
45
|
options[:i18n_name] = @i18n_name
|
46
46
|
@sub_elements.push Leaf.new(options, @level+1)
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
def divider(options = {})
|
50
50
|
options[:id] = :divider
|
51
|
-
options[:render_if] ||=
|
51
|
+
options[:render_if] ||= [options[:render_if], *@scope_render_if].compact
|
52
52
|
options[:url] = nil
|
53
53
|
options[:i18n_name] = nil
|
54
54
|
options[:name] = nil
|
@@ -64,16 +64,20 @@ module SemanticNavigation
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def scope(options = {}, &block)
|
67
|
-
@
|
67
|
+
@scope_url ||= options[:url]
|
68
|
+
(@scope_render_if ||= []).push options[:render_if]
|
69
|
+
|
68
70
|
self.instance_eval &block
|
69
|
-
|
71
|
+
|
72
|
+
@scope_render_if.pop
|
73
|
+
@scope_url = {}
|
70
74
|
end
|
71
75
|
|
72
76
|
private
|
73
77
|
|
74
78
|
def scope_url_params(url)
|
75
79
|
if url.is_a? Hash
|
76
|
-
(@
|
80
|
+
(@scope_url || {}).merge(url)
|
77
81
|
else
|
78
82
|
url
|
79
83
|
end
|
@@ -87,7 +91,7 @@ module SemanticNavigation
|
|
87
91
|
end
|
88
92
|
end
|
89
93
|
decoded_url || url
|
90
|
-
end
|
94
|
+
end
|
91
95
|
|
92
96
|
end
|
93
97
|
end
|
@@ -7,7 +7,7 @@ describe SemanticNavigation::Core::Navigation do
|
|
7
7
|
it 'creates instance of navigation with level 0 and empty subitems' do
|
8
8
|
navigation = SemanticNavigation::Core::Navigation.new({})
|
9
9
|
navigation.level.should == 0
|
10
|
-
|
10
|
+
|
11
11
|
expect(navigation.sub_elements).to be_empty
|
12
12
|
end
|
13
13
|
|
@@ -15,13 +15,13 @@ describe SemanticNavigation::Core::Navigation do
|
|
15
15
|
navigation = SemanticNavigation::Core::Navigation.new :id => :some_id,
|
16
16
|
:classes => [:one, :two]
|
17
17
|
navigation.id.should == :some_id
|
18
|
-
|
18
|
+
|
19
19
|
expect(navigation.classes).to eq [:one, :two]
|
20
20
|
end
|
21
21
|
|
22
22
|
it 'creates instance and save unintended properties' do
|
23
23
|
navigation = SemanticNavigation::Core::Navigation.new :some_attribute => :some_value
|
24
|
-
|
24
|
+
|
25
25
|
expect(navigation.instance_variable_get("@some_attribute")).to eq :some_value
|
26
26
|
end
|
27
27
|
|
@@ -35,7 +35,7 @@ describe SemanticNavigation::Core::Navigation do
|
|
35
35
|
it "receives item method and make the leaf" do
|
36
36
|
@navigation.item :some_id, 'some_url'
|
37
37
|
@navigation.sub_elements.size.should == 1
|
38
|
-
|
38
|
+
|
39
39
|
expect(@navigation.sub_elements.first).to be_is_a(SemanticNavigation::Core::Leaf)
|
40
40
|
end
|
41
41
|
|
@@ -44,14 +44,14 @@ describe SemanticNavigation::Core::Navigation do
|
|
44
44
|
item :leaf_id, 'leaf_url'
|
45
45
|
end
|
46
46
|
@navigation.sub_elements.size.should == 1
|
47
|
-
|
47
|
+
|
48
48
|
expect(@navigation.sub_elements.first).to be_is_a(SemanticNavigation::Core::Node)
|
49
49
|
end
|
50
50
|
|
51
51
|
it "receives item method with array of urls and save them properly" do
|
52
52
|
@navigation.item :leaf_id, ['string/url',"controller#action",:symbolic_name,['array','like','url']]
|
53
53
|
urls = @navigation.sub_elements.first.instance_variable_get("@url")
|
54
|
-
|
54
|
+
|
55
55
|
expect(urls).to eq ['string/url',
|
56
56
|
{:controller => 'controller', :action => 'action'},
|
57
57
|
:symbolic_name,
|
@@ -60,14 +60,14 @@ describe SemanticNavigation::Core::Navigation do
|
|
60
60
|
|
61
61
|
it "receives item with Proc url and decode it to normal url (leaf)" do
|
62
62
|
@navigation.item :leaf_id, proc{'some' + 'func'}
|
63
|
-
|
63
|
+
|
64
64
|
expect(@navigation.sub_elements.first.url).to eq 'somefunc'
|
65
65
|
end
|
66
66
|
|
67
67
|
it 'receives item with array of urls one of each is a Proc (leaf)' do
|
68
68
|
@navigation.item :leaf_id, ['string_url',proc{'some' + 'func'}]
|
69
69
|
urls = @navigation.sub_elements.first.send :urls
|
70
|
-
|
70
|
+
|
71
71
|
expect(urls).to eq ['string_url', 'somefunc']
|
72
72
|
end
|
73
73
|
|
@@ -76,7 +76,7 @@ describe SemanticNavigation::Core::Navigation do
|
|
76
76
|
item :first_value, '#'
|
77
77
|
item :second_value, '#'
|
78
78
|
end
|
79
|
-
|
79
|
+
|
80
80
|
expect(@navigation.sub_elements.first.url).to eq 'somefunc'
|
81
81
|
end
|
82
82
|
|
@@ -86,7 +86,7 @@ describe SemanticNavigation::Core::Navigation do
|
|
86
86
|
item :second_value, '#'
|
87
87
|
end
|
88
88
|
urls = @navigation.sub_elements.first.send :urls
|
89
|
-
|
89
|
+
|
90
90
|
expect(urls).to eq ['string_url', 'somefunc']
|
91
91
|
end
|
92
92
|
end
|
@@ -136,7 +136,7 @@ describe SemanticNavigation::Core::Navigation do
|
|
136
136
|
|
137
137
|
@navigation.item :some_id, 'controller#action'
|
138
138
|
@navigation.sub_elements.size.should == 1
|
139
|
-
|
139
|
+
|
140
140
|
expect(@navigation.sub_elements.first.url).to eq({:controller => "controller", :action => "action"})
|
141
141
|
end
|
142
142
|
end
|
@@ -145,17 +145,17 @@ describe SemanticNavigation::Core::Navigation do
|
|
145
145
|
context :returns do
|
146
146
|
it 'true if render_if proc is nil' do
|
147
147
|
navigation = SemanticNavigation::Core::Navigation.new({})
|
148
|
-
|
148
|
+
|
149
149
|
expect(navigation.render_if).to eq true
|
150
150
|
end
|
151
151
|
|
152
152
|
it 'true if render_if proc return true' do
|
153
|
-
navigation = SemanticNavigation::Core::Navigation.new({:render_if => proc{true}})
|
153
|
+
navigation = SemanticNavigation::Core::Navigation.new({:render_if => [proc{true}]})
|
154
154
|
expect(navigation.render_if).to eq true
|
155
155
|
end
|
156
156
|
|
157
157
|
it 'false if render_if proc return false' do
|
158
|
-
navigation = SemanticNavigation::Core::Navigation.new({:render_if => proc{false}})
|
158
|
+
navigation = SemanticNavigation::Core::Navigation.new({:render_if => [proc{false}]})
|
159
159
|
expect(navigation.render_if).to eq false
|
160
160
|
end
|
161
161
|
|
@@ -163,9 +163,9 @@ describe SemanticNavigation::Core::Navigation do
|
|
163
163
|
|
164
164
|
context :passes do
|
165
165
|
it 'self to passed proc' do
|
166
|
-
navigation = SemanticNavigation::Core::Navigation.new({:id => :some_id, :render_if => proc{|o| o.id == :some_id}})
|
166
|
+
navigation = SemanticNavigation::Core::Navigation.new({:id => :some_id, :render_if => [proc{|o| o.id == :some_id}]})
|
167
167
|
expect(navigation.render_if).to eq true
|
168
|
-
navigation = SemanticNavigation::Core::Navigation.new({:id => :another_id, :render_if => proc{|o| o.id == :some_id}})
|
168
|
+
navigation = SemanticNavigation::Core::Navigation.new({:id => :another_id, :render_if => [proc{|o| o.id == :some_id}]})
|
169
169
|
expect(navigation.render_if).to eq false
|
170
170
|
end
|
171
171
|
end
|
@@ -268,11 +268,11 @@ describe SemanticNavigation::Core::Navigation do
|
|
268
268
|
item :first_item, "controller1#action"
|
269
269
|
item :second_item, "controller2#action"
|
270
270
|
end
|
271
|
-
|
271
|
+
|
272
272
|
url1 = @navigation.sub_elements[0].instance_variable_get(:"@url")
|
273
273
|
url1.should == {controller: 'controller1', action: 'action', some_attr: 'some_attr'}
|
274
274
|
url2 = @navigation.sub_elements[1].instance_variable_get(:"@url")
|
275
|
-
url2.should == {controller: 'controller2', action: 'action', some_attr: 'some_attr'}
|
275
|
+
url2.should == {controller: 'controller2', action: 'action', some_attr: 'some_attr'}
|
276
276
|
end
|
277
277
|
|
278
278
|
it 'scopes array of urls' do
|
@@ -306,7 +306,7 @@ describe SemanticNavigation::Core::Navigation do
|
|
306
306
|
end
|
307
307
|
|
308
308
|
@navigation.sub_elements[0..1].each do |element|
|
309
|
-
element.instance_variable_get(:"@render_if").should == some_condition
|
309
|
+
element.instance_variable_get(:"@render_if").should == [some_condition]
|
310
310
|
end
|
311
311
|
end
|
312
312
|
|
@@ -319,7 +319,7 @@ describe SemanticNavigation::Core::Navigation do
|
|
319
319
|
@navigation.item :third_item, "controller3#action"
|
320
320
|
|
321
321
|
last_item = @navigation.sub_elements.last
|
322
|
-
last_item.instance_variable_get(:"@render_if").should ==
|
322
|
+
last_item.instance_variable_get(:"@render_if").should == []
|
323
323
|
end
|
324
324
|
|
325
325
|
it "doesnt override defined scopes" do
|
@@ -333,8 +333,8 @@ describe SemanticNavigation::Core::Navigation do
|
|
333
333
|
first_item = @navigation.sub_elements.first
|
334
334
|
second_item = @navigation.sub_elements.last
|
335
335
|
|
336
|
-
first_item.instance_variable_get(:"@render_if").should == some_condition2
|
337
|
-
second_item.instance_variable_get(:"@render_if").should == some_condition
|
336
|
+
first_item.instance_variable_get(:"@render_if").should == [some_condition2, some_condition]
|
337
|
+
second_item.instance_variable_get(:"@render_if").should == [some_condition]
|
338
338
|
end
|
339
339
|
end
|
340
340
|
|
@@ -346,4 +346,5 @@ describe SemanticNavigation::Core::Navigation do
|
|
346
346
|
lambda{@navigation.unknow_method}.should raise_exception
|
347
347
|
end
|
348
348
|
end
|
349
|
+
|
349
350
|
end
|
@@ -16,291 +16,320 @@ describe SemanticNavigation::Renderers::List do
|
|
16
16
|
@view_object = ViewObject.new
|
17
17
|
end
|
18
18
|
|
19
|
-
it 'empty ul tag for empty navigation' do
|
19
|
+
# it 'empty ul tag for empty navigation' do
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
21
|
+
# @configuration.run do
|
22
|
+
# navigate :menu do
|
23
|
+
# end
|
24
|
+
# end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
end
|
26
|
+
# result = @view_object.navigation_for :menu
|
27
|
+
# result.should == "<ul class=\"list\" id=\"menu\"><\/ul>"
|
28
|
+
# end
|
29
29
|
|
30
|
-
it 'one level navigation' do
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
30
|
+
# it 'one level navigation' do
|
31
|
+
# @configuration.run do
|
32
|
+
# navigate :menu do
|
33
|
+
# item :url1, 'url1', :name => 'url1'
|
34
|
+
# item :url2, 'url2', :name => 'url2'
|
35
|
+
# end
|
36
|
+
# end
|
37
37
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
end
|
38
|
+
# result = @view_object.navigation_for :menu
|
39
|
+
# result.should == ["<ul class=\"list\" id=\"menu\">",
|
40
|
+
# "<li id=\"url1\">",
|
41
|
+
# "<a href=\"url1\" id=\"url1\">",
|
42
|
+
# "url1",
|
43
|
+
# "</a>",
|
44
|
+
# "</li>",
|
45
|
+
# "<li id=\"url2\">",
|
46
|
+
# "<a href=\"url2\" id=\"url2\">",
|
47
|
+
# "url2",
|
48
|
+
# "</a>",
|
49
|
+
# "</li>",
|
50
|
+
# "</ul>"].join
|
51
|
+
# end
|
52
52
|
|
53
|
-
it 'one level navigation with specific menu tag' do
|
54
|
-
|
53
|
+
# it 'one level navigation with specific menu tag' do
|
54
|
+
# @configuration.run do
|
55
55
|
|
56
|
-
|
56
|
+
# register_renderer :my_list, :list
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
58
|
+
# styles_for :my_list do
|
59
|
+
# menu_tag :ol
|
60
|
+
# end
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
62
|
+
# navigate :menu do
|
63
|
+
# item :url1, 'url1', :name => 'url1'
|
64
|
+
# item :url2, 'url2', :name => 'url2'
|
65
|
+
# end
|
66
|
+
# end
|
67
67
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
end
|
68
|
+
# result = @view_object.navigation_for :menu, as: :my_list
|
69
|
+
# result.should == ["<ol class=\"list\" id=\"menu\">",
|
70
|
+
# "<li id=\"url1\">",
|
71
|
+
# "<a href=\"url1\" id=\"url1\">",
|
72
|
+
# "url1",
|
73
|
+
# "</a>",
|
74
|
+
# "</li>",
|
75
|
+
# "<li id=\"url2\">",
|
76
|
+
# "<a href=\"url2\" id=\"url2\">",
|
77
|
+
# "url2",
|
78
|
+
# "</a>",
|
79
|
+
# "</li>",
|
80
|
+
# "</ol>"].join
|
81
|
+
# end
|
82
82
|
|
83
|
-
it 'one level navigation with specific menu tag' do
|
84
|
-
|
83
|
+
# it 'one level navigation with specific menu tag' do
|
84
|
+
# @configuration.run do
|
85
85
|
|
86
|
-
|
86
|
+
# register_renderer :my_list, :list
|
87
87
|
|
88
|
-
|
89
|
-
|
90
|
-
|
88
|
+
# styles_for :my_list do
|
89
|
+
# menu_tag :ol
|
90
|
+
# end
|
91
91
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
92
|
+
# navigate :menu do
|
93
|
+
# item :url1, 'url1', :name => 'url1' do
|
94
|
+
# item :url2, 'url2', :name => 'url2'
|
95
|
+
# end
|
96
|
+
# end
|
97
|
+
# end
|
98
98
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
end
|
99
|
+
# result = @view_object.navigation_for :menu, as: :my_list
|
100
|
+
# result.should == ["<ol class=\"list\" id=\"menu\">",
|
101
|
+
# "<li id=\"url1\">",
|
102
|
+
# "<a href=\"url1\" id=\"url1\">",
|
103
|
+
# "url1",
|
104
|
+
# "</a>",
|
105
|
+
# "<ol id=\"url1\">",
|
106
|
+
# "<li id=\"url2\">",
|
107
|
+
# "<a href=\"url2\" id=\"url2\">",
|
108
|
+
# "url2",
|
109
|
+
# "</a>",
|
110
|
+
# "</li>",
|
111
|
+
# "</ol>",
|
112
|
+
# "</li>",
|
113
|
+
# "</ol>"].join
|
114
|
+
# end
|
115
115
|
|
116
|
-
it 'one multilevel navigation' do
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
116
|
+
# it 'one multilevel navigation' do
|
117
|
+
# @configuration.run do
|
118
|
+
# navigate :menu do
|
119
|
+
# item :url1, 'url1', :name => 'url1' do
|
120
|
+
# item :suburl1, 'suburl1', :name => 'suburl1'
|
121
|
+
# end
|
122
|
+
# item :url2, 'url2', :name => 'url2' do
|
123
|
+
# item :suburl2, 'suburl2', :name => 'suburl2'
|
124
|
+
# end
|
125
|
+
# end
|
126
|
+
# end
|
127
127
|
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
end
|
128
|
+
# result = @view_object.navigation_for :menu
|
129
|
+
# result.should == ["<ul class=\"list\" id=\"menu\">",
|
130
|
+
# "<li id=\"url1\">",
|
131
|
+
# "<a href=\"url1\" id=\"url1\">",
|
132
|
+
# "url1",
|
133
|
+
# "</a>",
|
134
|
+
# "<ul id=\"url1\">",
|
135
|
+
# "<li id=\"suburl1\">",
|
136
|
+
# "<a href=\"suburl1\" id=\"suburl1\">",
|
137
|
+
# "suburl1",
|
138
|
+
# "</a>",
|
139
|
+
# "</li>",
|
140
|
+
# "</ul>",
|
141
|
+
# "</li>",
|
142
|
+
# "<li id=\"url2\">",
|
143
|
+
# "<a href=\"url2\" id=\"url2\">",
|
144
|
+
# "url2",
|
145
|
+
# "</a>",
|
146
|
+
# "<ul id=\"url2\">",
|
147
|
+
# "<li id=\"suburl2\">",
|
148
|
+
# "<a href=\"suburl2\" id=\"suburl2\">",
|
149
|
+
# "suburl2",
|
150
|
+
# "</a>",
|
151
|
+
# "</li>",
|
152
|
+
# "</ul>",
|
153
|
+
# "</li>",
|
154
|
+
# "</ul>"].join
|
155
|
+
# end
|
156
156
|
|
157
|
-
it 'only root level' do
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
157
|
+
# it 'only root level' do
|
158
|
+
# @configuration.run do
|
159
|
+
# navigate :menu do
|
160
|
+
# item :url1, 'url1', :name => 'url1' do
|
161
|
+
# item :suburl1, 'suburl1', :name => 'suburl1'
|
162
|
+
# end
|
163
|
+
# item :url2, 'url2', :name => 'url2' do
|
164
|
+
# item :suburl2, 'suburl2', :name => 'suburl2'
|
165
|
+
# end
|
166
|
+
# end
|
167
|
+
# end
|
168
168
|
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
end
|
169
|
+
# result = @view_object.navigation_for :menu, :level => 0
|
170
|
+
# result.should == ["<ul class=\"list\" id=\"menu\">",
|
171
|
+
# "<li id=\"url1\">",
|
172
|
+
# "<a href=\"url1\" id=\"url1\">",
|
173
|
+
# "url1",
|
174
|
+
# "</a>",
|
175
|
+
# "</li>",
|
176
|
+
# "<li id=\"url2\">",
|
177
|
+
# "<a href=\"url2\" id=\"url2\">",
|
178
|
+
# "url2",
|
179
|
+
# "</a>",
|
180
|
+
# "</li>",
|
181
|
+
# "</ul>"].join
|
182
|
+
# end
|
183
183
|
|
184
|
-
it 'second level if some item of first level is active' do
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
184
|
+
# it 'second level if some item of first level is active' do
|
185
|
+
# @configuration.run do
|
186
|
+
# navigate :menu do
|
187
|
+
# item :url1, 'url1', :name => 'url1' do
|
188
|
+
# item :suburl1, 'suburl1', :name => 'suburl1'
|
189
|
+
# end
|
190
|
+
# item :url2, 'url2', :name => 'url2' do
|
191
|
+
# item :suburl2, 'suburl2', :name => 'suburl2'
|
192
|
+
# end
|
193
|
+
# end
|
194
|
+
# end
|
195
195
|
|
196
|
-
|
196
|
+
# @view_object.should_receive(:current_page?).and_return(false, true, false, false)
|
197
197
|
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
end
|
198
|
+
# result = @view_object.navigation_for :menu, :level => 1
|
199
|
+
# result.should == ["<ul class=\"list active\" id=\"menu\">",
|
200
|
+
# "<li id=\"suburl1\">",
|
201
|
+
# "<a href=\"suburl1\" id=\"suburl1\">",
|
202
|
+
# "suburl1",
|
203
|
+
# "</a>",
|
204
|
+
# "</li>",
|
205
|
+
# "</ul>"].join
|
206
|
+
# end
|
207
207
|
|
208
|
-
it 'the exact levels' do
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
208
|
+
# it 'the exact levels' do
|
209
|
+
# @configuration.run do
|
210
|
+
# navigate :menu do
|
211
|
+
# item :url1, 'url1', :name => 'url1' do
|
212
|
+
# item :suburl1, 'suburl1', :name => 'suburl1' do
|
213
|
+
# item :subsub1, 'subsub1', :name => 'subsub1'
|
214
|
+
# end
|
215
|
+
# end
|
216
|
+
# item :url2, 'url2', :name => 'url2' do
|
217
|
+
# item :suburl2, 'suburl2', :name => 'suburl2' do
|
218
|
+
# item :subsub2, 'subsub2', :name => 'subsub2'
|
219
|
+
# end
|
220
|
+
# end
|
221
|
+
# end
|
222
|
+
# end
|
223
223
|
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
end
|
224
|
+
# result = @view_object.navigation_for :menu, :levels => 0..1
|
225
|
+
# result.should == ["<ul class=\"list\" id=\"menu\">",
|
226
|
+
# "<li id=\"url1\">",
|
227
|
+
# "<a href=\"url1\" id=\"url1\">",
|
228
|
+
# "url1",
|
229
|
+
# "</a>",
|
230
|
+
# "<ul id=\"url1\">",
|
231
|
+
# "<li id=\"suburl1\">",
|
232
|
+
# "<a href=\"suburl1\" id=\"suburl1\">",
|
233
|
+
# "suburl1",
|
234
|
+
# "</a>",
|
235
|
+
# "</li>",
|
236
|
+
# "</ul>",
|
237
|
+
# "</li>",
|
238
|
+
# "<li id=\"url2\">",
|
239
|
+
# "<a href=\"url2\" id=\"url2\">",
|
240
|
+
# "url2",
|
241
|
+
# "</a>",
|
242
|
+
# "<ul id=\"url2\">",
|
243
|
+
# "<li id=\"suburl2\">",
|
244
|
+
# "<a href=\"suburl2\" id=\"suburl2\">",
|
245
|
+
# "suburl2",
|
246
|
+
# "</a>",
|
247
|
+
# "</li>",
|
248
|
+
# "</ul>",
|
249
|
+
# "</li>",
|
250
|
+
# "</ul>"].join
|
251
|
+
# end
|
252
252
|
|
253
|
-
it 'navigation except some item' do
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
253
|
+
# it 'navigation except some item' do
|
254
|
+
# @configuration.run do
|
255
|
+
# navigate :menu do
|
256
|
+
# item :url1, 'url1', :name => 'url1' do
|
257
|
+
# item :suburl1, 'suburl1', :name => 'suburl1'
|
258
|
+
# end
|
259
|
+
# item :url2, 'url2', :name => 'url2' do
|
260
|
+
# item :suburl2, 'suburl2', :name => 'suburl2'
|
261
|
+
# end
|
262
|
+
# end
|
263
|
+
# end
|
264
264
|
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
end
|
265
|
+
# result = @view_object.navigation_for :menu, :except_for => [:url1]
|
266
|
+
# result.should == ["<ul class=\"list\" id=\"menu\">",
|
267
|
+
# "<li id=\"url2\">",
|
268
|
+
# "<a href=\"url2\" id=\"url2\">",
|
269
|
+
# "url2",
|
270
|
+
# "</a>",
|
271
|
+
# "<ul id=\"url2\">",
|
272
|
+
# "<li id=\"suburl2\">",
|
273
|
+
# "<a href=\"suburl2\" id=\"suburl2\">",
|
274
|
+
# "suburl2",
|
275
|
+
# "</a>",
|
276
|
+
# "</li>",
|
277
|
+
# "</ul>",
|
278
|
+
# "</li>",
|
279
|
+
# "</ul>"].join
|
280
|
+
# end
|
281
|
+
|
282
|
+
# it 'navigation except some items' do
|
283
|
+
# @configuration.run do
|
284
|
+
# navigate :menu do
|
285
|
+
# item :url1, 'url1', :name => 'url1' do
|
286
|
+
# item :suburl1, 'suburl1', :name => 'suburl1'
|
287
|
+
# end
|
288
|
+
# item :url2, 'url2', :name => 'url2' do
|
289
|
+
# item :suburl2, 'suburl2', :name => 'suburl2'
|
290
|
+
# end
|
291
|
+
# end
|
292
|
+
# end
|
293
|
+
|
294
|
+
# result = @view_object.navigation_for :menu, :except_for => [:suburl1,:url2]
|
295
|
+
# result.should == ["<ul class=\"list\" id=\"menu\">",
|
296
|
+
# "<li id=\"url1\">",
|
297
|
+
# "<a href=\"url1\" id=\"url1\">",
|
298
|
+
# "url1",
|
299
|
+
# "</a>",
|
300
|
+
# "<ul id=\"url1\">",
|
301
|
+
# "</ul>",
|
302
|
+
# "</li>",
|
303
|
+
# "</ul>"].join
|
304
|
+
# end
|
281
305
|
|
282
|
-
it '
|
306
|
+
it 'considers scopes' do
|
307
|
+
allow(@view_object).to receive(:role?).with('manager').and_return false
|
308
|
+
allow(@view_object).to receive(:role?).with('trader').and_return true
|
283
309
|
@configuration.run do
|
284
310
|
navigate :menu do
|
285
|
-
item :
|
286
|
-
item :suburl1, 'suburl1', :name => 'suburl1'
|
311
|
+
item :trader_space, '#', render_if: proc{role?('trader')} do
|
287
312
|
end
|
288
|
-
|
289
|
-
|
313
|
+
|
314
|
+
scope render_if: proc{role?('manager')} do
|
315
|
+
divider
|
316
|
+
item :manager_space, '#' do
|
317
|
+
item :one, 'url1'
|
318
|
+
item :two, 'url2'
|
319
|
+
end
|
290
320
|
end
|
291
321
|
end
|
292
322
|
end
|
293
323
|
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
"</li>",
|
303
|
-
"</ul>"].join
|
324
|
+
allow(@view_object).to receive(:current_page?).and_return false
|
325
|
+
allow(@view_object).to receive(:current_page?).with("url1").and_return true
|
326
|
+
|
327
|
+
result = @view_object.navigation_for :menu, from_level: 1
|
328
|
+
result.should == [
|
329
|
+
"<ul class=\"list active\" id=\"menu\">",
|
330
|
+
"</ul>"
|
331
|
+
].join
|
304
332
|
end
|
333
|
+
|
305
334
|
end
|
306
335
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semantic_navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Gribovski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|