weppos-tabs_on_rails 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG.rdoc ADDED
@@ -0,0 +1,5 @@
1
+ = Changelog
2
+
3
+ == Release 0.1.0
4
+
5
+ * Initial version
data/LICENSE.rdoc ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2009 Simone Carletti
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,10 @@
1
+ = TabsOnRails
2
+
3
+ TabsOnRails is a simple Rails plugin for creating and managing Tabs.
4
+ It provides helpers for creating tabs with a flexible interface.
5
+
6
+ *WARNING*: This library has not been released yet.
7
+ This package seems stable, but should be considered a development release.
8
+
9
+
10
+ Copyright (c) 2009 Simone Carletti, released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,52 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+
5
+ $:.unshift(File.dirname(__FILE__) + "/lib")
6
+ require 'tabs_on_rails'
7
+
8
+
9
+ PKG_NAME = ENV['PKG_NAME'] || TabsOnRails::GEM
10
+ PKG_VERSION = ENV['PKG_VERSION'] || TabsOnRails::VERSION
11
+ PKG_SUMMARY = "Simple Rails plugin for creating and managing Tabs."
12
+ PKG_FILES = FileList.new("{lib,tasks,test}/**/*") do |files|
13
+ files.include %w(*.{rdoc,rb})
14
+ files.include %w(Rakefile)
15
+ end
16
+ RUBYFORGE_PROJECT = nil
17
+
18
+ if ENV['SNAPSHOT'].to_i == 1
19
+ PKG_VERSION << "." << Time.now.utc.strftime("%Y%m%d%H%M%S")
20
+ end
21
+
22
+
23
+ Echoe.new(PKG_NAME, PKG_VERSION) do |p|
24
+ p.author = "Simone Carletti"
25
+ p.email = "weppos@weppos.net"
26
+ p.summary = PKG_SUMMARY
27
+ p.description = <<-EOD
28
+ TabsOnRails is a simple Rails plugin for creating and managing Tabs. \
29
+ It provides helpers for creating tabs with a flexible interface.
30
+ EOD
31
+ p.url = "http://code.simonecarletti.com/tabs_on_rails"
32
+ p.project = RUBYFORGE_PROJECT
33
+
34
+ p.need_zip = true
35
+ p.rcov_options = ["--main << README.rdoc -x Rakefile -x rcov"]
36
+ p.rdoc_pattern = /^(lib|CHANGELOG.rdoc|README.rdoc|LICENSE.rdoc)/
37
+
38
+ p.development_dependencies += ["rake >=0.8",
39
+ "echoe >=3.1"]
40
+ end
41
+
42
+
43
+ begin
44
+ require 'code_statistics'
45
+ desc "Show library's code statistics"
46
+ task :stats do
47
+ CodeStatistics.new(["WWW::Delicious", "lib"],
48
+ ["Tests", "test"]).to_s
49
+ end
50
+ rescue LoadError
51
+ puts "CodeStatistics (Rails) is not available"
52
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ ActionController::Base.send :include, TabsOnRails::ControllerMixin
data/install.rb ADDED
@@ -0,0 +1 @@
1
+ # Install hook code here
@@ -0,0 +1,61 @@
1
+ #
2
+ # = Tabs on Rails
3
+ #
4
+ # Simple Rails plugin for creating and managing Tabs.
5
+ #
6
+ #
7
+ # Category:: Rails
8
+ # Package:: TabsOnRails
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # License:: MIT License
11
+ #
12
+ #--
13
+ # SVN: $Id$
14
+ #++
15
+
16
+
17
+ module TabsOnRails
18
+
19
+ module ControllerMixin
20
+
21
+ def self.included(base)
22
+ base.extend ClassMethods
23
+ base.send :helper, HelperMethods
24
+ base.class_eval do
25
+ attr_accessor :current_tab
26
+ helper_method :current_tab
27
+ end
28
+ end
29
+
30
+ module ClassMethods
31
+
32
+ # Sets +name+ as +current_tab+.
33
+ #
34
+ # ==== Examples
35
+ #
36
+ # tab :foo
37
+ # tab :foo, :except => :new
38
+ # tab :foo, :only => [ :index, :show ]
39
+ #
40
+ def current_tab(name, options = {})
41
+ before_filter(options) do |controller|
42
+ controller.current_tab = name
43
+ end
44
+ end
45
+
46
+ end
47
+
48
+ module HelperMethods
49
+
50
+ def tabs_tag(builder = nil, &block)
51
+ raise LocalJumpError, "no block given" unless block_given?
52
+ tabs = Tabs.new(self, builder)
53
+
54
+ concat(tabs.open_tabs.to_s)
55
+ yield tabs
56
+ concat(tabs.close_tabs.to_s)
57
+ end
58
+
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,131 @@
1
+ #
2
+ # = Tabs on Rails
3
+ #
4
+ # Simple Rails plugin for creating and managing Tabs.
5
+ #
6
+ #
7
+ # Category:: Rails
8
+ # Package:: TabsOnRails
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # License:: MIT License
11
+ #
12
+ #--
13
+ # SVN: $Id$
14
+ #++
15
+
16
+
17
+ module TabsOnRails
18
+
19
+ class Tabs
20
+
21
+ #
22
+ # = Builder
23
+ #
24
+ # The Builder class represents the interface for any custom Builder.
25
+ #
26
+ # To create a custom Builder extend this class
27
+ # and implement the following abstract methods:
28
+ #
29
+ # * tab_for(args)
30
+ #
31
+ class Builder
32
+
33
+ # Initializes a new builder with +context+.
34
+ def initialize(context)
35
+ @context = context
36
+ end
37
+
38
+ # Returns true if +tab+ is the +current_tab+.
39
+ #
40
+ # ==== Examples
41
+ #
42
+ # class MyController < ApplicationController
43
+ # tab :foo
44
+ # end
45
+ #
46
+ # current_tab? :foo # => true
47
+ # current_tab? 'foo' # => true
48
+ # current_tab? :bar # => false
49
+ # current_tab? 'bar' # => false
50
+ #
51
+ def current_tab?(tab)
52
+ tab.to_s == @context.current_tab.to_s
53
+ end
54
+
55
+ # Creates and returns a tab with given +args+.
56
+ #
57
+ # ==== Raises
58
+ #
59
+ # NotImplemented:: you should implement this method in your custom Builder.
60
+ #
61
+ def tab_for(*args)
62
+ raise NotImplementedError
63
+ end
64
+
65
+ # Overwrite this method to use a custom open tag for your tabs.
66
+ def open_tabs
67
+ end
68
+
69
+ # Overwrite this method to use a custom close tag for your tabs.
70
+ def close_tabs
71
+ end
72
+
73
+ end
74
+
75
+ #
76
+ # = Tabs Builder
77
+ #
78
+ # The TabsBuilder is and example of custom Builder.
79
+ # It creates a new tab
80
+ #
81
+ class TabsBuilder < Builder
82
+
83
+ # Implements Builder#tab_for.
84
+ # Returns a link_to +tab+ with +name+ and +options+ if +tab+ is not the current tab,
85
+ # a simple tab name wrapped by a span tag otherwise.
86
+ #
87
+ # current_tab? :foo # => true
88
+ #
89
+ # tab_for :foo, 'Foo', foo_path
90
+ # # => <li><span>Foo</span></li>
91
+ #
92
+ # tab_for :bar, 'Bar', bar_path
93
+ # # => <li><a href="/link/to/bar">Bar</a></li>
94
+ #
95
+ def tab_for(tab, name, options)
96
+ content = @context.link_to_unless(current_tab?(tab), name, options) do
97
+ @context.content_tag(:span, name)
98
+ end
99
+ @context.content_tag(:li, content)
100
+ end
101
+
102
+ # Implements Builder#open_tabs.
103
+ def open_tabs
104
+ '<ul>'
105
+ end
106
+
107
+ # Implements Builder#close_tabs.
108
+ def close_tabs
109
+ '</ul>'
110
+ end
111
+
112
+ end
113
+
114
+ def initialize(context, builder = nil, &block)
115
+ @context = context
116
+ @builder = (builder || TabsBuilder).new(@context)
117
+ end
118
+
119
+ %w(open_tabs close_tabs).each do |method|
120
+ define_method(method) do
121
+ @builder.send(method)
122
+ end
123
+ end
124
+
125
+ def method_missing(*args)
126
+ @builder.tab_for(*args)
127
+ end
128
+
129
+ end
130
+
131
+ end
@@ -0,0 +1,31 @@
1
+ #
2
+ # = Tabs on Rails
3
+ #
4
+ # Simple Rails plugin for creating and managing Tabs.
5
+ #
6
+ #
7
+ # Category:: Rails
8
+ # Package:: TabsOnRails
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # License:: MIT License
11
+ #
12
+ #--
13
+ # SVN: $Id$
14
+ #++
15
+
16
+
17
+ module TabsOnRails
18
+
19
+ module Version
20
+ MAJOR = 0
21
+ MINOR = 1
22
+ TINY = 0
23
+
24
+ STRING = [MAJOR, MINOR, TINY].join('.')
25
+ end
26
+
27
+ VERSION = Version::STRING
28
+ STATUS = 'alpha'
29
+ BUILD = ''.match(/(\d+)/).to_a.first
30
+
31
+ end
@@ -0,0 +1,28 @@
1
+ #
2
+ # = Tabs on Rails
3
+ #
4
+ # Simple Rails plugin for creating and managing Tabs.
5
+ #
6
+ #
7
+ # Category:: Rails
8
+ # Package:: TabsOnRails
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # License:: MIT License
11
+ #
12
+ #--
13
+ # SVN: $Id$
14
+ #++
15
+
16
+
17
+ require 'tabs_on_rails/controller_mixin'
18
+ require 'tabs_on_rails/tabs'
19
+ require 'tabs_on_rails/version'
20
+
21
+
22
+ module TabsOnRails
23
+
24
+ NAME = 'Tabs on Rails'
25
+ GEM = 'tabs_on_rails'
26
+ AUTHOR = 'Simone Carletti <weppos@weppos.net>'
27
+
28
+ end
@@ -0,0 +1,37 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{tabs_on_rails}
5
+ s.version = "0.1.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Simone Carletti"]
9
+ s.date = %q{2009-02-15}
10
+ s.description = %q{TabsOnRails is a simple Rails plugin for creating and managing Tabs. It provides helpers for creating tabs with a flexible interface.}
11
+ s.email = %q{weppos@weppos.net}
12
+ s.extra_rdoc_files = ["CHANGELOG.rdoc", "lib/tabs_on_rails/controller_mixin.rb", "lib/tabs_on_rails/tabs.rb", "lib/tabs_on_rails/version.rb", "lib/tabs_on_rails.rb", "LICENSE.rdoc", "README.rdoc"]
13
+ s.files = ["CHANGELOG.rdoc", "init.rb", "install.rb", "lib/tabs_on_rails/controller_mixin.rb", "lib/tabs_on_rails/tabs.rb", "lib/tabs_on_rails/version.rb", "lib/tabs_on_rails.rb", "LICENSE.rdoc", "Manifest", "Rakefile", "README.rdoc", "tasks/tabs_on_rails_tasks.rake", "test/builder_test.rb", "test/controller_mixin_helpers_test.rb", "test/controller_mixin_test.rb", "test/fixtures/mixin/standard.html.erb", "test/tabs_builder_test.rb", "test/tabs_on_rails_test.rb", "test/test_helper.rb", "uninstall.rb", "tabs_on_rails.gemspec"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://code.simonecarletti.com/tabs_on_rails}
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tabs_on_rails", "--main", "README.rdoc"]
17
+ s.require_paths = ["lib"]
18
+ s.rubygems_version = %q{1.3.1}
19
+ s.summary = %q{Simple Rails plugin for creating and managing Tabs.}
20
+ s.test_files = ["test/builder_test.rb", "test/controller_mixin_helpers_test.rb", "test/controller_mixin_test.rb", "test/tabs_builder_test.rb", "test/tabs_on_rails_test.rb", "test/test_helper.rb"]
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 2
25
+
26
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
+ s.add_development_dependency(%q<rake>, [">= 0.8"])
28
+ s.add_development_dependency(%q<echoe>, [">= 3.1"])
29
+ else
30
+ s.add_dependency(%q<rake>, [">= 0.8"])
31
+ s.add_dependency(%q<echoe>, [">= 3.1"])
32
+ end
33
+ else
34
+ s.add_dependency(%q<rake>, [">= 0.8"])
35
+ s.add_dependency(%q<echoe>, [">= 3.1"])
36
+ end
37
+ end
@@ -0,0 +1,4 @@
1
+ # desc "Explaining what the task does"
2
+ # task :tabs_on_rails do
3
+ # # Task goes here
4
+ # end
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ class BuilderTest < ActiveSupport::TestCase
4
+
5
+ def setup
6
+ @template = Template.new
7
+ @builder = TabsOnRails::Tabs::Builder.new(@template)
8
+ end
9
+
10
+ def test_initialize_should_require_context
11
+ assert_raise(ArgumentError) { TabsOnRails::Tabs::Builder.new }
12
+ assert_nothing_raised { TabsOnRails::Tabs::Builder.new(@template) }
13
+ end
14
+
15
+ def test_initialize_should_set_context
16
+ assert_equal(@template, @builder.instance_variable_get(:'@context'))
17
+ end
18
+
19
+ def test_current_tab_question_should_return_true_if_tab_matches_current_tab
20
+ assert( @builder.current_tab?(:dashboard))
21
+ assert( @builder.current_tab?('dashboard'))
22
+ assert(!@builder.current_tab?(:welcome))
23
+ assert(!@builder.current_tab?('welcome'))
24
+ end
25
+
26
+ def test_tab_for_should_raise_not_implemented_error
27
+ assert_raise(NotImplementedError) { @builder.tab_for }
28
+ assert_raise(NotImplementedError) { @builder.tab_for('foo') }
29
+ assert_raise(NotImplementedError) { @builder.tab_for('foo', 'bar') }
30
+ end
31
+
32
+ end
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ class NilBoundariesBuilder < TabsOnRails::Tabs::Builder
4
+ def tab_for(tab, name, *args)
5
+ @context.content_tag(:span, name)
6
+ end
7
+ end
8
+
9
+ class NilOpenBoundaryBuilder < NilBoundariesBuilder
10
+ def close_tabs
11
+ '<br />'
12
+ end
13
+ end
14
+
15
+ class NilCloseBoundaryBuilder < NilBoundariesBuilder
16
+ def open_tabs
17
+ '<br />'
18
+ end
19
+ end
20
+
21
+
22
+ class ControllerMixinHelpersTest < ActionView::TestCase
23
+ include ActionView::Helpers::TagHelper
24
+ include ActionView::Helpers::UrlHelper
25
+ include TabsOnRails::ControllerMixin::HelperMethods
26
+
27
+ def test_tabs_tag_should_raise_local_jump_error_without_block
28
+ assert_raise(LocalJumpError) { tabs_tag }
29
+ end
30
+
31
+ def test_tabs_tag_should_not_concat_open_close_tabs_when_nil
32
+ content = tabs_tag(NilBoundariesBuilder) do |t|
33
+ concat t.single('Single', '#')
34
+ end
35
+
36
+ assert_dom_equal('<span>Single</span>', content)
37
+ end
38
+
39
+ def test_tabs_tag_should_not_concat_open_tabs_when_nil
40
+ content = tabs_tag(NilOpenBoundaryBuilder) do |t|
41
+ concat t.single('Single', '#')
42
+ end
43
+
44
+ assert_dom_equal('<span>Single</span><br />', content)
45
+ end
46
+
47
+ def test_tabs_tag_should_not_concat_close_tabs_when_nil
48
+ content = tabs_tag(NilCloseBoundaryBuilder) do |t|
49
+ concat t.single('Single', '#')
50
+ end
51
+
52
+ assert_dom_equal('<br /><span>Single</span>', content)
53
+ end
54
+
55
+ end
@@ -0,0 +1,56 @@
1
+ require 'test_helper'
2
+
3
+ class MixinController < ActionController::Base
4
+ def self.controller_name; "mixin"; end
5
+ def self.controller_path; "mixin"; end
6
+
7
+ layout false
8
+
9
+ current_tab :dashboard
10
+ current_tab :welcome, :only => [ :action_welcome ]
11
+
12
+ def method_missing(method, *args)
13
+ if method =~ /^action_(.*)/
14
+ render :action => (params[:template] || $1)
15
+ end
16
+ end
17
+
18
+ def rescue_action(e) raise end
19
+ end
20
+
21
+ MixinController.view_paths = [ File.dirname(__FILE__) + "/fixtures/" ]
22
+
23
+
24
+ class ControllerMixinTest < ActiveSupport::TestCase
25
+
26
+ def setup
27
+ @controller = MixinController.new
28
+ @request = ActionController::TestRequest.new
29
+ @response = ActionController::TestResponse.new
30
+ end
31
+
32
+ def test_controller_should_include_current_tab_accessors
33
+ assert_equal(nil, @controller.current_tab)
34
+ @controller.current_tab = :footab
35
+ assert_equal(:footab, @controller.current_tab)
36
+ end
37
+
38
+ def test_current_tab_should_be_dashboard
39
+ get :action_dashboard, :template => 'standard'
40
+ assert_equal(:dashboard, @controller.current_tab)
41
+ assert_equal(%Q{<ul>
42
+ <li><span>Dashboard</span></li>
43
+ <li><a href="/w">Welcome</a></li>
44
+ </ul>}, @response.body)
45
+ end
46
+
47
+ def test_current_tab_should_be_welcome_only_for_action_welcone
48
+ get :action_welcome, :template => 'standard'
49
+ assert_equal(:welcome, @controller.current_tab)
50
+ assert_equal(%Q{<ul>
51
+ <li><a href="/d">Dashboard</a></li>
52
+ <li><span>Welcome</span></li>
53
+ </ul>}, @response.body)
54
+ end
55
+
56
+ end
@@ -0,0 +1,4 @@
1
+ <% tabs_tag do |tabs| %>
2
+ <%= tabs.dashboard 'Dashboard', '/d' %>
3
+ <%= tabs.welcome 'Welcome', '/w' %>
4
+ <% end -%>
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ class Template
4
+ include ActionView::Helpers::TagHelper
5
+ include ActionView::Helpers::UrlHelper
6
+
7
+ def current_tab; :dashboard; end
8
+ end
9
+
10
+
11
+ class TabBuilderTest < ActiveSupport::TestCase
12
+
13
+ def setup
14
+ @template = Template.new
15
+ @builder = TabsOnRails::Tabs::TabsBuilder.new(@template)
16
+ end
17
+
18
+ def test_should_implement_builder
19
+ assert_equal(TabsOnRails::Tabs::Builder, TabsOnRails::Tabs::TabsBuilder.superclass)
20
+ end
21
+
22
+ def test_tab_for_should_return_link_to_unless_current_tab
23
+ assert_dom_equal('<li><a href="#">Welcome</a></li>', @builder.tab_for(:welcome, 'Welcome', '#'))
24
+ assert_dom_equal('<li><a href="http://foobar.com/">Foo Bar</a></li>', @builder.tab_for(:welcome, 'Foo Bar', 'http://foobar.com/'))
25
+ end
26
+
27
+ def test_tab_for_should_return_span_if_current_tab
28
+ assert_dom_equal('<li><span>Dashboard</span></li>', @builder.tab_for(:dashboard, 'Dashboard', '#'))
29
+ assert_dom_equal('<li><span>Foo Bar</span></li>', @builder.tab_for(:dashboard, 'Foo Bar', '#'))
30
+ end
31
+
32
+ end
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ class TabsOnRailsTest < ActiveSupport::TestCase
4
+
5
+ def test_nothing_because_I_have_the_other_test_files
6
+ assert true
7
+ end
8
+
9
+ end
@@ -0,0 +1,25 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'mocha'
4
+
5
+ require 'active_support'
6
+ require 'active_support/test_case'
7
+ require 'action_controller'
8
+ require 'action_controller/cgi_ext'
9
+ require 'action_controller/test_process'
10
+ require 'action_view/test_case'
11
+
12
+ $:.unshift File.dirname(__FILE__) + '/../lib'
13
+
14
+ # simulate the inclusion as Rails does loading the init.rb file.
15
+ require 'tabs_on_rails'
16
+ require File.dirname(__FILE__) + '/../init.rb'
17
+
18
+ RAILS_ROOT = '.' unless defined? RAILS_ROOT
19
+ RAILS_ENV = 'test' unless defined? RAILS_ENV
20
+
21
+ ActionController::Base.logger = nil
22
+ ActionController::Routing::Routes.reload rescue nil
23
+
24
+ # Unit tests for Helpers are based on unit tests created and developed by Rails core team.
25
+ # See action_pack/test/abstract_unit for more details.
data/uninstall.rb ADDED
@@ -0,0 +1 @@
1
+ # Uninstall hook code here
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: weppos-tabs_on_rails
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Simone Carletti
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-02-15 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: rake
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0.8"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: echoe
27
+ type: :development
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "3.1"
34
+ version:
35
+ description: TabsOnRails is a simple Rails plugin for creating and managing Tabs. It provides helpers for creating tabs with a flexible interface.
36
+ email: weppos@weppos.net
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - CHANGELOG.rdoc
43
+ - lib/tabs_on_rails/controller_mixin.rb
44
+ - lib/tabs_on_rails/tabs.rb
45
+ - lib/tabs_on_rails/version.rb
46
+ - lib/tabs_on_rails.rb
47
+ - LICENSE.rdoc
48
+ - README.rdoc
49
+ files:
50
+ - CHANGELOG.rdoc
51
+ - init.rb
52
+ - install.rb
53
+ - lib/tabs_on_rails/controller_mixin.rb
54
+ - lib/tabs_on_rails/tabs.rb
55
+ - lib/tabs_on_rails/version.rb
56
+ - lib/tabs_on_rails.rb
57
+ - LICENSE.rdoc
58
+ - Manifest
59
+ - Rakefile
60
+ - README.rdoc
61
+ - tasks/tabs_on_rails_tasks.rake
62
+ - test/builder_test.rb
63
+ - test/controller_mixin_helpers_test.rb
64
+ - test/controller_mixin_test.rb
65
+ - test/fixtures/mixin/standard.html.erb
66
+ - test/tabs_builder_test.rb
67
+ - test/tabs_on_rails_test.rb
68
+ - test/test_helper.rb
69
+ - uninstall.rb
70
+ - tabs_on_rails.gemspec
71
+ has_rdoc: true
72
+ homepage: http://code.simonecarletti.com/tabs_on_rails
73
+ post_install_message:
74
+ rdoc_options:
75
+ - --line-numbers
76
+ - --inline-source
77
+ - --title
78
+ - Tabs_on_rails
79
+ - --main
80
+ - README.rdoc
81
+ require_paths:
82
+ - lib
83
+ required_ruby_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: "0"
88
+ version:
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: "1.2"
94
+ version:
95
+ requirements: []
96
+
97
+ rubyforge_project:
98
+ rubygems_version: 1.2.0
99
+ signing_key:
100
+ specification_version: 2
101
+ summary: Simple Rails plugin for creating and managing Tabs.
102
+ test_files:
103
+ - test/builder_test.rb
104
+ - test/controller_mixin_helpers_test.rb
105
+ - test/controller_mixin_test.rb
106
+ - test/tabs_builder_test.rb
107
+ - test/tabs_on_rails_test.rb
108
+ - test/test_helper.rb