g5_component_garden 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .rvmrc
6
+ .yardoc
7
+ Gemfile.lock
8
+ InstalledFiles
9
+ _yardoc
10
+ coverage
11
+ doc/
12
+ lib/bundler/man
13
+ pkg
14
+ rdoc
15
+ spec/reports
16
+ test/tmp
17
+ test/version_tmp
18
+ tmp
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+ source 'https://gems.gemfury.com/88yeKzEGfizstwBaXVqj/'
3
+
4
+ # Specify your gem's dependencies in h_g5_component.gemspec
5
+ gemspec
@@ -0,0 +1,98 @@
1
+ # G5 Component Garden
2
+
3
+ Generates components from static files and provides routes for Gardens.
4
+
5
+
6
+ ## Current Version
7
+
8
+ 0.2.1
9
+
10
+
11
+ ## Requirements
12
+
13
+ * ["rails", "~> 3.2.0"](http://rubygems.org/gems/rails)
14
+ * ["microformats2", "2.0.0.pre4"](https://github.com/g5/microformats2)
15
+
16
+
17
+ ### Gemfile
18
+
19
+ Add these lines to your application's Gemfile.
20
+
21
+ ```ruby
22
+ source "https://gems.gemfury.com/88yeKzEGfizstwBaXVqj/"
23
+
24
+ gem "g5_component_garden"
25
+ ```
26
+
27
+ ### From Gemfury Command line
28
+
29
+ Add the Source URL to your .gemrc with this command:
30
+
31
+ ```bash
32
+ gem sources -a https://gems.gemfury.com/88yeKzEGfizstwBaXVqj/
33
+ gem install g5_component_garden
34
+ ```
35
+
36
+ Or use it a single install:
37
+
38
+ ```
39
+ gem install g5_component_garden --source https://gems.gemfury.com/88yeKzEGfizstwBaXVqj/
40
+ ```
41
+
42
+
43
+ ## Usage
44
+
45
+ Assuming you have the correct file structure, defined over here: [https://gist.github.com/d42addbb2550fef37d6e](https://gist.github.com/d42addbb2550fef37d6e)
46
+ You get these routes and views for free:
47
+ ```bash
48
+ components GET /components(.:format) components#index
49
+ component GET /components/:slug(.:format) components#show
50
+ root / components#index
51
+ ```
52
+
53
+ If you want to do more with the components:
54
+ ```ruby
55
+ G5ComponentGarden.all #=> Array of G5HentryConsumer::HG5Component
56
+ G5ComponentGarden.find("name-of-component") #=> instance of G5HentryConsumer::HG5Component
57
+ ```
58
+
59
+
60
+ ## Authors
61
+
62
+ * Jessica Lynn Suttles / [@jlsuttles](https://github.com/jlsuttles)
63
+ * Bookis Smuin / [@bookis](https://github.com/bookis)
64
+ * Chris Stringer / [@jcstringer](https://github.com/jcstringer)
65
+ * Michael Mitchell / [@variousred](https://github.com/variousred)
66
+
67
+
68
+ ## Contributing
69
+
70
+ 1. Fork it
71
+ 2. Get it running
72
+ 3. Create your feature branch (`git checkout -b my-new-feature`)
73
+ 4. Write your code and **specs**
74
+ 5. Commit your changes (`git commit -am 'Add some feature'`)
75
+ 6. Push to the branch (`git push origin my-new-feature`)
76
+ 7. Create new Pull Request
77
+
78
+ If you find bugs, have feature requests or questions, please
79
+ [file an issue](https://github.com/g5search/g5_component_garden/issues).
80
+
81
+
82
+ ## Specs
83
+
84
+ ```bash
85
+ rspec spec
86
+ ```
87
+
88
+
89
+ ## Releases
90
+
91
+ ```bash
92
+ vi lib/g5_component_garden/version.rb # change version
93
+ vi README.md # change version
94
+ git add . && git commit -m "bumps version" && git push
95
+ git tag -a -m "Version v0.0.0" v0.0.0 && git push --tags
96
+ rake build
97
+ fury push pkg/g5_component_garden-0.0.0.pkg
98
+ ```
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,12 @@
1
+ class ComponentsController < ::ApplicationController
2
+ def index
3
+ @components = G5ComponentGarden.all.map do |component|
4
+ ComponentDecorator.new(component, view_context)
5
+ end
6
+ end
7
+
8
+ def show
9
+ component = G5ComponentGarden.find(params[:slug])
10
+ @component = ComponentDecorator.new(component, view_context)
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ class ComponentDecorator < SimpleDelegator
2
+ def initialize(component, view_context)
3
+ super(component)
4
+ @view_context = view_context
5
+ end
6
+
7
+ def resource_link(args={})
8
+ url = args[:url]
9
+ url ||= [_h.root_url, args[:uri]].join('')
10
+ _h.link_to(url, url, args[:html])
11
+ end
12
+
13
+ def _h
14
+ @view_context
15
+ end
16
+ end
17
+
@@ -0,0 +1,104 @@
1
+ <div class="h-g5-component well">
2
+ <header>
3
+ <dl>
4
+ <dt>Name</dt>
5
+ <dd>
6
+ <span class="p-name"><%= component.name %></span>
7
+ </dd>
8
+ <dt>UID</dt>
9
+ <dd>
10
+ <%= component.resource_link({url: component_url(component.g5_uid),
11
+ html: {class: "u-url u-uid", rel: "bookmark"}}) %>
12
+ </dd>
13
+ <dt>Thumbnail</dt>
14
+ <dd>
15
+ <%= component.resource_link({uri: component.photo, html: {class: "u-photo u-url"}}) %>
16
+ </dd>
17
+ <dt>Summary</dt>
18
+ <dd>
19
+ <span class="p-summary"><%= component.summary %></span>
20
+ </dd>
21
+ <% if component.respond_to?(:colors) %>
22
+ <dt>Colors</dt>
23
+ <% component.colors.each do |color| %>
24
+ <dd>
25
+ <span class="p-g5-color"><%= color %></span>
26
+ </dd>
27
+ <% end %>
28
+ <% end %>
29
+ <% if component.respond_to?(:images) %>
30
+ <dt>Images</dt>
31
+ <% component.images.each do |image| %>
32
+ <dd>
33
+ <%= component.resource_link({uri: image, html: {class: "u-g5-image u-url"}}) %>
34
+ </dd>
35
+ <% end %>
36
+ <% end %>
37
+ <% if component.respond_to?(:g5_javascripts) %>
38
+ <dt>Javascripts</dt>
39
+ <% component.g5_javascripts.each do |javascript| %>
40
+ <dd>
41
+ <%= component.resource_link({uri: javascript, html: {class: "u-g5-javascript u-url"}}) %>
42
+ </dd>
43
+ <% end %>
44
+ <% end %>
45
+ <% if component.respond_to?(:g5_stylesheets) %>
46
+ <dt>Styleheets</dt>
47
+ <% component.g5_stylesheets.each do |stylesheet| %>
48
+ <dd>
49
+ <%= component.resource_link({uri: stylesheet, html: {class: "u-g5-stylesheet u-url"}}) %>
50
+ </dd>
51
+ <% end %>
52
+ <% end %>
53
+ <% if component.respond_to?(:g5_edit_template) %>
54
+ <dt>Edit Template</dt>
55
+ <dd>
56
+ <%= component.resource_link({uri: component.g5_edit_template, html: {class: "u-g5-edit_template u-url"}}) %>
57
+ </dd>
58
+ <% end %>
59
+ <% if component.respond_to?(:g5_show_template) %>
60
+ <dt>Show Template</dt>
61
+ <dd>
62
+ <%= component.resource_link({uri: component.g5_show_template, html: {class: "u-g5-show_template u-url"}}) %>
63
+ </dd>
64
+ <% end %>
65
+ <% if component.respond_to?(:g5_property_groups) %>
66
+ <dt>Property Group</dt>
67
+ <% component.g5_property_groups.each do |property_group| %>
68
+ <% property_group = property_group.format %>
69
+ <dd>
70
+ <dl class="e-g5-property-group h-g5-property-group">
71
+ <dt>Name</dt>
72
+ <dd class="p-name"><%= property_group.name %></dd>
73
+ <dt>Type</dt>
74
+ <% property_group.categories.each do |category| %>
75
+ <dd class="p-category"><%= category %></dd>
76
+ <% end %>
77
+ <dt>Properties</dt>
78
+ <% property_group.g5_properties.each do |property| %>
79
+ <% property = property.format %>
80
+ <dd class="e-g5-property h-g5-property">
81
+ <dl>
82
+ <dt>Name</dt>
83
+ <dd class="p-g5-name"><%= property.g5_name %></dd>
84
+ <% if property.respond_to?(:g5_editable)%>
85
+ <dt>Editable</dt>
86
+ <dd class="p-g5-editable"><%= property.g5_editable %></dd>
87
+ <% end %>
88
+ <% if property.respond_to?(:g5_default_value)%>
89
+ <dt>Default Value</dt>
90
+ <dd class="p-g5-default-value"><%= property.g5_default_value %></dd>
91
+ <% end %>
92
+ </dl>
93
+ </dd>
94
+ <% end %>
95
+ </dl>
96
+ </dd>
97
+ <% end %>
98
+ <% end %>
99
+
100
+ </dl>
101
+ </header>
102
+
103
+ <%= content_tag :pre, component.content, class: "e-content" %>
104
+ </div>
@@ -0,0 +1,3 @@
1
+ <% @components.each do |component| %>
2
+ <%= render partial: "component", locals: { component: component } %>
3
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render partial: "component", locals: { component: @component } %>
@@ -0,0 +1,5 @@
1
+ Rails.application.routes.draw do
2
+ get "components" => "components#index", as: :components
3
+ get "components/:slug" => "components#show", as: :component
4
+ root to: "components#index"
5
+ end
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/g5_component_garden/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Jessica Lynn Suttles"]
6
+ gem.email = ["jlsuttles@gmail.com"]
7
+ gem.description = %q{Rails engine for G5 Component Gardens}
8
+ gem.summary = %q{Rails engine for G5 Component Gardens}
9
+ gem.homepage = "https://github.com/g5search/g5_component_garden"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "g5_component_garden"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = G5ComponentGarden::VERSION
17
+
18
+ gem.add_dependency "rails", "~> 3.2.13"
19
+ gem.add_dependency "microformats2", "2.0.0.pre4"
20
+
21
+ gem.add_development_dependency "sqlite3", "~> 1.3.6"
22
+ gem.add_development_dependency "simplecov", "~> 0.7.1"
23
+ gem.add_development_dependency "gemfury", "~> 0.4.10"
24
+ gem.add_development_dependency "rspec", "~> 2.11.0"
25
+ gem.add_development_dependency "guard-rspec", "~> 2.1.0"
26
+ gem.add_development_dependency "rb-fsevent", "~> 0.9.2"
27
+ gem.add_development_dependency "debugger", "~> 1.2.1"
28
+ end
@@ -0,0 +1,104 @@
1
+ require "rails"
2
+ require "microformats2"
3
+ require "g5_component_garden/version"
4
+ require "g5_component_garden/engine"
5
+
6
+ module G5ComponentGarden
7
+ COMPONENT_PATH = "public/static/components/"
8
+
9
+ class << self
10
+ def all
11
+ # each directory in public/components is a component
12
+ components = file_paths(COMPONENT_PATH, "*")
13
+ # parse from directory each one and return them as an Array
14
+ components.map do |component_directory|
15
+ parse_from_directory(component_directory)
16
+ end
17
+ end
18
+
19
+ def find(slug)
20
+ # look for directory in public/components with name slug
21
+ component = file_paths(COMPONENT_PATH, slug).first
22
+ # parse from directory
23
+ parse_from_directory(component)
24
+ end
25
+
26
+ def parse_from_directory(directory)
27
+ # assign name, summary, and preview from index.html
28
+ component = Microformats2.parse(File.join(directory, "index.html")).g5_components.first
29
+ relative_directory = get_directory(directory)
30
+
31
+ # assign uid as slug from directory name for now
32
+ uid = directory.split("/").last
33
+ component.add_property("u-g5-uid", uid)
34
+
35
+ thumbnail_path = "#{relative_directory}/images/thumbnail.png"
36
+ component.add_property("u-photo", thumbnail_path)
37
+
38
+ component.add_property("u-g5-edit_template", edit_path(relative_directory))
39
+ component.add_property("u-g5-show_template", show_path(relative_directory))
40
+
41
+ e_content = merge_edit_and_show_markup(directory)
42
+ component.add_property("e-content", e_content)
43
+
44
+ assemble_component_assets(component, directory)
45
+ end
46
+
47
+ def edit_path(directory)
48
+ "#{directory}/edit.html"
49
+ end
50
+
51
+ def show_path(directory)
52
+ "#{directory}/show.html"
53
+ end
54
+
55
+ def assemble_component_assets(component, directory)
56
+ component_assets = file_basenames(directory, "*").select{ |f| ['stylesheets', 'images', 'javascripts'].include?(f) }
57
+ component_assets.each do |component_asset|
58
+ folder = component_asset.singularize
59
+ file_paths_without_public(directory, component_asset, "*").each do |file|
60
+ component.add_property("u-g5-#{folder}", file)
61
+ end
62
+ end
63
+ component
64
+ end
65
+
66
+ def file_basenames(*path)
67
+ Dir[File.join(path)].map { |d| File.basename(d) }
68
+ end
69
+
70
+ def file_paths(*path)
71
+ Dir[File.join(path)].map { |d| File.path(d) }
72
+ end
73
+
74
+ def file_paths_without_public(*path)
75
+ Dir[File.join(path)].map { |d| File.path(d).split("/")[1..-1].join("/") }
76
+ end
77
+
78
+ def get_directory(directory)
79
+ directory.split("/")[1..-1].join("/")
80
+ end
81
+
82
+ def merge_edit_and_show_markup(directory)
83
+ markup = ""
84
+ markup << %{
85
+ <!-- BEGIN EDIT FORM MARKUP -->
86
+ #{get_html(edit_path(directory))}
87
+ <!-- END EDIT FORM MARKUP -->
88
+ } if File.exist?(edit_path(directory))
89
+
90
+ markup << %{
91
+ <!-- BEGIN SHOW MARKUP -->
92
+ #{get_html(show_path(directory))}
93
+ <!-- END SHOW MARKUP -->
94
+ } if File.exist?(show_path(directory))
95
+
96
+ markup
97
+ end
98
+
99
+ def get_html(file)
100
+ open(file).read
101
+ end
102
+
103
+ end # class << self
104
+ end
@@ -0,0 +1,4 @@
1
+ module G5ComponentGarden
2
+ class Engine < Rails::Engine
3
+ end
4
+ end
@@ -0,0 +1,3 @@
1
+ module G5ComponentGarden
2
+ VERSION = "0.2.1"
3
+ end
@@ -0,0 +1,28 @@
1
+ require "spec_helper"
2
+
3
+ describe ComponentDecorator do
4
+ before do
5
+ @view_context = mock(:view_context)
6
+ @view_context.stub(:root_url).and_return("http://dummy.com/")
7
+ @view_context.stub(:link_to) {|link| link}
8
+ @component = mock(:component)
9
+ @component.stub(:some_method).and_return(:result)
10
+ end
11
+
12
+ let(:decorator) {ComponentDecorator.new(@component, @view_context)}
13
+
14
+ it "should delegate methods to super" do
15
+ decorator.some_method.should == :result
16
+ end
17
+
18
+ describe "#resource_link" do
19
+ it "build a link to the full url" do
20
+ link = decorator.resource_link(url: "http://dummy.com/identifier")
21
+ link.should == "http://dummy.com/identifier"
22
+ end
23
+ it "should build a link given just the uid" do
24
+ link = decorator.resource_link(uri: "identifier")
25
+ link.should == "http://dummy.com/identifier"
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ require File.expand_path('../boot', __FILE__)
2
+
3
+ # Pick the frameworks you want:
4
+ require "active_record/railtie"
5
+ require "action_controller/railtie"
6
+ require "action_mailer/railtie"
7
+ require "active_resource/railtie"
8
+ require "sprockets/railtie"
9
+ # require "rails/test_unit/railtie"
10
+
11
+ Bundler.require(*Rails.groups)
12
+ require "g5_component_garden"
13
+
14
+ module Dummy
15
+ class Application < Rails::Application
16
+ end
17
+ end
18
+
@@ -0,0 +1,10 @@
1
+ require 'rubygems'
2
+ gemfile = File.expand_path('../../../../Gemfile', __FILE__)
3
+
4
+ if File.exist?(gemfile)
5
+ ENV['BUNDLE_GEMFILE'] = gemfile
6
+ require 'bundler'
7
+ Bundler.setup
8
+ end
9
+
10
+ $:.unshift File.expand_path('../../../../lib', __FILE__)
@@ -0,0 +1,5 @@
1
+ # Load the rails application
2
+ require File.expand_path('../application', __FILE__)
3
+
4
+ # Initialize the rails application
5
+ Dummy::Application.initialize!
@@ -0,0 +1,3 @@
1
+ Dummy::Application.routes.draw do
2
+ mount G5ComponentGarden::Engine, at: "g5_component_garden"
3
+ end
@@ -0,0 +1,201 @@
1
+ require 'spec_helper'
2
+ require 'g5_component_garden'
3
+
4
+ describe G5ComponentGarden do
5
+ before :each do
6
+ stub_const("G5ComponentGarden::COMPONENT_PATH", "spec/support/components")
7
+ end
8
+
9
+ describe "all" do
10
+ let(:components) { G5ComponentGarden.all }
11
+
12
+ it "returns an Array" do
13
+ components.should be_an_instance_of Array
14
+ end
15
+ it "returns an Array of components" do
16
+ components.first.should be_an_instance_of HG5Component
17
+ end
18
+ end
19
+
20
+ describe "find" do
21
+ let(:component) { G5ComponentGarden.find("name-of-component") }
22
+
23
+ it "returns a component" do
24
+ component.should be_an_instance_of HG5Component
25
+ end
26
+
27
+ describe "#uid" do
28
+ it "is an Url Property" do
29
+ component.g5_uid.should be_an_instance_of Microformats2::Property::Url
30
+ end
31
+
32
+ it "contains the uid" do
33
+ component.g5_uid.to_s.should == "name-of-component"
34
+ end
35
+ end
36
+
37
+ describe "#name" do
38
+ it "is a Text Property" do
39
+ component.name.should be_an_instance_of Microformats2::Property::Text
40
+ end
41
+
42
+ it "contains the name" do
43
+ component.name.to_s.should == "Name of Component"
44
+ end
45
+ end
46
+
47
+ describe "#photo" do
48
+ it "is a Url Property" do
49
+ component.photo.should be_an_instance_of Microformats2::Property::Url
50
+ end
51
+
52
+ it "contains the photo" do
53
+ component.photo.to_s.should == "support/components/name-of-component/images/thumbnail.png"
54
+ end
55
+ end
56
+
57
+ describe "#photos" do
58
+ it "is an Array" do
59
+ component.photos.should be_an_instance_of Array
60
+ end
61
+
62
+ it "contains the photo" do
63
+ component.photos.first.to_s.should == "support/components/name-of-component/images/thumbnail.png"
64
+ end
65
+ end
66
+
67
+ describe "#summary" do
68
+ it "is a Text Property" do
69
+ component.summary.should be_an_instance_of Microformats2::Property::Text
70
+ end
71
+
72
+ it "contains the summary" do
73
+ component.summary.to_s.should == "What this component does/looks like"
74
+ end
75
+ end
76
+
77
+ describe "#content" do
78
+ it "is an Embedded Property" do
79
+ component.content.should be_an_instance_of Microformats2::Property::Embedded
80
+ end
81
+
82
+ context "edit" do
83
+ it "contains the edit form markup" do
84
+ component.content.to_s.should include "Edit HTML goes here"
85
+ end
86
+
87
+ it "functions without any edit HTML" do
88
+ G5ComponentGarden.stub(:edit_path => "/path/to/some/non/existant/file.html")
89
+ component.content.to_s.should_not include "Edit HTML goes here"
90
+ end
91
+ end
92
+
93
+ context "show" do
94
+ it "contains the show markup" do
95
+ component.content.to_s.should include "Show HTML goes here"
96
+ end
97
+
98
+ it "functions without any show HTML" do
99
+ G5ComponentGarden.stub(:show_path => "/path/to/some/non/existant/file.html")
100
+ component.content.to_s.should_not include "Show HTML goes here"
101
+ end
102
+ end
103
+ end
104
+
105
+ describe "#images" do
106
+ it "is an Array" do
107
+ component.g5_images.should be_an_instance_of Array
108
+ end
109
+
110
+ it "contains images" do
111
+ component.g5_images.map(&:to_s).should include("support/components/name-of-component/images/test.png")
112
+ end
113
+ end
114
+
115
+ describe "#javascript with a single file" do
116
+ it "is a Url Property" do
117
+ component.g5_javascript.should be_an_instance_of Microformats2::Property::Url
118
+ end
119
+
120
+ it "contains the javascript" do
121
+ component.g5_javascript.to_s.should == "support/components/name-of-component/javascripts/name-of-component.js"
122
+ end
123
+ end
124
+
125
+ describe "#stylesheets with multiple files" do
126
+ it "is an Array" do
127
+ component.g5_stylesheets.should be_an_instance_of Array
128
+ end
129
+
130
+ it "contains the stylesheets" do
131
+ component.g5_stylesheets.map(&:to_s).should include "support/components/name-of-component/stylesheets/name-of-component.css"
132
+ end
133
+ end
134
+
135
+ describe "#edit" do
136
+ it "is a Url Property" do
137
+ component.g5_edit_template.should be_an_instance_of Microformats2::Property::Url
138
+ end
139
+
140
+ it "contains the edit path" do
141
+ component.g5_edit_template.to_s.should eq "support/components/name-of-component/edit.html"
142
+ end
143
+ end
144
+
145
+ describe "#show" do
146
+ it "is a Url Property" do
147
+ component.g5_show_template.should be_an_instance_of Microformats2::Property::Url
148
+ end
149
+
150
+ it "contains the show path" do
151
+ component.g5_show_template.to_s.should eq "support/components/name-of-component/show.html"
152
+ end
153
+ end
154
+
155
+ describe "#property groups" do
156
+ subject { component.g5_property_groups }
157
+
158
+ it "is an Array" do
159
+ subject.should be_an_instance_of Array
160
+ end
161
+
162
+ it "contains Embedded Properties" do
163
+ subject.first.should be_an_instance_of Microformats2::Property::Embedded
164
+ end
165
+
166
+ describe "categories" do
167
+ subject { component.g5_property_groups.first.format.categories }
168
+
169
+ it "is an Array" do
170
+ subject.should be_an_instance_of Array
171
+ end
172
+
173
+ it "contains the category" do
174
+ subject.first.to_s.should == "Instance"
175
+ end
176
+ end
177
+
178
+ describe "g5_properties" do
179
+ it "is an Array" do
180
+ component.g5_property_groups.first.format.g5_properties.should be_an_instance_of Array
181
+ end
182
+
183
+ describe "property attributes" do
184
+ subject { component.g5_property_groups.first.format.g5_properties.first.format }
185
+
186
+ it "contains the attribute" do
187
+ subject.g5_name.to_s.should == "username"
188
+ end
189
+
190
+ it "is editable" do
191
+ subject.g5_editable.should be_true
192
+ end
193
+
194
+ it "has a default value" do
195
+ subject.g5_default_value.to_s.should == "Twitter Feed"
196
+ end
197
+ end
198
+ end
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,13 @@
1
+ require File.expand_path("../dummy/config/environment", __FILE__)
2
+
3
+ require 'simplecov'
4
+ SimpleCov.start
5
+
6
+ require 'rubygems'
7
+ require 'rspec'
8
+ require 'rspec/autorun'
9
+
10
+
11
+ RSpec.configure do |config|
12
+ config.order = "random"
13
+ end
@@ -0,0 +1 @@
1
+ Edit HTML goes here
@@ -0,0 +1,45 @@
1
+ <div class="h-g5-component">
2
+ <header>
3
+ <dl>
4
+ <dt>Name</dt>
5
+ <dd>
6
+ <span class="p-name">Name of Component</span>
7
+ </dd>
8
+ <dt>Summary</dt>
9
+ <dd>
10
+ <span class="p-summary">What this component does/looks like</span>
11
+ </dd>
12
+ <dt>Property Group</dt>
13
+ <dd>
14
+ <dl class="h-g5-property-group e-g5-property-group">
15
+ <dt>Name</dt>
16
+ <dd class="p-name">Feed</dd>
17
+ <dt>Category</dt>
18
+ <dd class="p-category">Instance</dd>
19
+ <dt>Properties</dt>
20
+ <dd class="h-g5-property e-g5-property">
21
+ <dl>
22
+ <dt>Username</dt>
23
+ <dd class="p-g5-name">username</dd>
24
+ <dt>Editable</dt>
25
+ <dd class="p-g5-editable">true</dd>
26
+ <dt>Default Value</dt>
27
+ <dd class="p-g5-default-value">Twitter Feed</dd>
28
+ </dl>
29
+ </dd>
30
+ <dd class="h-g5-property e-g5-property">
31
+ <dl>
32
+ <dt>Some other property</dt>
33
+ <dd class="p-g5-name">some property</dd>
34
+ <dt>Editable</dt>
35
+ <dd class="p-g5-editable">false</dd>
36
+ <dt>Default Value</dt>
37
+ <dd class="p-g5-default-value">Some default value</dd>
38
+ </dl>
39
+ </dd>
40
+ </dl>
41
+ </dd> <!-- END e-g5-properties -->
42
+
43
+ </dl>
44
+ </header>
45
+ </div>
@@ -0,0 +1 @@
1
+ Show HTML goes here
metadata ADDED
@@ -0,0 +1,239 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: g5_component_garden
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.2.1
6
+ platform: ruby
7
+ authors:
8
+ - Jessica Lynn Suttles
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-04-01 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ version_requirements: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 3.2.13
20
+ none: false
21
+ prerelease: false
22
+ name: rails
23
+ requirement: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: 3.2.13
28
+ none: false
29
+ type: :runtime
30
+ - !ruby/object:Gem::Dependency
31
+ version_requirements: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - '='
34
+ - !ruby/object:Gem::Version
35
+ version: 2.0.0.pre4
36
+ none: false
37
+ prerelease: false
38
+ name: microformats2
39
+ requirement: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - '='
42
+ - !ruby/object:Gem::Version
43
+ version: 2.0.0.pre4
44
+ none: false
45
+ type: :runtime
46
+ - !ruby/object:Gem::Dependency
47
+ version_requirements: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ~>
50
+ - !ruby/object:Gem::Version
51
+ version: 1.3.6
52
+ none: false
53
+ prerelease: false
54
+ name: sqlite3
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ version: 1.3.6
60
+ none: false
61
+ type: :development
62
+ - !ruby/object:Gem::Dependency
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ~>
66
+ - !ruby/object:Gem::Version
67
+ version: 0.7.1
68
+ none: false
69
+ prerelease: false
70
+ name: simplecov
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 0.7.1
76
+ none: false
77
+ type: :development
78
+ - !ruby/object:Gem::Dependency
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ~>
82
+ - !ruby/object:Gem::Version
83
+ version: 0.4.10
84
+ none: false
85
+ prerelease: false
86
+ name: gemfury
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ~>
90
+ - !ruby/object:Gem::Version
91
+ version: 0.4.10
92
+ none: false
93
+ type: :development
94
+ - !ruby/object:Gem::Dependency
95
+ version_requirements: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ~>
98
+ - !ruby/object:Gem::Version
99
+ version: 2.11.0
100
+ none: false
101
+ prerelease: false
102
+ name: rspec
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ~>
106
+ - !ruby/object:Gem::Version
107
+ version: 2.11.0
108
+ none: false
109
+ type: :development
110
+ - !ruby/object:Gem::Dependency
111
+ version_requirements: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ~>
114
+ - !ruby/object:Gem::Version
115
+ version: 2.1.0
116
+ none: false
117
+ prerelease: false
118
+ name: guard-rspec
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ~>
122
+ - !ruby/object:Gem::Version
123
+ version: 2.1.0
124
+ none: false
125
+ type: :development
126
+ - !ruby/object:Gem::Dependency
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 0.9.2
132
+ none: false
133
+ prerelease: false
134
+ name: rb-fsevent
135
+ requirement: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - ~>
138
+ - !ruby/object:Gem::Version
139
+ version: 0.9.2
140
+ none: false
141
+ type: :development
142
+ - !ruby/object:Gem::Dependency
143
+ version_requirements: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ~>
146
+ - !ruby/object:Gem::Version
147
+ version: 1.2.1
148
+ none: false
149
+ prerelease: false
150
+ name: debugger
151
+ requirement: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ~>
154
+ - !ruby/object:Gem::Version
155
+ version: 1.2.1
156
+ none: false
157
+ type: :development
158
+ description: Rails engine for G5 Component Gardens
159
+ email:
160
+ - jlsuttles@gmail.com
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - .gitignore
166
+ - Gemfile
167
+ - README.md
168
+ - Rakefile
169
+ - app/controllers/components_controller.rb
170
+ - app/decorators/component_decorator.rb
171
+ - app/views/components/_component.html.erb
172
+ - app/views/components/index.html.erb
173
+ - app/views/components/show.html.erb
174
+ - config/routes.rb
175
+ - g5_component_garden.gemspec
176
+ - lib/g5_component_garden.rb
177
+ - lib/g5_component_garden/engine.rb
178
+ - lib/g5_component_garden/version.rb
179
+ - spec/decorators/component_decorator_spec.rb
180
+ - spec/dummy/config/application.rb
181
+ - spec/dummy/config/boot.rb
182
+ - spec/dummy/config/environment.rb
183
+ - spec/dummy/config/routes.rb
184
+ - spec/lib/g5_component_garden_spec.rb
185
+ - spec/spec_helper.rb
186
+ - spec/support/components/name-of-component/edit.html
187
+ - spec/support/components/name-of-component/images/test.png
188
+ - spec/support/components/name-of-component/images/thumbnail.png
189
+ - spec/support/components/name-of-component/index.html
190
+ - spec/support/components/name-of-component/javascripts/name-of-component.js
191
+ - spec/support/components/name-of-component/show.html
192
+ - spec/support/components/name-of-component/stylesheets/name-of-component.css
193
+ - spec/support/components/name-of-component/stylesheets/name-of-other-component.css
194
+ homepage: https://github.com/g5search/g5_component_garden
195
+ licenses: []
196
+ post_install_message:
197
+ rdoc_options: []
198
+ require_paths:
199
+ - lib
200
+ required_ruby_version: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - ! '>='
203
+ - !ruby/object:Gem::Version
204
+ version: '0'
205
+ segments:
206
+ - 0
207
+ hash: 657193415753197041
208
+ none: false
209
+ required_rubygems_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ segments:
215
+ - 0
216
+ hash: 657193415753197041
217
+ none: false
218
+ requirements: []
219
+ rubyforge_project:
220
+ rubygems_version: 1.8.24
221
+ signing_key:
222
+ specification_version: 3
223
+ summary: Rails engine for G5 Component Gardens
224
+ test_files:
225
+ - spec/decorators/component_decorator_spec.rb
226
+ - spec/dummy/config/application.rb
227
+ - spec/dummy/config/boot.rb
228
+ - spec/dummy/config/environment.rb
229
+ - spec/dummy/config/routes.rb
230
+ - spec/lib/g5_component_garden_spec.rb
231
+ - spec/spec_helper.rb
232
+ - spec/support/components/name-of-component/edit.html
233
+ - spec/support/components/name-of-component/images/test.png
234
+ - spec/support/components/name-of-component/images/thumbnail.png
235
+ - spec/support/components/name-of-component/index.html
236
+ - spec/support/components/name-of-component/javascripts/name-of-component.js
237
+ - spec/support/components/name-of-component/show.html
238
+ - spec/support/components/name-of-component/stylesheets/name-of-component.css
239
+ - spec/support/components/name-of-component/stylesheets/name-of-other-component.css