semantic_navigation 0.1.1 → 0.1.3
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/.editorconfig +14 -0
- data/.gitignore +2 -0
- data/.travis.yml +10 -2
- data/Appraisals +7 -0
- data/Gemfile +1 -1
- data/MIT-LICENSE +20 -0
- data/README.md +31 -20
- data/Rakefile +2 -1
- data/TODO +14 -0
- data/gemfiles/3.2.gemfile +7 -0
- data/gemfiles/3.2.gemfile.lock +112 -0
- data/gemfiles/4.0.gemfile +7 -0
- data/gemfiles/4.0.gemfile.lock +107 -0
- data/lib/generators/semantic_navigation/breadcrumb_renderer/templates/breadcrumb_renderer.rb +5 -5
- data/lib/generators/semantic_navigation/list_renderer/list_renderer_generator.rb +0 -1
- data/lib/generators/semantic_navigation/list_renderer/templates/list_renderer.rb +4 -4
- data/lib/semantic_navigation.rb +30 -0
- data/lib/semantic_navigation/configuration.rb +8 -9
- data/lib/semantic_navigation/core.rb +8 -6
- data/lib/semantic_navigation/core/leaf.rb +2 -2
- data/lib/semantic_navigation/core/mix_in/name_methods.rb +24 -0
- data/lib/semantic_navigation/core/mix_in/url_methods.rb +25 -0
- data/lib/semantic_navigation/core/navigation.rb +8 -2
- data/lib/semantic_navigation/core/node.rb +2 -2
- data/lib/semantic_navigation/deprecations/renderers/acts_as_breadcrumb.rb +14 -0
- data/lib/semantic_navigation/deprecations/renderers/acts_as_list.rb +12 -0
- data/lib/semantic_navigation/deprecations/renderers/render_helpers.rb +14 -0
- data/lib/semantic_navigation/helper_methods.rb +8 -4
- data/lib/semantic_navigation/railtie.rb +9 -19
- data/lib/semantic_navigation/renderers.rb +15 -8
- data/lib/semantic_navigation/renderers/bread_crumb.rb +6 -6
- data/lib/semantic_navigation/renderers/list.rb +6 -6
- data/lib/semantic_navigation/renderers/mix_in/acts_as_breadcrumb.rb +43 -0
- data/lib/semantic_navigation/renderers/mix_in/acts_as_list.rb +49 -0
- data/lib/semantic_navigation/renderers/mix_in/render_helpers.rb +110 -0
- data/lib/semantic_navigation/twitter_bootstrap/breadcrumb.rb +5 -5
- data/lib/semantic_navigation/twitter_bootstrap/list.rb +2 -2
- data/lib/semantic_navigation/twitter_bootstrap/tabs.rb +2 -2
- data/lib/semantic_navigation/version.rb +1 -1
- data/semantic_navigation.gemspec +3 -2
- data/spec/lib/semantic_navigation/configuration_spec.rb +29 -24
- data/spec/lib/semantic_navigation/core/leaf_spec.rb +121 -114
- data/spec/lib/semantic_navigation/core/navigation_spec.rb +81 -76
- data/spec/lib/semantic_navigation/core/node_spec.rb +52 -49
- data/spec/lib/semantic_navigation/helper_methods_spec.rb +47 -42
- data/spec/lib/semantic_navigation/renderers/bread_crumb_spec.rb +191 -187
- data/spec/lib/semantic_navigation/renderers/deprecations_spec.rb +67 -0
- data/spec/lib/semantic_navigation/renderers/list_spec.rb +260 -258
- data/spec/lib/semantic_navigation/twitter_bootstrap/breadcrumb_spec.rb +163 -159
- data/spec/lib/semantic_navigation/twitter_bootstrap/list_spec.rb +263 -262
- data/spec/lib/semantic_navigation/twitter_bootstrap/tabs_spec.rb +269 -266
- data/spec/spec_helper.rb +6 -0
- metadata +41 -13
- data/gemfiles/rails3 +0 -7
- data/lib/semantic_navigation/core/name_methods.rb +0 -24
- data/lib/semantic_navigation/core/url_methods.rb +0 -24
- data/lib/semantic_navigation/renderers/acts_as_breadcrumb.rb +0 -42
- data/lib/semantic_navigation/renderers/acts_as_list.rb +0 -48
- data/lib/semantic_navigation/renderers/render_helpers.rb +0 -109
data/spec/spec_helper.rb
CHANGED
@@ -2,14 +2,20 @@ require 'rspec'
|
|
2
2
|
require 'rails'
|
3
3
|
require 'action_view'
|
4
4
|
require 'simplecov'
|
5
|
+
|
5
6
|
SimpleCov.start do
|
6
7
|
add_filter '/spec/'
|
7
8
|
add_group "Core", "lib/semantic_navigation/core"
|
8
9
|
add_group "Renderers", "lib/semantic_navigation/renderers"
|
9
10
|
add_group "Twitter Bootstrap Renderer", "lib/semantic_navigation/twitter_bootstrap"
|
10
11
|
end
|
12
|
+
|
11
13
|
require 'semantic_navigation'
|
12
14
|
|
15
|
+
SemanticNavigation::Configuration.run do |c|
|
16
|
+
c.display_deprecation_messages = false
|
17
|
+
end
|
18
|
+
|
13
19
|
RSpec.configure do |config|
|
14
20
|
config.color_enabled = true
|
15
21
|
config.formatter = 'documentation'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semantic_navigation
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-10-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -43,6 +43,22 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: appraisal
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
63
|
name: rails
|
48
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,7 +66,7 @@ dependencies:
|
|
50
66
|
requirements:
|
51
67
|
- - ! '>='
|
52
68
|
- !ruby/object:Gem::Version
|
53
|
-
version: 3.
|
69
|
+
version: 3.2.0
|
54
70
|
type: :runtime
|
55
71
|
prerelease: false
|
56
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -58,7 +74,7 @@ dependencies:
|
|
58
74
|
requirements:
|
59
75
|
- - ! '>='
|
60
76
|
- !ruby/object:Gem::Version
|
61
|
-
version: 3.
|
77
|
+
version: 3.2.0
|
62
78
|
description: ! "Simply and customizable navigation in the Ruby on Rails 3 application.\n
|
63
79
|
\ Predefined bootstrap renderers"
|
64
80
|
email:
|
@@ -67,13 +83,20 @@ executables: []
|
|
67
83
|
extensions: []
|
68
84
|
extra_rdoc_files: []
|
69
85
|
files:
|
86
|
+
- .editorconfig
|
70
87
|
- .gitignore
|
71
88
|
- .travis.yml
|
89
|
+
- Appraisals
|
72
90
|
- Changelog.md
|
73
91
|
- Gemfile
|
92
|
+
- MIT-LICENSE
|
74
93
|
- README.md
|
75
94
|
- Rakefile
|
76
|
-
-
|
95
|
+
- TODO
|
96
|
+
- gemfiles/3.2.gemfile
|
97
|
+
- gemfiles/3.2.gemfile.lock
|
98
|
+
- gemfiles/4.0.gemfile
|
99
|
+
- gemfiles/4.0.gemfile.lock
|
77
100
|
- lib/generators/semantic_navigation/breadcrumb_renderer/breadcrumb_renderer_generator.rb
|
78
101
|
- lib/generators/semantic_navigation/breadcrumb_renderer/templates/breadcrumb_renderer.rb
|
79
102
|
- lib/generators/semantic_navigation/install/install_generator.rb
|
@@ -86,18 +109,21 @@ files:
|
|
86
109
|
- lib/semantic_navigation/core.rb
|
87
110
|
- lib/semantic_navigation/core/base.rb
|
88
111
|
- lib/semantic_navigation/core/leaf.rb
|
89
|
-
- lib/semantic_navigation/core/name_methods.rb
|
112
|
+
- lib/semantic_navigation/core/mix_in/name_methods.rb
|
113
|
+
- lib/semantic_navigation/core/mix_in/url_methods.rb
|
90
114
|
- lib/semantic_navigation/core/navigation.rb
|
91
115
|
- lib/semantic_navigation/core/node.rb
|
92
|
-
- lib/semantic_navigation/
|
116
|
+
- lib/semantic_navigation/deprecations/renderers/acts_as_breadcrumb.rb
|
117
|
+
- lib/semantic_navigation/deprecations/renderers/acts_as_list.rb
|
118
|
+
- lib/semantic_navigation/deprecations/renderers/render_helpers.rb
|
93
119
|
- lib/semantic_navigation/helper_methods.rb
|
94
120
|
- lib/semantic_navigation/railtie.rb
|
95
121
|
- lib/semantic_navigation/renderers.rb
|
96
|
-
- lib/semantic_navigation/renderers/acts_as_breadcrumb.rb
|
97
|
-
- lib/semantic_navigation/renderers/acts_as_list.rb
|
98
122
|
- lib/semantic_navigation/renderers/bread_crumb.rb
|
99
123
|
- lib/semantic_navigation/renderers/list.rb
|
100
|
-
- lib/semantic_navigation/renderers/
|
124
|
+
- lib/semantic_navigation/renderers/mix_in/acts_as_breadcrumb.rb
|
125
|
+
- lib/semantic_navigation/renderers/mix_in/acts_as_list.rb
|
126
|
+
- lib/semantic_navigation/renderers/mix_in/render_helpers.rb
|
101
127
|
- lib/semantic_navigation/twitter_bootstrap/breadcrumb.rb
|
102
128
|
- lib/semantic_navigation/twitter_bootstrap/list.rb
|
103
129
|
- lib/semantic_navigation/twitter_bootstrap/tabs.rb
|
@@ -109,6 +135,7 @@ files:
|
|
109
135
|
- spec/lib/semantic_navigation/core/node_spec.rb
|
110
136
|
- spec/lib/semantic_navigation/helper_methods_spec.rb
|
111
137
|
- spec/lib/semantic_navigation/renderers/bread_crumb_spec.rb
|
138
|
+
- spec/lib/semantic_navigation/renderers/deprecations_spec.rb
|
112
139
|
- spec/lib/semantic_navigation/renderers/list_spec.rb
|
113
140
|
- spec/lib/semantic_navigation/twitter_bootstrap/breadcrumb_spec.rb
|
114
141
|
- spec/lib/semantic_navigation/twitter_bootstrap/list_spec.rb
|
@@ -129,7 +156,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
129
156
|
version: '0'
|
130
157
|
segments:
|
131
158
|
- 0
|
132
|
-
hash: -
|
159
|
+
hash: -52167356157994890
|
133
160
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
161
|
none: false
|
135
162
|
requirements:
|
@@ -138,10 +165,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
165
|
version: '0'
|
139
166
|
segments:
|
140
167
|
- 0
|
141
|
-
hash: -
|
168
|
+
hash: -52167356157994890
|
142
169
|
requirements: []
|
143
170
|
rubyforge_project: semantic_navigation
|
144
|
-
rubygems_version: 1.8.
|
171
|
+
rubygems_version: 1.8.25
|
145
172
|
signing_key:
|
146
173
|
specification_version: 3
|
147
174
|
summary: Make the navigation in your Rails app by several lines
|
@@ -152,6 +179,7 @@ test_files:
|
|
152
179
|
- spec/lib/semantic_navigation/core/node_spec.rb
|
153
180
|
- spec/lib/semantic_navigation/helper_methods_spec.rb
|
154
181
|
- spec/lib/semantic_navigation/renderers/bread_crumb_spec.rb
|
182
|
+
- spec/lib/semantic_navigation/renderers/deprecations_spec.rb
|
155
183
|
- spec/lib/semantic_navigation/renderers/list_spec.rb
|
156
184
|
- spec/lib/semantic_navigation/twitter_bootstrap/breadcrumb_spec.rb
|
157
185
|
- spec/lib/semantic_navigation/twitter_bootstrap/list_spec.rb
|
data/gemfiles/rails3
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
module SemanticNavigation
|
2
|
-
module Core
|
3
|
-
module NameMethods
|
4
|
-
|
5
|
-
def name(renderer_name = nil)
|
6
|
-
rendering_name = @name
|
7
|
-
rendering_name = rendering_name[renderer_name.to_sym] || rendering_name[:default] if rendering_name.is_a?(Hash)
|
8
|
-
rendering_name = view_object.instance_eval(&rendering_name).to_s if rendering_name.is_a?(Proc)
|
9
|
-
rendering_name || i18n_name(renderer_name)
|
10
|
-
end
|
11
|
-
|
12
|
-
private
|
13
|
-
|
14
|
-
def i18n_name(renderer_name = nil)
|
15
|
-
name = I18n.t("#{@i18n_name}.#{@id}", :default => '')
|
16
|
-
if name.is_a? Hash
|
17
|
-
name = name[renderer_name.to_sym] || name[:default]
|
18
|
-
end
|
19
|
-
name || ''
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
module SemanticNavigation
|
2
|
-
module Core
|
3
|
-
module UrlMethods
|
4
|
-
|
5
|
-
def url
|
6
|
-
urls.first
|
7
|
-
end
|
8
|
-
|
9
|
-
private
|
10
|
-
|
11
|
-
def urls
|
12
|
-
[@url].flatten(1).map do |url|
|
13
|
-
if url.is_a?(Proc)
|
14
|
-
view_object.instance_eval(&url) rescue ''
|
15
|
-
else
|
16
|
-
url
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
24
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
module SemanticNavigation
|
2
|
-
module Renderers
|
3
|
-
module ActsAsBreadcrumb
|
4
|
-
|
5
|
-
def render_navigation(object)
|
6
|
-
return '' unless object.render_if
|
7
|
-
navigation(object) do
|
8
|
-
while !object.class.in?(SemanticNavigation::Core::Leaf, NilClass) &&
|
9
|
-
from_level.to_i > object.level
|
10
|
-
object = object.sub_elements.find(&:active)
|
11
|
-
end
|
12
|
-
unless object.class.in?(SemanticNavigation::Core::Leaf, NilClass)
|
13
|
-
active_element = object.sub_elements.find{|e| e.active}
|
14
|
-
active_element.render(self) if active_element
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def render_node(object)
|
20
|
-
active_element = object.sub_elements.find{|e| e.active}
|
21
|
-
if active_element && !active_element.id.in?([except_for].flatten) && active_element.render_if
|
22
|
-
render_element = active_element.render(self)
|
23
|
-
end
|
24
|
-
if render_element
|
25
|
-
node(object) do
|
26
|
-
render_element
|
27
|
-
end
|
28
|
-
else
|
29
|
-
render_leaf(object)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
def render_leaf(object)
|
34
|
-
show = !until_level.nil? ? object.level <= until_level+1 : true
|
35
|
-
return nil unless show
|
36
|
-
|
37
|
-
leaf(object)
|
38
|
-
end
|
39
|
-
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
module SemanticNavigation
|
2
|
-
module Renderers
|
3
|
-
module ActsAsList
|
4
|
-
|
5
|
-
def render_navigation(object)
|
6
|
-
return '' unless object.render_if
|
7
|
-
navigation(object) do
|
8
|
-
while !object.class.in?(SemanticNavigation::Core::Leaf, NilClass) &&
|
9
|
-
from_level.to_i > object.level
|
10
|
-
object = object.sub_elements.find{|e| e.active}
|
11
|
-
end
|
12
|
-
show = !until_level.nil? && !object.nil? ? object.level <= until_level : true
|
13
|
-
if !object.class.in?(SemanticNavigation::Core::Leaf, NilClass) && show
|
14
|
-
object.sub_elements.map{|element| element.render(self)}.compact.sum
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def render_node(object)
|
20
|
-
if !object.id.in?([except_for].flatten) && object.render_if
|
21
|
-
content = render_node_content(object)
|
22
|
-
if content
|
23
|
-
node(object) do
|
24
|
-
content
|
25
|
-
end
|
26
|
-
else
|
27
|
-
render_leaf(object)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def render_node_content(object)
|
33
|
-
if (!until_level.nil? && until_level >= object.level) || until_level.nil?
|
34
|
-
node_content(object) do
|
35
|
-
object.sub_elements.map{|element| element.render(self)}.compact.sum
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def render_leaf(object)
|
41
|
-
if !object.id.in?([except_for].flatten) && object.render_if
|
42
|
-
leaf(object)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
@@ -1,109 +0,0 @@
|
|
1
|
-
module SemanticNavigation
|
2
|
-
module Renderers
|
3
|
-
module RenderHelpers
|
4
|
-
|
5
|
-
def self.included(base)
|
6
|
-
base.send :include, InstanceMethods
|
7
|
-
base.extend(ClassMethods)
|
8
|
-
base.class_eval do
|
9
|
-
[:navigation, :node, :leaf, :link].each do |e|
|
10
|
-
style_accessor :"#{e}_active_class" => [:active],
|
11
|
-
:"show_#{e}_active_class" => true,
|
12
|
-
:"show_#{e}_id" => true,
|
13
|
-
:"#{e}_default_classes" => []
|
14
|
-
end
|
15
|
-
style_accessor menu_tag: :ul
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
module ClassMethods
|
20
|
-
|
21
|
-
def style_accessor(hash)
|
22
|
-
hash.keys.each do |key|
|
23
|
-
class_eval "
|
24
|
-
@@#{key} = nil
|
25
|
-
@#{key} = nil
|
26
|
-
|
27
|
-
def self.#{key}(value)
|
28
|
-
@@#{key}= value
|
29
|
-
end
|
30
|
-
|
31
|
-
def #{key}(value = nil)
|
32
|
-
@#{key} = value unless value.nil?
|
33
|
-
@#{key}.nil? ? @@#{key} : @#{key}
|
34
|
-
end
|
35
|
-
|
36
|
-
def #{key}=(value)
|
37
|
-
@#{key} = value
|
38
|
-
end
|
39
|
-
"
|
40
|
-
send key, hash[key]
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def property_for(class_name,name)
|
45
|
-
class_object = "semantic_navigation/core/#{class_name}".classify.constantize
|
46
|
-
class_object.class_eval "
|
47
|
-
unless defined?(#{name})
|
48
|
-
def #{name}
|
49
|
-
@#{name}
|
50
|
-
end
|
51
|
-
end
|
52
|
-
"
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
module InstanceMethods
|
57
|
-
attr_accessor :from_level, :until_level, :except_for, :name
|
58
|
-
|
59
|
-
def level=(level)
|
60
|
-
@from_level = level
|
61
|
-
@until_level = level
|
62
|
-
end
|
63
|
-
|
64
|
-
def levels=(level_range)
|
65
|
-
@from_level = level_range.first
|
66
|
-
@until_level = level_range.last
|
67
|
-
end
|
68
|
-
|
69
|
-
def initialize
|
70
|
-
@view_object = SemanticNavigation::Configuration.view_object
|
71
|
-
end
|
72
|
-
|
73
|
-
private
|
74
|
-
|
75
|
-
def content_tag(tag_name, content = nil, options={}, &block)
|
76
|
-
@view_object.content_tag(tag_name, content, options) {yield if block_given?}
|
77
|
-
end
|
78
|
-
|
79
|
-
def link_to(link_name, url, options={})
|
80
|
-
@view_object.link_to(link_name, url, options)
|
81
|
-
end
|
82
|
-
|
83
|
-
def merge_classes(name, active, object_classes = [])
|
84
|
-
default_classes = send("#{name}_default_classes")
|
85
|
-
active_classes = active && send("show_#{name}_active_class") ? send("#{name}_active_class") : nil
|
86
|
-
|
87
|
-
classes = [*default_classes, *active_classes, *object_classes]
|
88
|
-
!classes.empty? ? classes : nil
|
89
|
-
end
|
90
|
-
|
91
|
-
def show_id(name, id)
|
92
|
-
id if send("show_#{name}_id")
|
93
|
-
end
|
94
|
-
|
95
|
-
def object_name(object)
|
96
|
-
object.name(self.name)
|
97
|
-
end
|
98
|
-
|
99
|
-
def content_menu_tag(parameters)
|
100
|
-
content_tag menu_tag, nil, parameters do
|
101
|
-
yield
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|