semantic_navigation 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
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