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.
Files changed (59) hide show
  1. data/.editorconfig +14 -0
  2. data/.gitignore +2 -0
  3. data/.travis.yml +10 -2
  4. data/Appraisals +7 -0
  5. data/Gemfile +1 -1
  6. data/MIT-LICENSE +20 -0
  7. data/README.md +31 -20
  8. data/Rakefile +2 -1
  9. data/TODO +14 -0
  10. data/gemfiles/3.2.gemfile +7 -0
  11. data/gemfiles/3.2.gemfile.lock +112 -0
  12. data/gemfiles/4.0.gemfile +7 -0
  13. data/gemfiles/4.0.gemfile.lock +107 -0
  14. data/lib/generators/semantic_navigation/breadcrumb_renderer/templates/breadcrumb_renderer.rb +5 -5
  15. data/lib/generators/semantic_navigation/list_renderer/list_renderer_generator.rb +0 -1
  16. data/lib/generators/semantic_navigation/list_renderer/templates/list_renderer.rb +4 -4
  17. data/lib/semantic_navigation.rb +30 -0
  18. data/lib/semantic_navigation/configuration.rb +8 -9
  19. data/lib/semantic_navigation/core.rb +8 -6
  20. data/lib/semantic_navigation/core/leaf.rb +2 -2
  21. data/lib/semantic_navigation/core/mix_in/name_methods.rb +24 -0
  22. data/lib/semantic_navigation/core/mix_in/url_methods.rb +25 -0
  23. data/lib/semantic_navigation/core/navigation.rb +8 -2
  24. data/lib/semantic_navigation/core/node.rb +2 -2
  25. data/lib/semantic_navigation/deprecations/renderers/acts_as_breadcrumb.rb +14 -0
  26. data/lib/semantic_navigation/deprecations/renderers/acts_as_list.rb +12 -0
  27. data/lib/semantic_navigation/deprecations/renderers/render_helpers.rb +14 -0
  28. data/lib/semantic_navigation/helper_methods.rb +8 -4
  29. data/lib/semantic_navigation/railtie.rb +9 -19
  30. data/lib/semantic_navigation/renderers.rb +15 -8
  31. data/lib/semantic_navigation/renderers/bread_crumb.rb +6 -6
  32. data/lib/semantic_navigation/renderers/list.rb +6 -6
  33. data/lib/semantic_navigation/renderers/mix_in/acts_as_breadcrumb.rb +43 -0
  34. data/lib/semantic_navigation/renderers/mix_in/acts_as_list.rb +49 -0
  35. data/lib/semantic_navigation/renderers/mix_in/render_helpers.rb +110 -0
  36. data/lib/semantic_navigation/twitter_bootstrap/breadcrumb.rb +5 -5
  37. data/lib/semantic_navigation/twitter_bootstrap/list.rb +2 -2
  38. data/lib/semantic_navigation/twitter_bootstrap/tabs.rb +2 -2
  39. data/lib/semantic_navigation/version.rb +1 -1
  40. data/semantic_navigation.gemspec +3 -2
  41. data/spec/lib/semantic_navigation/configuration_spec.rb +29 -24
  42. data/spec/lib/semantic_navigation/core/leaf_spec.rb +121 -114
  43. data/spec/lib/semantic_navigation/core/navigation_spec.rb +81 -76
  44. data/spec/lib/semantic_navigation/core/node_spec.rb +52 -49
  45. data/spec/lib/semantic_navigation/helper_methods_spec.rb +47 -42
  46. data/spec/lib/semantic_navigation/renderers/bread_crumb_spec.rb +191 -187
  47. data/spec/lib/semantic_navigation/renderers/deprecations_spec.rb +67 -0
  48. data/spec/lib/semantic_navigation/renderers/list_spec.rb +260 -258
  49. data/spec/lib/semantic_navigation/twitter_bootstrap/breadcrumb_spec.rb +163 -159
  50. data/spec/lib/semantic_navigation/twitter_bootstrap/list_spec.rb +263 -262
  51. data/spec/lib/semantic_navigation/twitter_bootstrap/tabs_spec.rb +269 -266
  52. data/spec/spec_helper.rb +6 -0
  53. metadata +41 -13
  54. data/gemfiles/rails3 +0 -7
  55. data/lib/semantic_navigation/core/name_methods.rb +0 -24
  56. data/lib/semantic_navigation/core/url_methods.rb +0 -24
  57. data/lib/semantic_navigation/renderers/acts_as_breadcrumb.rb +0 -42
  58. data/lib/semantic_navigation/renderers/acts_as_list.rb +0 -48
  59. data/lib/semantic_navigation/renderers/render_helpers.rb +0 -109
@@ -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.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: 2012-11-19 00:00:00.000000000 Z
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.0.0
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.0.0
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
- - gemfiles/rails3
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/core/url_methods.rb
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/render_helpers.rb
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: -712279182362314885
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: -712279182362314885
168
+ hash: -52167356157994890
142
169
  requirements: []
143
170
  rubyforge_project: semantic_navigation
144
- rubygems_version: 1.8.24
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
@@ -1,7 +0,0 @@
1
- source :rubygems
2
-
3
- gem 'semantic_navigation', :path => '..'
4
- gem 'rails', '>=3.1.0'
5
- gem 'rspec'
6
- gem 'rake'
7
- gem 'simplecov'
@@ -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