simple-navigation 3.10.1 → 3.11.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ *3.11.0
2
+
3
+ * Added Json renderer. Thanks to Alberto Avila.
4
+
1
5
  *3.10.1
2
6
 
3
7
  * Padrino adapter now returns "html_safe"d content_tag
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source "https://rubygems.org"
2
2
 
3
3
  gem 'activesupport', '>= 2.3.2'
4
4
 
@@ -10,6 +10,7 @@ end
10
10
 
11
11
  group :development do
12
12
  gem 'rspec', '>= 2.0.1'
13
+ gem 'json_spec', '~> 1.1.1'
13
14
  gem 'rake'
14
15
  gem 'rdoc'
15
16
  gem 'jeweler'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.10.1
1
+ 3.11.0
@@ -25,7 +25,8 @@ module SimpleNavigation
25
25
  :list => SimpleNavigation::Renderer::List,
26
26
  :links => SimpleNavigation::Renderer::Links,
27
27
  :breadcrumbs => SimpleNavigation::Renderer::Breadcrumbs,
28
- :text => SimpleNavigation::Renderer::Text
28
+ :text => SimpleNavigation::Renderer::Text,
29
+ :json => SimpleNavigation::Renderer::Json
29
30
  }
30
31
 
31
32
  class << self
@@ -7,5 +7,6 @@ module SimpleNavigation
7
7
  autoload :Links, 'simple_navigation/rendering/renderer/links'
8
8
  autoload :Breadcrumbs, 'simple_navigation/rendering/renderer/breadcrumbs'
9
9
  autoload :Text, 'simple_navigation/rendering/renderer/text'
10
+ autoload :Json, 'simple_navigation/rendering/renderer/json'
10
11
  end
11
12
  end
@@ -0,0 +1,29 @@
1
+ module SimpleNavigation
2
+ module Renderer
3
+
4
+ # Renders the navigation items as a object tree serialized as a json string, can also output raw ruby Hashes
5
+ class Json < SimpleNavigation::Renderer::Base
6
+
7
+ def render(item_container)
8
+ results = hash_render(item_container)
9
+ results = results.to_json unless options[:as_hash]
10
+ results
11
+ end
12
+
13
+ private
14
+
15
+ def hash_render(item_container)
16
+ return nil if item_container.nil?
17
+ item_container.items.map do |item|
18
+ item_hash = {
19
+ :name => item.name,
20
+ :url => item.url,
21
+ :selected => item.selected?,
22
+ :items => hash_render(item.sub_navigation)
23
+ }
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,48 @@
1
+ require 'spec_helper'
2
+
3
+ describe SimpleNavigation::Renderer::Json do
4
+
5
+ describe 'render' do
6
+
7
+ def render(current_nav=nil, options={})
8
+ primary_navigation = primary_container
9
+ select_item(current_nav)
10
+ setup_renderer_for SimpleNavigation::Renderer::Json, :rails, options
11
+ @renderer.render(primary_navigation)
12
+ end
13
+
14
+ def prerendered_menu
15
+ '[{"name":"users","url":"first_url","selected":false,"items":null},{"name":"invoices","url":"second_url","selected":true,"items":[{"name":"subnav1","url":"subnav1_url","selected":false,"items":null},{"name":"subnav2","url":"subnav2_url","selected":false,"items":null}]},{"name":"accounts","url":"third_url","selected":false,"items":null},{"name":"miscellany","url":null,"selected":false,"items":null}]'
16
+ end
17
+
18
+ context 'regarding result' do
19
+
20
+ it "should return a string" do
21
+ render(:invoices).class.should == String
22
+ end
23
+
24
+ it "should render the selected page" do
25
+ json = parse_json(render(:invoices))
26
+ found = json.any? do |item|
27
+ item["name"] == "invoices" and item["selected"]
28
+ end
29
+ found.should == true
30
+ end
31
+
32
+ end
33
+
34
+ context 'regarding hash result' do
35
+ it "should return a hash" do
36
+ render(:invoices, :as_hash => true).class.should == Array
37
+ end
38
+
39
+ it "should render the selected page" do
40
+ found = render(:invoices, :as_hash => true).any? do |item|
41
+ item[:name] == "invoices" and item[:selected]
42
+ end
43
+ found.should == true
44
+ end
45
+
46
+ end
47
+ end
48
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  ENV["RAILS_ENV"] = "test"
2
2
  require 'rubygems'
3
3
  require 'rspec'
4
+ require 'json_spec'
4
5
  require 'action_controller'
5
6
 
6
7
  module Rails
@@ -28,7 +29,7 @@ RSpec.configure do |config|
28
29
  # config.mock_with :flexmock
29
30
  # config.mock_with :rr
30
31
  config.mock_with :rspec
31
-
32
+ config.include JsonSpec::Helpers
32
33
  end
33
34
 
34
35
  # spec helper methods
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-navigation
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.10.1
4
+ version: 3.11.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-04-10 00:00:00.000000000 Z
13
+ date: 2013-06-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport
@@ -44,6 +44,22 @@ dependencies:
44
44
  - - ! '>='
45
45
  - !ruby/object:Gem::Version
46
46
  version: 2.0.1
47
+ - !ruby/object:Gem::Dependency
48
+ name: json_spec
49
+ requirement: !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.1.1
55
+ type: :development
56
+ prerelease: false
57
+ version_requirements: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ~>
61
+ - !ruby/object:Gem::Version
62
+ version: 1.1.1
47
63
  - !ruby/object:Gem::Dependency
48
64
  name: rake
49
65
  requirement: !ruby/object:Gem::Requirement
@@ -130,6 +146,7 @@ files:
130
146
  - lib/simple_navigation/rendering/helpers.rb
131
147
  - lib/simple_navigation/rendering/renderer/base.rb
132
148
  - lib/simple_navigation/rendering/renderer/breadcrumbs.rb
149
+ - lib/simple_navigation/rendering/renderer/json.rb
133
150
  - lib/simple_navigation/rendering/renderer/links.rb
134
151
  - lib/simple_navigation/rendering/renderer/list.rb
135
152
  - lib/simple_navigation/rendering/renderer/text.rb
@@ -146,6 +163,7 @@ files:
146
163
  - spec/lib/simple_navigation/rendering/helpers_spec.rb
147
164
  - spec/lib/simple_navigation/rendering/renderer/base_spec.rb
148
165
  - spec/lib/simple_navigation/rendering/renderer/breadcrumbs_spec.rb
166
+ - spec/lib/simple_navigation/rendering/renderer/json_spec.rb
149
167
  - spec/lib/simple_navigation/rendering/renderer/links_spec.rb
150
168
  - spec/lib/simple_navigation/rendering/renderer/list_spec.rb
151
169
  - spec/lib/simple_navigation/rendering/renderer/text_spec.rb