cable_menu 0.0.1

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.
data/README ADDED
@@ -0,0 +1,13 @@
1
+ CableMenu
2
+ =========
3
+
4
+ Introduction goes here.
5
+
6
+
7
+ Example
8
+ =======
9
+
10
+ Example goes here.
11
+
12
+
13
+ Copyright (c) 2010 [name of plugin creator], released under the MIT license
data/Rakefile ADDED
@@ -0,0 +1,23 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test the cable_menu plugin.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.libs << 'test'
12
+ t.pattern = 'test/**/*_test.rb'
13
+ t.verbose = true
14
+ end
15
+
16
+ desc 'Generate documentation for the cable_menu plugin.'
17
+ Rake::RDocTask.new(:rdoc) do |rdoc|
18
+ rdoc.rdoc_dir = 'rdoc'
19
+ rdoc.title = 'CableMenu'
20
+ rdoc.options << '--line-numbers' << '--inline-source'
21
+ rdoc.rdoc_files.include('README')
22
+ rdoc.rdoc_files.include('lib/**/*.rb')
23
+ end
@@ -0,0 +1,27 @@
1
+ Gem::Specification.new do |s|
2
+ s.name = %q{cable_menu}
3
+ s.version = "0.0.1"
4
+
5
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
6
+ s.authors = ["Spencer Markowski | The Able Few"]
7
+ s.date = %q{2010-08-29}
8
+ s.description = %q{Cable Menu}
9
+ s.email = %q{spencer@thablefew.com}
10
+ s.files = ["README", "Rakefile", "lib/cable_menu.rb", "cable_menu.gemspec", "lib/cable_menu/acts_as_cable_menu.rb","lib/cable_menu/acts_as_cable.rb","rails/init.rb","generators/cable_menu/cable_menu_generator.rb","generators/cable_menu/templates/cable_menu_migration.rb","generators/cable_menu/templates/cable_model.rb","generators/cable_menu/USAGE"]
11
+ s.has_rdoc = false
12
+ s.homepage = %q{http://theablefew.com/}
13
+ s.require_paths = ["lib"]
14
+ s.rubyforge_project = %q{cable_menu}
15
+ s.rubygems_version = %q{1.3.4}
16
+ s.summary = %q{Create cable menus}
17
+
18
+ if s.respond_to? :specification_version then
19
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
20
+ s.specification_version = 3
21
+
22
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
23
+ else
24
+ end
25
+ else
26
+ end
27
+ end
@@ -0,0 +1,9 @@
1
+ Description:
2
+ Generates the cable menu migration and model.
3
+
4
+ Example:
5
+ ./script/generate cable_menu MenuModelName
6
+
7
+ This will create:
8
+ db/migrate/menu_migration.rb
9
+ app/models/MenuModelName.rb
@@ -0,0 +1,36 @@
1
+ class CableMenuGenerator < Rails::Generator::NamedBase
2
+ def manifest
3
+ record do |m|
4
+ m.migration_template 'cable_menu_migration.rb', 'db/migrate', {:assigns => cable_menu_local_assigns,:migration_file_name => "add_cable_menu_fields_to_#{custom_file_name}"}
5
+ m.template 'cable_model.rb', File.join('app/models', class_path, "#{file_name}.rb")
6
+ end
7
+ end
8
+
9
+ private
10
+ def custom_file_name
11
+ custom_name = class_name.underscore.downcase
12
+ custom_name = custom_name.pluralize if ActiveRecord::Base.pluralize_table_names
13
+ custom_name
14
+ end
15
+
16
+ def cable_menu_local_assigns
17
+ assigns = {}
18
+ assigns[:migration_action] = "add"
19
+ assigns[:class_name] = "add_cable_menu_fields_to_#{custom_file_name}"
20
+ assigns[:table_name] = custom_file_name
21
+ assigns[:attributes] = default_fields + user_provided_fields
22
+ return assigns
23
+ end
24
+
25
+ def default_fields
26
+ [Rails::Generator::GeneratedAttribute.new("title", "string"),
27
+ Rails::Generator::GeneratedAttribute.new("cable_menuable_id", "integer"),
28
+ Rails::Generator::GeneratedAttribute.new("cable_menuable_type", "string"),
29
+ Rails::Generator::GeneratedAttribute.new("parent_id", "integer"),
30
+ Rails::Generator::GeneratedAttribute.new("url", "string")]
31
+ end
32
+
33
+ def user_provided_fields
34
+ args.collect{|user_arg| Rails::Generator::GeneratedAttribute.new(user_arg.split(":").first.to_s, user_arg.split(":").last.to_s) }
35
+ end
36
+ end
@@ -0,0 +1,16 @@
1
+ class <%= class_name.camelize %> < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :<%= table_name %> do |t|
4
+ <% for attribute in attributes -%>
5
+ t.<%= attribute.type %> :<%= attribute.name %>
6
+ <% end -%>
7
+ <% unless options[:skip_timestamps] %>
8
+ t.timestamps
9
+ <% end -%>
10
+ end
11
+ end
12
+
13
+ def self.down
14
+ drop_table :<%= table_name %>
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ class <%= class_name %> < ActiveRecord::Base
2
+ acts_as_cable_menu
3
+ end
@@ -0,0 +1,21 @@
1
+ module Cable
2
+
3
+ def self.included( base )
4
+ base.send :extend, ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+ def acts_as_cable
9
+ send :include, InstanceMethods
10
+ has_one :menu, :as => :cable_menuable
11
+ end
12
+ end
13
+
14
+ module InstanceMethods
15
+
16
+
17
+ end
18
+
19
+ ActiveRecord::Base.send :include, Cable
20
+
21
+ end
@@ -0,0 +1,29 @@
1
+ module CableMenu
2
+
3
+ def self.included( base )
4
+ base.send :extend, ClassMethods
5
+ end
6
+
7
+ module ClassMethods
8
+ def acts_as_cable_menu
9
+ send :include, InstanceMethods
10
+ belongs_to :cable_menuable, :polymorphic => true
11
+ acts_as_tree
12
+ end
13
+ end
14
+
15
+ module InstanceMethods
16
+
17
+ def resource
18
+ self.cable_menuable
19
+ end
20
+
21
+ def route
22
+ (self.ancestors.collect{|an| an.url } << self.url).join
23
+ end
24
+
25
+ end
26
+
27
+ ActiveRecord::Base.send :include, CableMenu
28
+
29
+ end
data/lib/cable_menu.rb ADDED
@@ -0,0 +1,3 @@
1
+ # CableMenu
2
+ require "cable_menu/acts_as_cable_menu"
3
+ require "cable_menu/acts_as_cable"
data/rails/init.rb ADDED
@@ -0,0 +1,2 @@
1
+ # Include hook code here
2
+ require 'cable_menu'
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cable_menu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Spencer Markowski | The Able Few
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-08-29 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Cable Menu
17
+ email: spencer@thablefew.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - README
26
+ - Rakefile
27
+ - lib/cable_menu.rb
28
+ - cable_menu.gemspec
29
+ - lib/cable_menu/acts_as_cable_menu.rb
30
+ - lib/cable_menu/acts_as_cable.rb
31
+ - rails/init.rb
32
+ - generators/cable_menu/cable_menu_generator.rb
33
+ - generators/cable_menu/templates/cable_menu_migration.rb
34
+ - generators/cable_menu/templates/cable_model.rb
35
+ - generators/cable_menu/USAGE
36
+ has_rdoc: false
37
+ homepage: http://theablefew.com/
38
+ licenses: []
39
+
40
+ post_install_message:
41
+ rdoc_options: []
42
+
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "1.2"
56
+ version:
57
+ requirements: []
58
+
59
+ rubyforge_project: cable_menu
60
+ rubygems_version: 1.3.5
61
+ signing_key:
62
+ specification_version: 3
63
+ summary: Create cable menus
64
+ test_files: []
65
+