adva-blog 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/app/controllers/admin/blogs_controller.rb +9 -0
- data/app/controllers/admin/posts_controller.rb +4 -0
- data/app/controllers/posts_controller.rb +20 -0
- data/app/models/blog.rb +6 -0
- data/app/models/post.rb +28 -0
- data/app/models/site_slice.rb +3 -0
- data/app/views/admin/blogs/_form.html.rb +17 -0
- data/app/views/admin/blogs/_menu.html.rb +32 -0
- data/app/views/admin/blogs/edit.html.rb +8 -0
- data/app/views/admin/blogs/new.html.rb +9 -0
- data/app/views/admin/blogs/show.html.rb +41 -0
- data/app/views/admin/posts/_form.html.rb +25 -0
- data/app/views/admin/posts/_menu.html.rb +18 -0
- data/app/views/admin/posts/edit.html.rb +8 -0
- data/app/views/admin/posts/index.html.rb +42 -0
- data/app/views/admin/posts/new.html.rb +8 -0
- data/app/views/posts/_meta.html.rb +17 -0
- data/app/views/posts/index.html.rb +22 -0
- data/app/views/posts/show.html.rb +11 -0
- data/config/locales/en.yml +59 -0
- data/config/redirects.rb +6 -0
- data/config/routes.rb +18 -0
- data/lib/adva/blog.rb +23 -0
- data/lib/adva-blog.rb +1 -0
- data/lib/testing/factories.rb +9 -0
- data/lib/testing/paths.rb +19 -0
- data/public/stylesheets/default/blog.css +0 -0
- metadata +121 -0
@@ -0,0 +1,9 @@
|
|
1
|
+
class Admin::BlogsController < Admin::SectionsController
|
2
|
+
purges :create, :update, :destroy
|
3
|
+
|
4
|
+
def show
|
5
|
+
# TODO needs to be here because the admin top section drop down menu links to section#show.
|
6
|
+
# might want to invent a concept of default_action for a section type or something else.
|
7
|
+
internal_redirect_to 'admin/posts#index', params.merge(:blog_id => params.delete(:id))
|
8
|
+
end
|
9
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class PostsController < BaseController
|
2
|
+
nested_belongs_to :blog
|
3
|
+
before_filter :set_id, :only => :show
|
4
|
+
|
5
|
+
filtered_attributes :post if Adva.engine?(:markup) # FIXME move to adva-markup?
|
6
|
+
|
7
|
+
protected
|
8
|
+
|
9
|
+
def collection
|
10
|
+
# FIXME only here for reference tracking. how can we remove this?
|
11
|
+
@_references << [blog, :posts] if @_references
|
12
|
+
super
|
13
|
+
end
|
14
|
+
|
15
|
+
def set_id
|
16
|
+
blog = site.blogs.find(params[:blog_id])
|
17
|
+
permalink = params.values_at(:year, :month, :day, :slug)
|
18
|
+
params[:id] = blog.posts.by_permalink(*permalink).first.try(:id)
|
19
|
+
end
|
20
|
+
end
|
data/app/models/blog.rb
ADDED
data/app/models/post.rb
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
class Post < Content
|
2
|
+
has_slug :scope => :section_id
|
3
|
+
|
4
|
+
validates_presence_of :title
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def by_permalink(year, month, day, slug)
|
8
|
+
by_archive(year, month, day).where(:slug => slug)
|
9
|
+
end
|
10
|
+
|
11
|
+
def by_archive(*args)
|
12
|
+
where("DATE(contents.created_at) = ?", Date.new(*args.map(&:to_i)).to_formatted_s(:db))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# FIXME should be in adva-markup, shouldn't it?
|
17
|
+
def filter
|
18
|
+
read_attribute(:filter) || (section.respond_to?(:default_filter) ? section.default_filter : nil)
|
19
|
+
end
|
20
|
+
|
21
|
+
def permalink
|
22
|
+
"#{created_at.year}/#{created_at.month}/#{created_at.day}/#{slug}"
|
23
|
+
end
|
24
|
+
|
25
|
+
def to_param(name)
|
26
|
+
name == :permalink ? permalink : super()
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Admin::Blogs::Form < Adva::View::Form
|
2
|
+
include do
|
3
|
+
def fields
|
4
|
+
form.hidden_field :type
|
5
|
+
|
6
|
+
fieldset do
|
7
|
+
column do
|
8
|
+
form.input :name
|
9
|
+
end
|
10
|
+
|
11
|
+
column do
|
12
|
+
form.input :slug
|
13
|
+
end unless params[:action] == 'new'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
class Admin::Blogs::Menu < Adva::View::Menu::Admin::Actions
|
2
|
+
include do
|
3
|
+
def main
|
4
|
+
if persisted?
|
5
|
+
label(resource.name)
|
6
|
+
item(:'.show', index_path(:posts))
|
7
|
+
item(:'.edit', edit_path)
|
8
|
+
item(:'.categories', index_path(:categories)) if Adva.engine?(:categories)
|
9
|
+
else
|
10
|
+
item(:'.sections', index_path)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def right
|
15
|
+
if persisted?
|
16
|
+
item(:'.new_item', new_path(:post))
|
17
|
+
item(:'.destroy', resource_path, :method => :delete, :confirm => t(:'.confirm_destroy', :model_name => resource.class.model_name.human))
|
18
|
+
else
|
19
|
+
item(:'.new', new_path)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
protected
|
24
|
+
|
25
|
+
def active?(url, options)
|
26
|
+
# hmmm ...
|
27
|
+
types = Section.types.map { |type| type.underscore.pluralize }.join('|')
|
28
|
+
return false if url =~ %r(/admin/sites/\d+/#{types}/\d+$) && request.path != url
|
29
|
+
super
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class Admin::Blogs::Show < Minimal::Template
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
table_for resource.posts do |t|
|
5
|
+
t.column :post, :comments, :published, :author, :actions
|
6
|
+
|
7
|
+
t.row do |r, post|
|
8
|
+
r.cell link_to_post(post)
|
9
|
+
r.cell ''.html_safe # post.accept_comments? && post.comments.present? ? link_to(post.comments.size, admin_comments_path) : t(:"adva.common.none")
|
10
|
+
r.cell ''.html_safe # published_at_formatted(post)
|
11
|
+
r.cell link_to_author(post)
|
12
|
+
r.cell links_to_actions([:view, :edit, :destroy], post)
|
13
|
+
end
|
14
|
+
|
15
|
+
t.foot.row do |r|
|
16
|
+
# r.cell will_paginate(@posts), :class => :pagination, :colspan => :all
|
17
|
+
end
|
18
|
+
|
19
|
+
t.empty :p, :class => 'posts list empty' do
|
20
|
+
self.t(:'.empty', :link => capture { link_to(:'.create_item', new_path(:post)) }).html_safe
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def link_to_post(post)
|
26
|
+
status(post) + capture { link_to_edit(post.title, post) } # , :class => post.state
|
27
|
+
end
|
28
|
+
|
29
|
+
def link_to_author(post)
|
30
|
+
''.html_safe # link_to(post.author_name, admin_site_user_path(@site, post.author))
|
31
|
+
end
|
32
|
+
|
33
|
+
def link_to_view(post)
|
34
|
+
capture { link_to(options[:text] || :'.view', public_url_for([post.section, post]), :class => :view) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def status(post)
|
38
|
+
capture { span(t(:'.published'), :title => t(:'.published'), :class => 'status published') }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class Admin::Posts::Form < Adva::View::Form
|
2
|
+
include do
|
3
|
+
def fields
|
4
|
+
fieldset do
|
5
|
+
form.input :title
|
6
|
+
form.input :body
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
def sidebar
|
11
|
+
if Adva.engine?(:categories) && blog.categories.present?
|
12
|
+
# TODO extract to Adva::View::Form#categorizable_tab or something
|
13
|
+
tab :categories do
|
14
|
+
fieldset do
|
15
|
+
form.has_many_through_collection_check_boxes(:categorizations, blog.categories, :name)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
tab :options do
|
21
|
+
form.input :slug
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Admin::Posts::Menu < Adva::View::Menu::Admin::Actions
|
2
|
+
include do
|
3
|
+
def main
|
4
|
+
label(resource.section.name)
|
5
|
+
item(:'.show', index_path)
|
6
|
+
item(:'.edit_parent', edit_parent_path)
|
7
|
+
end
|
8
|
+
|
9
|
+
def right
|
10
|
+
item(:'.new', new_path)
|
11
|
+
if persisted?
|
12
|
+
item(:'.view', public_url)
|
13
|
+
item(:'.edit', edit_path)
|
14
|
+
item(:'.destroy', resource_path, :method => :delete, :confirm => t(:'.confirm_destroy', :model_name => resource.class.model_name.human))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
class Admin::Posts::Index < Minimal::Template
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
table_for collection do |t|
|
5
|
+
t.column :post, :comments, :published, :author, :actions
|
6
|
+
|
7
|
+
t.row do |r, post|
|
8
|
+
r.cell link_to_post(post)
|
9
|
+
r.cell ''.html_safe # post.accept_comments? && post.comments.present? ? link_to(post.comments.size, admin_comments_path) : t(:"adva.common.none")
|
10
|
+
r.cell ''.html_safe # published_at_formatted(post)
|
11
|
+
r.cell link_to_author(post)
|
12
|
+
r.cell links_to_actions([:view, :edit, :destroy], post)
|
13
|
+
end
|
14
|
+
|
15
|
+
t.foot.row do |r|
|
16
|
+
# r.cell will_paginate(@posts), :class => :pagination, :colspan => :all
|
17
|
+
end
|
18
|
+
|
19
|
+
t.empty :p, :class => 'posts list empty' do
|
20
|
+
self.t(:'.empty', :link => capture { link_to(:'.create_item', new_path) }).html_safe
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def link_to_post(post)
|
26
|
+
status(post) + capture { link_to_edit(post.title, post) } # , :class => post.state
|
27
|
+
end
|
28
|
+
|
29
|
+
def link_to_author(post)
|
30
|
+
''.html_safe # link_to(post.author_name, admin_site_user_path(@site, post.author))
|
31
|
+
end
|
32
|
+
|
33
|
+
def link_to_view(post)
|
34
|
+
capture { link_to(options[:text] || :'.view', public_url_for([blog, post]), :class => :view) }
|
35
|
+
end
|
36
|
+
|
37
|
+
def status(post)
|
38
|
+
capture { span(t(:'.published'), :title => t(:'.published'), :class => 'status published') }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class Posts::Meta < Minimal::Template
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
div :class => :meta do
|
5
|
+
self << t(:'.info', :date => date, :author => nil).html_safe # TODO
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
def date
|
10
|
+
capture do
|
11
|
+
content_tag(:abbr, :title => post.created_at, :class => 'updated') do
|
12
|
+
self << l(post.created_at, :format => :post)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class Posts::Index < Minimal::Template
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
ul :class => 'blog posts' do
|
5
|
+
collection.each do |post|
|
6
|
+
li :class => 'post hentry' do
|
7
|
+
h2 do
|
8
|
+
link_to(post.title, [post.section, post], :class => 'entry-title', :rel => 'bookmark')
|
9
|
+
end
|
10
|
+
render :partial => 'posts/meta', :locals => { :post => post }
|
11
|
+
div truncate_html(post.body, :length => 500, :omission => ' …'), :class => 'entry-content'
|
12
|
+
p do
|
13
|
+
link_to(:'.continue', [post.section, post], :class => :continue)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
class Posts::Show < Minimal::Template
|
2
|
+
include do
|
3
|
+
def to_html
|
4
|
+
div :class => resource.class.name.underscore do
|
5
|
+
h2 { link_to(resource.title, resources, :class => 'entry-title', :rel => 'bookmark') }
|
6
|
+
render :partial => 'posts/meta', :locals => { :post => resource }
|
7
|
+
self << resource.body.html_safe
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
en:
|
2
|
+
time:
|
3
|
+
formats:
|
4
|
+
post: "%a, %d %b %Y"
|
5
|
+
section:
|
6
|
+
types:
|
7
|
+
blog: Blog
|
8
|
+
layouts:
|
9
|
+
blog:
|
10
|
+
made_with: "Made with <a href=\"http://github.com/svenfuchs/adva-cms2\">adva cms 2</a>"
|
11
|
+
feed: Atom Feed
|
12
|
+
posts:
|
13
|
+
index:
|
14
|
+
continue: Read the rest of this post
|
15
|
+
meta:
|
16
|
+
info: "posted on %{date}"
|
17
|
+
columns:
|
18
|
+
post: Post
|
19
|
+
comments: Comments
|
20
|
+
published: Published
|
21
|
+
author: Author
|
22
|
+
actions: ""
|
23
|
+
admin:
|
24
|
+
blogs:
|
25
|
+
new:
|
26
|
+
title: Create a New Section
|
27
|
+
edit:
|
28
|
+
title: Settings
|
29
|
+
menu:
|
30
|
+
sections: Sections
|
31
|
+
categories: Categories
|
32
|
+
show: Posts
|
33
|
+
new: New
|
34
|
+
edit: Settings
|
35
|
+
destroy: Delete
|
36
|
+
new_item: New Post
|
37
|
+
confirm_destroy: "Do you really want to delete this %{model_name}?"
|
38
|
+
posts:
|
39
|
+
index:
|
40
|
+
view: View
|
41
|
+
edit: Edit
|
42
|
+
destroy: Delete
|
43
|
+
published: Published
|
44
|
+
empty: "There are no posts. %{link}"
|
45
|
+
create_item: "Create one now »"
|
46
|
+
confirm_destroy: "Do you really want to delete this %{model_name}?"
|
47
|
+
new:
|
48
|
+
title: Write a new blog post
|
49
|
+
edit:
|
50
|
+
title: Edit Post
|
51
|
+
delete: Delete
|
52
|
+
menu:
|
53
|
+
show: Posts
|
54
|
+
edit_parent: Settings
|
55
|
+
new: New Post
|
56
|
+
view: View
|
57
|
+
edit: Edit
|
58
|
+
destroy: Delete
|
59
|
+
confirm_destroy: "Do you really want to delete this %{model_name}?"
|
data/config/redirects.rb
ADDED
data/config/routes.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
namespace :admin do
|
3
|
+
resources :sites do
|
4
|
+
resources :blogs do
|
5
|
+
resources :posts
|
6
|
+
end
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
constraints :year => /\d{4}/, :month => /\d{1,2}/, :day => /\d{1,2}/ do
|
11
|
+
match 'blogs/:blog_id(/:year(/:month(/:day)))', :to => 'posts#index', :as => :blog
|
12
|
+
match 'blogs/:blog_id/:year/:month/:day/:slug', :to => 'posts#show'
|
13
|
+
end
|
14
|
+
|
15
|
+
# this is just here so we get the named url helper and can use url_for(blog, post)
|
16
|
+
# TODO how can we improve this?
|
17
|
+
match 'blogs/:blog_id/*permalink', :to => "posts#internal", :as => :blog_post
|
18
|
+
end
|
data/lib/adva/blog.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'adva/core'
|
2
|
+
require 'adva/engine'
|
3
|
+
|
4
|
+
require 'routing_filter'
|
5
|
+
require 'adva/routing_filters/section_root'
|
6
|
+
|
7
|
+
require 'action_controller' # really should be in truncate_html
|
8
|
+
require 'truncate_html'
|
9
|
+
|
10
|
+
module Adva
|
11
|
+
class Blog < ::Rails::Engine
|
12
|
+
include Adva::Engine
|
13
|
+
|
14
|
+
initializer 'adva-blog.require_section_types' do
|
15
|
+
config.to_prepare { require_dependency 'blog' }
|
16
|
+
end
|
17
|
+
|
18
|
+
initializer 'adva-blog.configure_routing_filters' do
|
19
|
+
RoutingFilter::SectionRoot.anchors << '\d{4}'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
data/lib/adva-blog.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'adva/blog'
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Adva::Blog::Paths
|
2
|
+
def path_to(page)
|
3
|
+
case page
|
4
|
+
|
5
|
+
when /^the admin posts list page of the "([^"]*)" blog$/
|
6
|
+
section = Blog.find_by_name($1) || raise("could not find blog #{$1.inspect}")
|
7
|
+
polymorphic_path([:admin, section.site, section])
|
8
|
+
|
9
|
+
when /^the admin edit post page for the post "([^"]*)"$/
|
10
|
+
post = Post.find_by_title($1) || raise("could not find post #{$1.inspect}")
|
11
|
+
polymorphic_path([:edit, :admin, post.section.site, post.section, post])
|
12
|
+
|
13
|
+
else
|
14
|
+
super
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
World(Adva::Blog::Paths)
|
File without changes
|
metadata
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: adva-blog
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Ingo Weiss
|
14
|
+
- Sven Fuchs
|
15
|
+
autorequire:
|
16
|
+
bindir: bin
|
17
|
+
cert_chain: []
|
18
|
+
|
19
|
+
date: 2010-10-29 00:00:00 +02:00
|
20
|
+
default_executable:
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: adva-core
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: truncate_html
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
type: :runtime
|
49
|
+
version_requirements: *id002
|
50
|
+
description: "[description]"
|
51
|
+
email: nobody@adva-cms.org
|
52
|
+
executables: []
|
53
|
+
|
54
|
+
extensions: []
|
55
|
+
|
56
|
+
extra_rdoc_files: []
|
57
|
+
|
58
|
+
files:
|
59
|
+
- app/controllers/posts_controller.rb
|
60
|
+
- app/controllers/admin/blogs_controller.rb
|
61
|
+
- app/controllers/admin/posts_controller.rb
|
62
|
+
- app/views/admin/blogs/show.html.rb
|
63
|
+
- app/views/admin/blogs/edit.html.rb
|
64
|
+
- app/views/admin/blogs/new.html.rb
|
65
|
+
- app/views/admin/blogs/_form.html.rb
|
66
|
+
- app/views/admin/blogs/_menu.html.rb
|
67
|
+
- app/views/admin/posts/index.html.rb
|
68
|
+
- app/views/admin/posts/edit.html.rb
|
69
|
+
- app/views/admin/posts/new.html.rb
|
70
|
+
- app/views/admin/posts/_form.html.rb
|
71
|
+
- app/views/admin/posts/_menu.html.rb
|
72
|
+
- app/views/posts/index.html.rb
|
73
|
+
- app/views/posts/show.html.rb
|
74
|
+
- app/views/posts/_meta.html.rb
|
75
|
+
- app/models/post.rb
|
76
|
+
- app/models/site_slice.rb
|
77
|
+
- app/models/blog.rb
|
78
|
+
- config/redirects.rb
|
79
|
+
- config/routes.rb
|
80
|
+
- config/locales/en.yml
|
81
|
+
- lib/adva/blog.rb
|
82
|
+
- lib/testing/factories.rb
|
83
|
+
- lib/testing/paths.rb
|
84
|
+
- lib/adva-blog.rb
|
85
|
+
- public/stylesheets/default/blog.css
|
86
|
+
has_rdoc: true
|
87
|
+
homepage: http://github.com/svenfuchs/adva-cms2
|
88
|
+
licenses: []
|
89
|
+
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
|
93
|
+
require_paths:
|
94
|
+
- lib
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
version: "0"
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
hash: 3
|
110
|
+
segments:
|
111
|
+
- 0
|
112
|
+
version: "0"
|
113
|
+
requirements: []
|
114
|
+
|
115
|
+
rubyforge_project: "[none]"
|
116
|
+
rubygems_version: 1.3.7
|
117
|
+
signing_key:
|
118
|
+
specification_version: 3
|
119
|
+
summary: "[summary]"
|
120
|
+
test_files: []
|
121
|
+
|