useful_functionality 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest ADDED
@@ -0,0 +1,22 @@
1
+ init.rb
2
+ lib/extensions/generator_base.rb
3
+ lib/generators_helpers/insert_commands.rb
4
+ lib/useful_functionality.rb
5
+ Manifest
6
+ rails_generators/article_like/article_like_generator.rb
7
+ rails_generators/article_like/templates/article.rb
8
+ rails_generators/article_like/templates/articles_controller.rb
9
+ rails_generators/article_like/templates/article_methods.rb
10
+ rails_generators/article_like/templates/migration.rb
11
+ rails_generators/article_like/templates/show.html.erb
12
+ rails_generators/news_like/news_like_generator.rb
13
+ rails_generators/news_like/templates/migration.rb
14
+ rails_generators/news_like/templates/news_post.rb
15
+ rails_generators/news_like/templates/news_posts_controller.rb
16
+ rails_generators/news_like/templates/news_posts_helper.rb
17
+ rails_generators/news_like/templates/views/index.html.erb
18
+ rails_generators/news_like/templates/views/new.html.erb
19
+ rails_generators/news_like/templates/views/show.html.erb
20
+ Rakefile
21
+ README
22
+ useful_functionality.gemspec
data/README ADDED
@@ -0,0 +1,15 @@
1
+ 1)News like functionality generation.Example:
2
+
3
+ ruby script/generate news_like post
4
+
5
+ Generates 3 views,controller,helper,model,migration and add nessesary resource routes
6
+
7
+ 2) Inplace Articles like fuctionality generation.
8
+
9
+ Example: ruby script/generate article_like clients
10
+
11
+ 3) useful_generators depends on ryanb's nifty_generators gem. so you've got it's fuctions too.
12
+
13
+
14
+
15
+
data/Rakefile ADDED
@@ -0,0 +1,22 @@
1
+ # Rakefile
2
+ require 'rubygems'
3
+ require 'rake'
4
+ require 'echoe'
5
+
6
+ Echoe.new('useful_functionality', '0.1.0') do |p|
7
+ p.description = "useful_functionality "
8
+ p.url = "http://7studio.ru"
9
+ p.author = "Vesov Ilya"
10
+ p.email = "strikeroff@gmail.com"
11
+ p.ignore_pattern = ["tmp/*", "script/*",".svn",".git"]
12
+ p.runtime_dependencies = ['nifty-generators']
13
+ p.need_tar_gz = false
14
+ p.retain_gemspec = true
15
+ p.gemspec_name = 'useful_functionality.gemspec'
16
+ p.test_pattern = ["test/**/*_test.rb"]
17
+ p.rdoc_pattern = ["README", "CHANGELOG", "lib/**/*.rb"]
18
+ p.rdoc_options << "-c utf-8"
19
+ p.ignore_pattern = [".gitignore", "doc", ".idea", "*.bat","*.sh"]
20
+ end
21
+
22
+ Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'lib/inplace.rb'
@@ -0,0 +1,11 @@
1
+ Rails::Generator::Base.class_eval do
2
+ # Return true if file exists
3
+ def file_exist?(relative_destination)
4
+ File.exist?(destination_path(relative_destination))
5
+ end
6
+
7
+ # Return true if directory exists and exists relative_destination is a directory
8
+ def directory_exists?(relative_destination)
9
+ File.exist?(destination_path(relative_destination))&& File.directory?(destination_path(relative_destination))
10
+ end
11
+ end
@@ -0,0 +1,109 @@
1
+ Rails::Generator::Commands::Create.class_eval do
2
+ def route_resource(*resources)
3
+ resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
4
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
5
+ logger.route "map.resource #{resource_list}"
6
+ unless options[:pretend]
7
+ gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
8
+ "#{match}\n map.resource #{resource_list}\n"
9
+ end
10
+ end
11
+ end
12
+
13
+ def route_resource_with_options(name, options={})
14
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
15
+
16
+ logger.route "map.resource #{name}#{", "<<options.inspect unless options.blank?}"
17
+ unless options[:pretend]
18
+ gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
19
+ "#{match}\n map.resource #{","<<options.inspect unless options.blank?}\n"
20
+ end
21
+ end
22
+ end
23
+
24
+ def route_name(name, path, route_options = {})
25
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
26
+
27
+ variable = "map.#{name} '#{path}', :controller => '#{route_options[:controller]}', :action => '#{route_options[:action]}'"
28
+
29
+ variable << ", :requirements => #{route_options[:requirements].inspect}" unless route_options[:requirements].blank?
30
+
31
+ logger.route variable
32
+ unless options[:pretend]
33
+ gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
34
+ "#{match}\n #{variable}"
35
+ end
36
+ end
37
+ end
38
+
39
+ def insert_into(file, line)
40
+ logger.insert "#{line} into #{file}"
41
+ unless options[:pretend]
42
+ gsub_file file, /^(class|module) .+$/ do |match|
43
+ "#{match}\n #{line}"
44
+ end
45
+ end
46
+ end
47
+ end
48
+
49
+ Rails::Generator::Commands::Destroy.class_eval do
50
+ def route_resource(*resources)
51
+ resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
52
+ look_for = "\n map.resource #{resource_list}\n"
53
+ logger.route "map.resource #{resource_list}"
54
+ unless options[:pretend]
55
+ gsub_file 'config/routes.rb', /(#{look_for})/mi, ''
56
+ end
57
+ end
58
+
59
+
60
+ def route_resource_with_options(name, options={})
61
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
62
+ look_for = "\n map.resource #{name}#{", "<<options.inspect unless options.blank?}\n"
63
+ logger.route look_for
64
+ unless options[:pretend]
65
+ gsub_file 'config/routes.rb', /(#{look_for})/mi, ''
66
+ end
67
+ end
68
+
69
+ def route_name(name, path, route_options = {})
70
+ variable = "map.#{name} '#{path}', :controller => '#{route_options[:controller]}', :action => '#{route_options[:action]}'"
71
+ variable << ", :requirements => #{route_options[:requirements].inspect}" unless route_options[:requirements].blank?
72
+
73
+ look_for = "\n #{variable}"
74
+ logger.route variable
75
+ unless options[:pretend]
76
+ gsub_file 'config/routes.rb', /(#{look_for})/mi, ''
77
+ end
78
+ end
79
+
80
+ def insert_into(file, line)
81
+ logger.remove "#{line} from #{file}"
82
+ unless options[:pretend]
83
+ gsub_file file, "\n #{line}", ''
84
+ end
85
+ end
86
+ end
87
+
88
+ Rails::Generator::Commands::List.class_eval do
89
+ def route_resource(*resources)
90
+ resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
91
+ logger.route "map.resource #{resource_list}"
92
+ end
93
+
94
+ def route_resource_with_options(name, options={})
95
+ sentinel = 'ActionController::Routing::Routes.draw do |map|'
96
+ look_for = "\n map.resource #{name}#{", "<<options.inspect unless options.blank?}\n"
97
+ logger.route look_for
98
+ end
99
+
100
+ def route_name(name, path, options = {})
101
+ variable = "map.#{name} '#{path}', :controller => '#{route_options[:controller]}', :action => '#{route_options[:action]}'"
102
+ variable << ", :requirements => #{route_options[:requirements].inspect}" unless route_options[:requirements].blank?
103
+ variable
104
+ end
105
+
106
+ def insert_into(file, line)
107
+ logger.insert "#{line} into #{file}"
108
+ end
109
+ end
@@ -0,0 +1,10 @@
1
+ module UsefulFunctionality
2
+
3
+ end
4
+
5
+
6
+ #Dir[File.join(File.dirname(__FILE__), "generators_helpers","*.rb")].each do |file|
7
+ #require file
8
+ #end
9
+
10
+ #require File.join(File.dirname(__FILE__), "extensions", "generator_base.rb")
@@ -0,0 +1,72 @@
1
+ require "generators_helpers/insert_commands.rb"
2
+ require "extensions/generator_base.rb"
3
+
4
+ class ArticleLikeGenerator < Rails::Generator::Base
5
+
6
+ attr_accessor :article_like
7
+
8
+ def initialize(runtime_args, runtime_options = {})
9
+ super
10
+ #usage if @args.empty?
11
+ @article_like = @args.first || "article"
12
+ end
13
+
14
+ def manifest
15
+ record do |m|
16
+ m.directory "app/models"
17
+ m.directory "app/controllers"
18
+ m.directory "app/views"
19
+ m.directory "lib"
20
+
21
+
22
+ unless file_exist?("lib/article_methods.rb")
23
+ m.template "article_methods.rb", "lib/article_methods.rb"
24
+ end
25
+
26
+ unless file_exist?("app/controllers/articles_controller.rb")
27
+ m.template "articles_controller.rb", "app/controllers/articles_controller.rb"
28
+ m.route_resources :articles
29
+ end
30
+
31
+ unless directory_exists?("app/views/articles")
32
+ m.directory "app/views/articles"
33
+ end
34
+
35
+ unless file_exist?("app/views/articles/show.html.erb")
36
+ m.template "show.html.erb", "app/views/articles/show.html.erb"
37
+ end
38
+
39
+ unless file_exist?("app/models/article.rb")
40
+ m.template "article.rb", "app/models/article.rb"
41
+ m.migration_template "migration.rb", "db/migrate", :migration_file_name => "create_articles"
42
+ end
43
+
44
+ unless article_like.blank?
45
+
46
+ m.template "show.html.erb", "app/views/articles/#{article_like}.html.erb"
47
+
48
+ m.route_name article_like, article_like, :controller => 'articles', :action => 'article_show',
49
+ :requirements=>{
50
+ :alias=>"#{article_like}"
51
+ }
52
+ end
53
+
54
+ end
55
+ end
56
+
57
+ def singular_name
58
+ article_like.underscore.singularize
59
+ end
60
+
61
+ def plural_name
62
+ article_like.underscore.pluralize
63
+ end
64
+
65
+ def singular_class_name
66
+ singular_name.camelize
67
+ end
68
+
69
+ def plural_class_name
70
+ plural_name.camelize
71
+ end
72
+ end
@@ -0,0 +1,2 @@
1
+ class Article < ActiveRecord::Base
2
+ end
@@ -0,0 +1,10 @@
1
+ module ArticleMethods
2
+ def article_show
3
+ @article = Article.find_or_create_by_alias_and_locale params[:alias], I18n.locale.to_s
4
+ #@article ||= Article.create(:alias => params[:alias],
5
+ # :title=> I18n.t(params[:alias]),
6
+ # :locale => I18n.locale.to_s )
7
+ view = params[:default_view]? "show" : params[:alias]
8
+ render :template => "articles/#{view}"
9
+ end
10
+ end
@@ -0,0 +1,4 @@
1
+ class ArticlesController < ResourceController::Base
2
+ protect_from_forgery :except=>[:update_attribute]
3
+ include ArticleMethods
4
+ end
@@ -0,0 +1,14 @@
1
+ class CreateArticles < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :articles do |t|
4
+ t.text :description
5
+ t.string :alias
6
+ t.string :locale
7
+ t.timestamps
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :articles
13
+ end
14
+ end
@@ -0,0 +1,9 @@
1
+ <%%= inplace_textareafield("description", show_unblanked(@article.description, "Введите текст"),
2
+ attribute_article_url(:id=>@article.id,:attribute=>"description"),
3
+ :width => "700px",
4
+ :height => "450px",
5
+ :identifier => "description",
6
+ :value => @article.description,
7
+ :default_value => 'Добавить текст статьи',
8
+ :enable => admin?)
9
+ %>
@@ -0,0 +1,60 @@
1
+ require "generators_helpers/insert_commands.rb"
2
+ class NewsLikeGenerator < Rails::Generator::Base
3
+
4
+ attr_accessor :news_like,:generator_options
5
+
6
+ def initialize(runtime_args, runtime_options = {})
7
+ super
8
+ usage if @args.empty?
9
+ @news_like = @args.first
10
+ @generator_options = @args.second || {}
11
+ end
12
+
13
+ def manifest
14
+ record do |m|
15
+ m.directory "app/models"
16
+ m.directory "app/controllers"
17
+ m.directory "app/helpers"
18
+ m.directory "app/views"
19
+ m.directory "lib"
20
+
21
+ m.directory "app/views/#{plural_name}"
22
+
23
+ m.template "views/index.html.erb", "app/views/#{plural_name}/index.html.erb"
24
+ m.template "views/show.html.erb", "app/views/#{plural_name}/show.html.erb"
25
+ m.template "views/new.html.erb", "app/views/#{plural_name}/new.html.erb"
26
+
27
+
28
+ m.template "news_post.rb", "app/models/#{singular_name}.rb"
29
+ m.template "news_posts_controller.rb", "app/controllers/#{plural_name}_controller.rb"
30
+ m.template "news_posts_helper.rb", "app/helpers/#{plural_name}_helper.rb"
31
+ m.migration_template "migration.rb", "db/migrate", :migration_file_name => "create_#{plural_name}"
32
+
33
+ m.route_resources plural_name
34
+
35
+ #m.route_name article_like, article_like, :controller => 'articles', :action => 'articles_show',
36
+ # :requirements=>{
37
+ # :alias=>"#{article_like}"
38
+ # }
39
+ #
40
+
41
+
42
+ end
43
+ end
44
+
45
+ def singular_name
46
+ news_like.underscore.singularize
47
+ end
48
+
49
+ def plural_name
50
+ news_like.underscore.pluralize
51
+ end
52
+
53
+ def singular_class_name
54
+ singular_name.camelize
55
+ end
56
+
57
+ def plural_class_name
58
+ plural_name.camelize
59
+ end
60
+ end
@@ -0,0 +1,14 @@
1
+ class Create<%= plural_class_name %> < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :<%= plural_name %> do |t|
4
+ t.string :title
5
+ t.text :body
6
+ t.boolean :delta, :default => true, :null => false
7
+ t.timestamps
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :<%= plural_name %>
13
+ end
14
+ end
@@ -0,0 +1,2 @@
1
+ class <%= singular_class_name %> < ActiveRecord::Base
2
+ end
@@ -0,0 +1,13 @@
1
+ class <%= plural_class_name %>Controller < ResourceController::Base
2
+
3
+ protect_from_forgery :except=>[:update_attributes]
4
+
5
+ create.wants.html do
6
+ redirect_to :action=>"show"
7
+ end
8
+
9
+ destroy.wants.html do
10
+ redirect_to :action => "index"
11
+ end
12
+
13
+ end
@@ -0,0 +1,3 @@
1
+ module <%= plural_class_name %>Helper
2
+
3
+ end
@@ -0,0 +1,21 @@
1
+ <%% unless @<%= plural_name%>.blank? %>
2
+ <div class="news-post">
3
+ <%% @<%= plural_name%>.each do |post| %>
4
+ <div class="post-item">
5
+ <div class="news-date">
6
+ <%%= post.created_at.strftime("%d.%m.%Y") %>
7
+ </div>
8
+ <div class="list-posts">
9
+
10
+ <%%= title(post.title, :link => <%= singular_name%>_url(:id => post.id))%>
11
+ </div>
12
+ </div>
13
+
14
+ <%% end %>
15
+ </div>
16
+ <%% end %>
17
+ <%% if admin? %>
18
+ <div class="post-operations">
19
+ <%%= link_to I18n.t('<%= plural_name%>.add_post'), new_<%= singular_name%>_url %>
20
+ </div>
21
+ <%% end %>
@@ -0,0 +1,37 @@
1
+ <%% form_id = "new_<%= singular_name%>_form" %>
2
+ <%% form_for :<%= singular_name%>, @object, :url =>{:action => "create"}, :html => { :id => form_id} do |form| %>
3
+
4
+ <%%= form.error_messages %>
5
+
6
+ <%%= inplace_textfield("title",
7
+ show_unblanked(@object.title, "Введите текст заголовка"),
8
+ "",
9
+ :width => "440px",
10
+ :height => "20px",
11
+ :identifier => "title",
12
+ :value => @object.title,
13
+ :default_value => 'Введите текст заголовка',
14
+ :adapter => true,
15
+ :form_id => form_id,
16
+ :form_name => "title",
17
+ :wrapperPattern => "<%= singular_name%>[*]",
18
+ :enable => admin?) %>
19
+
20
+ <%%= inplace_textareafield("body", show_unblanked(@object.body, "Добавить текст статьи"), "",
21
+ :width => "527px",
22
+ :height => "450px",
23
+ :identifier => "body",
24
+ :value => @object.body,
25
+ :default_value => 'Добавить текст статьи',
26
+ :adapter => true,
27
+ :form_id => form_id,
28
+ :form_name => "body",
29
+ :wrapperPattern => "<%= singular_name%>[*]",
30
+ :enable => admin?)
31
+ %>
32
+
33
+
34
+ <%%= submit_tag "Публикация", :class=>"publ" %>
35
+
36
+
37
+ <%% end %>
@@ -0,0 +1,24 @@
1
+ <div class="post">
2
+ <div class="post-attribute post-title">
3
+ <%%= title @object.title,
4
+ :update_to => attribute_<%=singular_name%>_url(:id=>@object.id,:attribute=>"title"),
5
+ :enable => admin?, :mode=>:edit %>
6
+ </div>
7
+
8
+
9
+ <div class="post-attribute">
10
+
11
+ <%%= textarea @object.body, :update_to => attribute_<%=singular_name%>_url(:id=>@object.id,:attribute=>"body"),
12
+ :width => "627px",
13
+ :height => "450px",
14
+ :editable => admin?%>
15
+
16
+ </div>
17
+ <div class="post-operations">
18
+ <%%= show_link_to_if I18n.t("<%=plural_name%>.delete_post"), <%=singular_name%>_url(@object), admin?,
19
+ :method=>:delete,
20
+ :confirm=>I18n.t("<%=plural_name%>.confirm_delete_post") %>
21
+ </div>
22
+ </div>
23
+
24
+
@@ -0,0 +1,36 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{useful_functionality}
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 = ["Vesov Ilya"]
9
+ s.date = %q{2009-10-19}
10
+ s.description = %q{useful_functionality }
11
+ s.email = %q{strikeroff@gmail.com}
12
+ s.extra_rdoc_files = ["lib/extensions/generator_base.rb", "lib/generators_helpers/insert_commands.rb", "lib/useful_functionality.rb", "README"]
13
+ s.files = ["init.rb", "lib/extensions/generator_base.rb", "lib/generators_helpers/insert_commands.rb", "lib/useful_functionality.rb", "Manifest", "rails_generators/article_like/article_like_generator.rb", "rails_generators/article_like/templates/article.rb", "rails_generators/article_like/templates/articles_controller.rb", "rails_generators/article_like/templates/article_methods.rb", "rails_generators/article_like/templates/migration.rb", "rails_generators/article_like/templates/show.html.erb", "rails_generators/news_like/news_like_generator.rb", "rails_generators/news_like/templates/migration.rb", "rails_generators/news_like/templates/news_post.rb", "rails_generators/news_like/templates/news_posts_controller.rb", "rails_generators/news_like/templates/news_posts_helper.rb", "rails_generators/news_like/templates/views/index.html.erb", "rails_generators/news_like/templates/views/new.html.erb", "rails_generators/news_like/templates/views/show.html.erb", "Rakefile", "README", "useful_functionality.gemspec"]
14
+ s.homepage = %q{http://7studio.ru}
15
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Useful_functionality", "--main", "README", "-c utf-8"]
16
+ s.require_paths = ["lib"]
17
+ s.rubyforge_project = %q{useful_functionality}
18
+ s.rubygems_version = %q{1.3.5}
19
+ s.summary = %q{useful_functionality}
20
+
21
+ if s.respond_to? :specification_version then
22
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
23
+ s.specification_version = 3
24
+
25
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
26
+ s.add_runtime_dependency(%q<nifty-generators>, [">= 0"])
27
+ s.add_development_dependency(%q<echoe>, [">= 0"])
28
+ else
29
+ s.add_dependency(%q<nifty-generators>, [">= 0"])
30
+ s.add_dependency(%q<echoe>, [">= 0"])
31
+ end
32
+ else
33
+ s.add_dependency(%q<nifty-generators>, [">= 0"])
34
+ s.add_dependency(%q<echoe>, [">= 0"])
35
+ end
36
+ end
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: useful_functionality
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Vesov Ilya
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-10-19 00:00:00 +05:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nifty-generators
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
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: "0"
34
+ version:
35
+ description: "useful_functionality "
36
+ email: strikeroff@gmail.com
37
+ executables: []
38
+
39
+ extensions: []
40
+
41
+ extra_rdoc_files:
42
+ - lib/extensions/generator_base.rb
43
+ - lib/generators_helpers/insert_commands.rb
44
+ - lib/useful_functionality.rb
45
+ - README
46
+ files:
47
+ - init.rb
48
+ - lib/extensions/generator_base.rb
49
+ - lib/generators_helpers/insert_commands.rb
50
+ - lib/useful_functionality.rb
51
+ - Manifest
52
+ - rails_generators/article_like/article_like_generator.rb
53
+ - rails_generators/article_like/templates/article.rb
54
+ - rails_generators/article_like/templates/articles_controller.rb
55
+ - rails_generators/article_like/templates/article_methods.rb
56
+ - rails_generators/article_like/templates/migration.rb
57
+ - rails_generators/article_like/templates/show.html.erb
58
+ - rails_generators/news_like/news_like_generator.rb
59
+ - rails_generators/news_like/templates/migration.rb
60
+ - rails_generators/news_like/templates/news_post.rb
61
+ - rails_generators/news_like/templates/news_posts_controller.rb
62
+ - rails_generators/news_like/templates/news_posts_helper.rb
63
+ - rails_generators/news_like/templates/views/index.html.erb
64
+ - rails_generators/news_like/templates/views/new.html.erb
65
+ - rails_generators/news_like/templates/views/show.html.erb
66
+ - Rakefile
67
+ - README
68
+ - useful_functionality.gemspec
69
+ has_rdoc: true
70
+ homepage: http://7studio.ru
71
+ licenses: []
72
+
73
+ post_install_message:
74
+ rdoc_options:
75
+ - --line-numbers
76
+ - --inline-source
77
+ - --title
78
+ - Useful_functionality
79
+ - --main
80
+ - README
81
+ - -c utf-8
82
+ require_paths:
83
+ - lib
84
+ required_ruby_version: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: "0"
89
+ version:
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: "1.2"
95
+ version:
96
+ requirements: []
97
+
98
+ rubyforge_project: useful_functionality
99
+ rubygems_version: 1.3.5
100
+ signing_key:
101
+ specification_version: 3
102
+ summary: useful_functionality
103
+ test_files: []
104
+