semantic_navigation 0.0.8 → 0.0.9

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.
@@ -1,4 +1,10 @@
1
- ### 0.0.8 /
1
+ ### 0.0.9 / April 4, 2012
2
+
3
+ * Fixed bug with Proc names
4
+ * Breadcrumbs now support except_for
5
+ * Added render_if option to elements
6
+
7
+ ### 0.0.8 / April 3rd, 2012
2
8
 
3
9
  * New configuration logic
4
10
  * New helper render method
data/README.md CHANGED
@@ -1,15 +1,15 @@
1
1
  This is semantic_navigation
2
2
 
3
- Current version: 0.0.8
3
+ Current version: 0.0.9
4
4
 
5
5
  ###Purpose
6
6
  This gem generates the navigation for your Rails app.
7
7
  Really customizable and simple to use.
8
8
  Using this gem you have 4 types of renderers: menu, breadcrumb, tabs, and, pills
9
9
 
10
- You can define different menus and render them separatelly.
10
+ You can define different menus and render them separate.
11
11
 
12
- Now with simple integration with a twitter-bootstrap css framework.
12
+ Now with simple integration with a twitter-bootstrap CSS framework.
13
13
 
14
14
  ###How to install
15
15
 
@@ -1,6 +1,7 @@
1
1
  module SemanticNavigation
2
2
  class Configuration
3
3
 
4
+ @@view_object = nil
4
5
  @@navigations = {}
5
6
  @@renderers = {:list => Renderers::List,
6
7
  :breadcrumb => Renderers::BreadCrumb,
@@ -27,13 +28,14 @@ module SemanticNavigation
27
28
  end
28
29
 
29
30
  def render(menu_id, renderer_name, options, view_object)
30
- renderer = @@renderers[renderer_name].new(view_object)
31
+ @@view_object = view_object
32
+ renderer = @@renderers[renderer_name].new
31
33
  unless @@render_styles[renderer_name].nil?
32
34
  renderer.instance_eval &@@render_styles[renderer_name]
33
35
  end
34
36
  options.keys.each{|key| renderer.send "#{key}=", options[key]}
35
37
  navigation = @@navigations[menu_id]
36
- navigation.mark_active(view_object)
38
+ navigation.mark_active
37
39
  navigation.render(renderer)
38
40
  end
39
41
 
@@ -55,7 +57,11 @@ module SemanticNavigation
55
57
  end
56
58
  end
57
59
 
58
- def navigation(name)
60
+ def self.view_object
61
+ @@view_object
62
+ end
63
+
64
+ def self.navigation(name)
59
65
  @@navigations[name]
60
66
  end
61
67
 
@@ -3,6 +3,11 @@ module SemanticNavigation
3
3
  class Base
4
4
 
5
5
  attr :id, :level, :classes, :active
6
+ attr_writer :render_if
7
+
8
+ def render_if
9
+ !@render_if.nil? ? view_object.instance_eval(&@render_if) : true
10
+ end
6
11
 
7
12
  def initialize(options, level)
8
13
  @level = level
@@ -16,6 +21,12 @@ module SemanticNavigation
16
21
  renderer.send :"render_#{class_name}", self
17
22
  end
18
23
 
24
+ private
25
+
26
+ def view_object
27
+ SemanticNavigation::Configuration.view_object
28
+ end
29
+
19
30
  end
20
31
  end
21
32
  end
@@ -9,10 +9,14 @@ module SemanticNavigation
9
9
 
10
10
  def name
11
11
  rendering_name = @name || I18n.t("#{@i18n_name}.#{@id}", :default => '')
12
- rendering_name.is_a?(Proc) ? rendering_name.call.to_s : rendering_name
12
+ if rendering_name.is_a?(Proc)
13
+ view_object.instance_eval(&rendering_name).to_s
14
+ else
15
+ rendering_name
16
+ end
13
17
  end
14
18
 
15
- def mark_active(view_object)
19
+ def mark_active
16
20
  if @url
17
21
  @active = view_object.current_page?(@url)
18
22
  else
@@ -23,9 +23,9 @@ module SemanticNavigation
23
23
  @sub_elements.push element
24
24
  end
25
25
 
26
- def mark_active(view_object)
26
+ def mark_active
27
27
  @sub_elements.each do |element|
28
- element.mark_active(view_object)
28
+ element.mark_active
29
29
  end
30
30
  @active = !@sub_elements.find{|element| element.active}.nil?
31
31
  end
@@ -9,11 +9,15 @@ module SemanticNavigation
9
9
 
10
10
  def name
11
11
  rendering_name = @name || i18n_name
12
- rendering_name.is_a?(Proc) ? rendering_name.call.to_s : rendering_name
12
+ if rendering_name.is_a?(Proc)
13
+ view_object.instance_eval(&rendering_name).to_s
14
+ else
15
+ rendering_name
16
+ end
13
17
  end
14
18
 
15
- def mark_active(view_object)
16
- @sub_elements.each{|element| element.mark_active(view_object)}
19
+ def mark_active
20
+ @sub_elements.each{|element| element.mark_active}
17
21
  @active = view_object.current_page?(@url)
18
22
  @active |= !@sub_elements.find{|element| element.active}.nil?
19
23
  end
@@ -7,7 +7,7 @@ module SemanticNavigation::HelperMethods
7
7
  end
8
8
 
9
9
  def active_item_for(name, level = nil)
10
- navigation = SemanticNavigation::Configuration.new.navigation(name)
10
+ navigation = SemanticNavigation::Configuration.navigation(name)
11
11
  item = navigation
12
12
  while !item.is_a?(SemanticNavigation::Core::Leaf) &&
13
13
  !item.sub_elements.find{|e| e.active}.nil? &&
@@ -3,6 +3,7 @@ module SemanticNavigation
3
3
  module ActsAsBreadcrumb
4
4
 
5
5
  def render_navigation(object)
6
+ return '' unless object.render_if
6
7
  navigation(object) do
7
8
  while !object.class.in?(SemanticNavigation::Core::Leaf, NilClass) &&
8
9
  from_level.to_i > object.level
@@ -17,7 +18,9 @@ module SemanticNavigation
17
18
 
18
19
  def render_node(object)
19
20
  active_element = object.sub_elements.find{|e| e.active}
20
- render_element = active_element.render(self) if active_element
21
+ if active_element && !active_element.id.in?([except_for].flatten) && active_element.render_if
22
+ render_element = active_element.render(self)
23
+ end
21
24
  if render_element
22
25
  node(object) do
23
26
  render_element
@@ -3,6 +3,7 @@ module SemanticNavigation
3
3
  module ActsAsList
4
4
 
5
5
  def render_navigation(object)
6
+ return '' unless object.render_if
6
7
  navigation(object) do
7
8
  while !object.class.in?(SemanticNavigation::Core::Leaf, NilClass) &&
8
9
  from_level.to_i > object.level
@@ -16,7 +17,7 @@ module SemanticNavigation
16
17
  end
17
18
 
18
19
  def render_node(object)
19
- if !object.id.in?([except_for].flatten)
20
+ if !object.id.in?([except_for].flatten) && object.render_if
20
21
  content = render_node_content(object)
21
22
  if content
22
23
  node(object) do
@@ -37,7 +38,7 @@ module SemanticNavigation
37
38
  end
38
39
 
39
40
  def render_leaf(object)
40
- if !object.id.in?([except_for].flatten)
41
+ if !object.id.in?([except_for].flatten) && object.render_if
41
42
  leaf(object)
42
43
  end
43
44
  end
@@ -78,8 +78,8 @@ module SemanticNavigation
78
78
  @until_level = level_range.last
79
79
  end
80
80
 
81
- def initialize(view_object)
82
- @view_object = view_object
81
+ def initialize
82
+ @view_object = SemanticNavigation::Configuration.view_object
83
83
  end
84
84
 
85
85
  private
@@ -1,3 +1,3 @@
1
1
  module SemanticNavigation
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
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.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &11286240 !ruby/object:Gem::Requirement
16
+ requirement: &22911060 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.0.1
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *11286240
24
+ version_requirements: *22911060
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rails
27
- requirement: &11285680 !ruby/object:Gem::Requirement
27
+ requirement: &22910500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 3.0.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *11285680
35
+ version_requirements: *22910500
36
36
  description: ! "Simply and customizable navigation in the Ruby on Rails 3 application.\n
37
37
  \ Predefined bootstrap renderers"
38
38
  email: