green_monkey 0.1.4 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +3 -1
- data/.rspec +3 -1
- data/.travis.yml +3 -1
- data/Gemfile +3 -4
- data/Gemfile.haml-edge +3 -4
- data/Gemfile.lock +114 -110
- data/Gemfile.rails-3.0 +3 -4
- data/Gemfile.rails-3.1 +2 -4
- data/Gemfile.rails-3.2 +3 -4
- data/Gemfile.rails-4.1 +4 -0
- data/README.md +43 -7
- data/green_monkey.gemspec +9 -8
- data/lib/green_monkey/ext/action_view.rb +4 -2
- data/lib/green_monkey/ext/active_model.rb +13 -5
- data/lib/green_monkey/ext/haml.rb +7 -7
- data/lib/green_monkey/ext/mida.rb +4 -2
- data/lib/green_monkey/ext/view_helper.rb +40 -8
- data/lib/green_monkey/railtie.rb +4 -1
- data/spec/action_view_spec.rb +4 -1
- data/spec/haml_spec.rb +16 -17
- data/spec/mida_spec.rb +2 -2
- data/spec/model_spec.rb +8 -3
- data/spec/spec_helper.rb +39 -0
- data/spec/view_helper_spec.rb +42 -0
- data/tmp/rails/config/environments/test.rb +1 -0
- metadata +40 -53
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 71723243b4198578e8829ba40311d49e664eacb9
|
4
|
+
data.tar.gz: 864478d04cfb3d38db351637a6b96ab387243296
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: dff149c920359926f50be0fc9cca4dd1edc7ed91e3c30d0ef274ae66773788bb43eaa8fb426400b0dab066ef06f5bcc2cb1fbcdb5a58119df4c604ea3f201a47
|
7
|
+
data.tar.gz: 273e90777f8909d268f511d58c1c8c19aeda0e16b55f0deee778347faca7377042585c13a350fbbb1a25290fbe616afdf1aa2b3292ae6645996693c54d4900f3
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
|
-
|
4
|
-
gem "rails", "
|
5
|
-
gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref: '8c0d0e101b'
|
3
|
+
|
4
|
+
gem "rails", "4.2.0.beta1"
|
data/Gemfile.haml-edge
CHANGED
@@ -1,6 +1,5 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
|
-
|
4
|
-
gem "
|
5
|
-
gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref: '8c0d0e101b'
|
3
|
+
|
4
|
+
gem "haml", git: "https://github.com/haml/haml.git"
|
6
5
|
gem 'tzinfo'
|
data/Gemfile.lock
CHANGED
@@ -1,138 +1,142 @@
|
|
1
|
-
GIT
|
2
|
-
remote: git://github.com/Paxa/chronic_duration.git
|
3
|
-
revision: 8c0d0e101bdbaf2b2299f33e7bfa880b0885a017
|
4
|
-
ref: 8c0d0e101b
|
5
|
-
specs:
|
6
|
-
chronic_duration (0.9.6)
|
7
|
-
numerizer (~> 0.1.1)
|
8
|
-
|
9
|
-
GIT
|
10
|
-
remote: git://github.com/Paxa/mida.git
|
11
|
-
revision: 5289a3be11941f4698136fafddd1c2218765181a
|
12
|
-
ref: 5289a3be1
|
13
|
-
specs:
|
14
|
-
mida (0.3.4)
|
15
|
-
mida_vocabulary (>= 0.1)
|
16
|
-
nokogiri (>= 1.5)
|
17
|
-
|
18
1
|
PATH
|
19
2
|
remote: .
|
20
3
|
specs:
|
21
|
-
green_monkey (0.
|
4
|
+
green_monkey (0.2.2)
|
22
5
|
chronic_duration
|
23
6
|
haml (>= 3.1.0)
|
24
|
-
mida_vocabulary (>= 0.
|
7
|
+
mida_vocabulary (>= 0.2.2)
|
25
8
|
|
26
9
|
GEM
|
27
|
-
remote:
|
10
|
+
remote: https://rubygems.org/
|
28
11
|
specs:
|
29
|
-
actionmailer (
|
30
|
-
actionpack (=
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
12
|
+
actionmailer (4.2.0.beta1)
|
13
|
+
actionpack (= 4.2.0.beta1)
|
14
|
+
actionview (= 4.2.0.beta1)
|
15
|
+
mail (~> 2.5, >= 2.5.4)
|
16
|
+
rails-dom-testing (~> 1.0, >= 1.0.2)
|
17
|
+
actionpack (4.2.0.beta1)
|
18
|
+
actionview (= 4.2.0.beta1)
|
19
|
+
activesupport (= 4.2.0.beta1)
|
20
|
+
rack (~> 1.6.0.beta)
|
21
|
+
rack-test (~> 0.6.2)
|
22
|
+
rails-deprecated_sanitizer (~> 1.0, >= 1.0.2)
|
23
|
+
rails-dom-testing (~> 1.0, >= 1.0.2)
|
24
|
+
actionview (4.2.0.beta1)
|
25
|
+
activesupport (= 4.2.0.beta1)
|
26
|
+
builder (~> 3.1)
|
36
27
|
erubis (~> 2.7.0)
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
diff-lcs (1.
|
28
|
+
rails-deprecated_sanitizer (~> 1.0, >= 1.0.2)
|
29
|
+
rails-dom-testing (~> 1.0, >= 1.0.2)
|
30
|
+
activejob (4.2.0.beta1)
|
31
|
+
globalid (>= 0.2.3)
|
32
|
+
activemodel (4.2.0.beta1)
|
33
|
+
activesupport (= 4.2.0.beta1)
|
34
|
+
builder (~> 3.1)
|
35
|
+
activerecord (4.2.0.beta1)
|
36
|
+
activemodel (= 4.2.0.beta1)
|
37
|
+
activesupport (= 4.2.0.beta1)
|
38
|
+
arel (>= 6.0.0.beta1, < 6.1)
|
39
|
+
activesupport (4.2.0.beta1)
|
40
|
+
i18n (>= 0.7.0.beta1, < 0.8)
|
41
|
+
json (~> 1.7, >= 1.7.7)
|
42
|
+
minitest (~> 5.1)
|
43
|
+
thread_safe (~> 0.1)
|
44
|
+
tzinfo (~> 1.1)
|
45
|
+
arel (6.0.0.beta1)
|
46
|
+
blankslate (3.1.3)
|
47
|
+
builder (3.2.2)
|
48
|
+
chronic_duration (0.10.6)
|
49
|
+
numerizer (~> 0.1.1)
|
50
|
+
diff-lcs (1.2.5)
|
60
51
|
erubis (2.7.0)
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
mida_vocabulary (0.
|
71
|
-
blankslate
|
72
|
-
mime-types (
|
73
|
-
|
74
|
-
|
52
|
+
globalid (0.2.3)
|
53
|
+
activesupport (>= 4.1.0)
|
54
|
+
haml (4.0.5)
|
55
|
+
tilt
|
56
|
+
hike (1.2.3)
|
57
|
+
i18n (0.7.0.beta1)
|
58
|
+
json (1.8.1)
|
59
|
+
mail (2.6.1)
|
60
|
+
mime-types (>= 1.16, < 3)
|
61
|
+
mida_vocabulary (0.2.2)
|
62
|
+
blankslate (~> 3.1)
|
63
|
+
mime-types (2.3)
|
64
|
+
mini_portile (0.6.0)
|
65
|
+
minitest (5.4.1)
|
66
|
+
multi_json (1.10.1)
|
67
|
+
nokogiri (1.6.3.1)
|
68
|
+
mini_portile (= 0.6.0)
|
75
69
|
numerizer (0.1.1)
|
76
|
-
|
77
|
-
rack (
|
78
|
-
rack-cache (1.2)
|
79
|
-
rack (>= 0.4)
|
80
|
-
rack-ssl (1.3.2)
|
81
|
-
rack
|
82
|
-
rack-test (0.6.1)
|
70
|
+
rack (1.6.0.beta)
|
71
|
+
rack-test (0.6.2)
|
83
72
|
rack (>= 1.0)
|
84
|
-
rails (
|
85
|
-
actionmailer (=
|
86
|
-
actionpack (=
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
73
|
+
rails (4.2.0.beta1)
|
74
|
+
actionmailer (= 4.2.0.beta1)
|
75
|
+
actionpack (= 4.2.0.beta1)
|
76
|
+
actionview (= 4.2.0.beta1)
|
77
|
+
activejob (= 4.2.0.beta1)
|
78
|
+
activemodel (= 4.2.0.beta1)
|
79
|
+
activerecord (= 4.2.0.beta1)
|
80
|
+
activesupport (= 4.2.0.beta1)
|
81
|
+
bundler (>= 1.3.0, < 2.0)
|
82
|
+
railties (= 4.2.0.beta1)
|
83
|
+
sprockets-rails (~> 3.0.0.beta1)
|
84
|
+
rails-deprecated_sanitizer (1.0.2)
|
85
|
+
activesupport (>= 4.2.0.alpha)
|
86
|
+
rails-dom-testing (1.0.2)
|
87
|
+
activesupport
|
88
|
+
nokogiri (~> 1.6.0)
|
89
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
90
|
+
railties (4.2.0.beta1)
|
91
|
+
actionpack (= 4.2.0.beta1)
|
92
|
+
activesupport (= 4.2.0.beta1)
|
96
93
|
rake (>= 0.8.7)
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
rspec-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
rspec-rails (
|
94
|
+
thor (>= 0.18.1, < 2.0)
|
95
|
+
rake (10.3.2)
|
96
|
+
rspec (3.1.0)
|
97
|
+
rspec-core (~> 3.1.0)
|
98
|
+
rspec-expectations (~> 3.1.0)
|
99
|
+
rspec-mocks (~> 3.1.0)
|
100
|
+
rspec-core (3.1.2)
|
101
|
+
rspec-support (~> 3.1.0)
|
102
|
+
rspec-expectations (3.1.0)
|
103
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
104
|
+
rspec-support (~> 3.1.0)
|
105
|
+
rspec-mocks (3.1.0)
|
106
|
+
rspec-support (~> 3.1.0)
|
107
|
+
rspec-rails (3.1.0)
|
111
108
|
actionpack (>= 3.0)
|
112
109
|
activesupport (>= 3.0)
|
113
110
|
railties (>= 3.0)
|
114
|
-
rspec (~>
|
115
|
-
|
111
|
+
rspec-core (~> 3.1.0)
|
112
|
+
rspec-expectations (~> 3.1.0)
|
113
|
+
rspec-mocks (~> 3.1.0)
|
114
|
+
rspec-support (~> 3.1.0)
|
115
|
+
rspec-support (3.1.0)
|
116
|
+
sprockets (2.12.2)
|
116
117
|
hike (~> 1.2)
|
118
|
+
multi_json (~> 1.0)
|
117
119
|
rack (~> 1.0)
|
118
120
|
tilt (~> 1.1, != 1.3.0)
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
121
|
+
sprockets-rails (3.0.0.beta1)
|
122
|
+
actionpack (>= 4.0)
|
123
|
+
activesupport (>= 4.0)
|
124
|
+
sprockets (~> 2.8)
|
125
|
+
sqlite3 (1.3.9)
|
126
|
+
thor (0.19.1)
|
127
|
+
thread_safe (0.3.4)
|
128
|
+
tilt (1.4.1)
|
129
|
+
tzinfo (1.2.2)
|
130
|
+
thread_safe (~> 0.1)
|
126
131
|
|
127
132
|
PLATFORMS
|
128
133
|
ruby
|
129
134
|
|
130
135
|
DEPENDENCIES
|
131
136
|
bundler (>= 1.0.0)
|
132
|
-
chronic_duration!
|
133
137
|
green_monkey!
|
134
|
-
|
135
|
-
rails (=
|
136
|
-
rspec (>= 2.
|
138
|
+
nokogiri
|
139
|
+
rails (= 4.2.0.beta1)
|
140
|
+
rspec (>= 2.9.0)
|
137
141
|
rspec-rails
|
138
142
|
sqlite3
|
data/Gemfile.rails-3.0
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
|
-
|
4
|
-
gem "
|
5
|
-
gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref: '8c0d0e101b'
|
3
|
+
|
4
|
+
gem "rails", "3.0.20"
|
data/Gemfile.rails-3.1
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
|
-
gem "rails", "3.1.
|
4
|
-
gem "mida", git: 'git://github.com/Paxa/mida.git', ref: '7db7149a2cf'
|
5
|
-
gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref: '8c0d0e101b'
|
3
|
+
gem "rails", "3.1.12"
|
data/Gemfile.rails-3.2
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
source
|
1
|
+
source 'https://rubygems.org'
|
2
2
|
gemspec
|
3
|
-
|
4
|
-
gem "
|
5
|
-
gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref: '8c0d0e101b'
|
3
|
+
|
4
|
+
gem "rails", "3.2.19"
|
data/Gemfile.rails-4.1
ADDED
data/README.md
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
## About
|
4
4
|
|
5
|
-
This Gem allows you to make html-layout with microdata properties easier. It works with ruby 1.9, rails 3, haml 3.
|
5
|
+
This Gem allows you to make html-layout with microdata properties easier. It works with ruby 1.9+, rails 4, rails 3, haml 3.
|
6
6
|
|
7
7
|
![Green Monkey](http://upload.wikimedia.org/wikipedia/commons/thumb/b/b1/Bijilo-Portrait-of-a-Callithrix-Monkey.jpg/320px-Bijilo-Portrait-of-a-Callithrix-Monkey.jpg)
|
8
8
|
|
@@ -11,8 +11,48 @@ This Gem allows you to make html-layout with microdata properties easier. It wor
|
|
11
11
|
Add to Gemfile
|
12
12
|
|
13
13
|
```ruby
|
14
|
-
gem "green_monkey", '0.
|
15
|
-
|
14
|
+
gem "green_monkey", '0.2.2'
|
15
|
+
```
|
16
|
+
|
17
|
+
## API
|
18
|
+
|
19
|
+
Extends `ActiveModel`:
|
20
|
+
|
21
|
+
```ruby
|
22
|
+
class Post < ActiveRecord::Base
|
23
|
+
html_schema_type :BlogPosting
|
24
|
+
end
|
25
|
+
|
26
|
+
Post.html_schema_type # => Mida::SchemaOrg::BlogPosting
|
27
|
+
Post.new.html_schema_type # => Mida::SchemaOrg::BlogPosting
|
28
|
+
|
29
|
+
class User < ActiveRecord::Base
|
30
|
+
html_schema_type "http://example.com/User"
|
31
|
+
end
|
32
|
+
|
33
|
+
User.html_schema_type # => "http://example.com/User"
|
34
|
+
```
|
35
|
+
|
36
|
+
Extends rails' view helpers:
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
# add correct support for itemscope attribute
|
40
|
+
content_tag(:div, :itemscope) # => "<div itemscope>" (instead of <div "itemscope">
|
41
|
+
|
42
|
+
# time_tag with datetime attribute
|
43
|
+
time_tag(Time.now) # => <time datetime="2014-09-09T09:38:00+00:00">September 09, 2014 09:38</time>
|
44
|
+
|
45
|
+
# time_tag with microdata-compatible time interval
|
46
|
+
time_tag_interval(time, 1.hour + 20.minutes) # => <time datetime="2014-09-09T09:38:00+00:00/PT1H20M">September 09, 2014 09:38 in 1 hour 20 minutes</time>
|
47
|
+
|
48
|
+
# time interval iso8601 helper
|
49
|
+
time_to_iso8601(1.hour + 20.minutes) # => "PT1H20M"
|
50
|
+
|
51
|
+
# shortcut to build "itemscope" and "itemtype" attributes
|
52
|
+
mida_scope(:Airline) # => ' itemscope itemtype="http://schema.org/Airline"'
|
53
|
+
|
54
|
+
# build a link with itemtype="http://data-vocabulary.org/Breadcrumb"
|
55
|
+
breadcrumb_link_to("Home", "/") # => <span itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="/" itemprop="url"><span itemprop="title">Home</span></a></span>
|
16
56
|
```
|
17
57
|
|
18
58
|
## Examples
|
@@ -147,7 +187,3 @@ Output:
|
|
147
187
|
</ul>
|
148
188
|
</article>
|
149
189
|
```
|
150
|
-
|
151
|
-
--------
|
152
|
-
|
153
|
-
I use it in [Microdata tools](http://github.com/paxa/semantic_data/ "my own project")
|
data/green_monkey.gemspec
CHANGED
@@ -2,25 +2,26 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "green_monkey"
|
5
|
-
s.version = '0.
|
5
|
+
s.version = '0.2.2'
|
6
6
|
s.platform = Gem::Platform::RUBY
|
7
7
|
s.authors = ["Pavel Evstigneev"]
|
8
8
|
s.email = ["pavel.evst@gmail.com"]
|
9
9
|
s.homepage = "https://github.com/paxa/green_monkey"
|
10
|
-
s.summary = "Rails and Haml microdata
|
11
|
-
s.description = "
|
10
|
+
s.summary = "Rails and Haml microdata toolkit"
|
11
|
+
s.description = "Provides useful helpers to map object with microdata types and display object's properties in view"
|
12
|
+
s.license = "MIT"
|
12
13
|
|
13
14
|
s.required_rubygems_version = ">= 1.2.0"
|
15
|
+
s.required_ruby_version = '>= 1.9'
|
14
16
|
|
15
|
-
#s.add_runtime_dependency 'rails', '>= 3.0.0'
|
16
17
|
s.add_runtime_dependency 'haml', '>= 3.1.0'
|
17
|
-
s.add_runtime_dependency 'mida_vocabulary', '>= 0.
|
18
|
+
s.add_runtime_dependency 'mida_vocabulary', '>= 0.2.2'
|
18
19
|
s.add_runtime_dependency 'chronic_duration'
|
19
|
-
|
20
|
+
|
20
21
|
s.add_development_dependency "bundler", ">= 1.0.0"
|
21
|
-
s.add_development_dependency "rspec", ">= 2.
|
22
|
+
s.add_development_dependency "rspec", ">= 2.9.0"
|
22
23
|
s.add_development_dependency "rspec-rails"
|
23
|
-
s.add_development_dependency "
|
24
|
+
s.add_development_dependency "nokogiri"
|
24
25
|
s.add_development_dependency 'sqlite3'
|
25
26
|
|
26
27
|
s.files = `git ls-files`.split("\n")
|
@@ -1,12 +1,14 @@
|
|
1
|
+
# Add support for "itemscope" html attributes
|
2
|
+
|
1
3
|
module ActionView::Helpers::TagHelper
|
2
4
|
# Rails by default does not behave with itemscope as boolean attribute
|
3
5
|
# and renders it as itemscope="true"
|
4
|
-
|
6
|
+
|
5
7
|
# this changes make it render as itemscope="itemscope"
|
6
8
|
BOOLEAN_ATTRIBUTES.merge(['itemscope', :itemscope])
|
7
9
|
|
8
10
|
private
|
9
|
-
|
11
|
+
|
10
12
|
# this hack replaces itemscope="itemscope" => itemscope
|
11
13
|
# to make it follow standarts (http://www.w3.org/TR/microdata/#typed-items)
|
12
14
|
alias_method :tag_options_before_green_monkey, :tag_options
|
@@ -1,5 +1,8 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
2
|
+
# Provides setter and getter for microdata-type
|
3
|
+
# ActiveModel.html_schema_type
|
4
|
+
# ActiveModel#html_schema_type
|
5
|
+
# ActiveModel#html_schema_type(value, [options])
|
3
6
|
module GreenMonkey
|
4
7
|
module ModelHelpers
|
5
8
|
extend ActiveSupport::Concern
|
@@ -12,10 +15,15 @@ module GreenMonkey
|
|
12
15
|
def html_schema_type(value = nil, options = {})
|
13
16
|
return @html_schema_type unless value
|
14
17
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
18
|
+
if const = Mida::Vocabulary.try_load_const(value)
|
19
|
+
value = const
|
20
|
+
else
|
21
|
+
value = /#{value}/ if value.is_a?(Symbol)
|
22
|
+
|
23
|
+
if value.is_a?(Regexp)
|
24
|
+
value = Mida::Vocabulary.vocabularies.find do |vocabulary|
|
25
|
+
vocabulary.itemtype.to_s =~ value && vocabulary.itemtype.to_s
|
26
|
+
end
|
19
27
|
end
|
20
28
|
end
|
21
29
|
|
@@ -17,7 +17,7 @@ require "haml"
|
|
17
17
|
# => <span itemprop="title">Hello</span>
|
18
18
|
|
19
19
|
class Haml::Buffer
|
20
|
-
|
20
|
+
|
21
21
|
# this methods calls then you pass
|
22
22
|
# %tag[object1, object2]
|
23
23
|
# ref argument is array
|
@@ -29,10 +29,10 @@ class Haml::Buffer
|
|
29
29
|
end
|
30
30
|
options
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
def process_object_ref(obj)
|
34
34
|
return {} if !obj
|
35
|
-
|
35
|
+
|
36
36
|
if obj.is_a?(Symbol)
|
37
37
|
# symbol => "itemprop" attribute
|
38
38
|
return {'itemprop' => obj.to_s}
|
@@ -45,20 +45,20 @@ class Haml::Buffer
|
|
45
45
|
options = {}
|
46
46
|
options['class'] = obj.respond_to?(:haml_object_ref) ? obj.haml_object_ref : underscore(obj.class)
|
47
47
|
options['id'] = "#{options['class']}_#{obj.id || 'new'}" if obj.respond_to?(:id)
|
48
|
-
|
48
|
+
|
49
49
|
# my hack for microdata attributes
|
50
50
|
if obj.respond_to?(:html_schema_type)
|
51
51
|
options['itemscope'] = true
|
52
52
|
options['itemid'] = obj.id
|
53
|
-
|
53
|
+
|
54
54
|
if obj.html_schema_type.kind_of?(Mida::Vocabulary)
|
55
55
|
options['itemtype'] = obj.html_schema_type.itemtype.source
|
56
56
|
else
|
57
|
-
raise "No vocabulary found (#{obj.html_schema_type})" unless Mida::Vocabulary.find(obj.html_schema_type)
|
57
|
+
#raise "No vocabulary found (#{obj.html_schema_type})" unless Mida::Vocabulary.find(obj.html_schema_type)
|
58
58
|
options['itemtype'] = obj.html_schema_type
|
59
59
|
end
|
60
60
|
end
|
61
|
-
|
61
|
+
|
62
62
|
return options
|
63
63
|
end
|
64
64
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
require "mida_vocabulary"
|
2
2
|
|
3
|
+
# Provides `Mida` helper funcion to search vocabulatu or create new Mida::Vocabulary::Custom
|
4
|
+
|
3
5
|
class Mida::Vocabulary::Custom < Mida::Vocabulary
|
4
6
|
attr_reader :itemtype
|
5
7
|
def initialize(itemtype)
|
@@ -13,11 +15,11 @@ def Mida(itemtype, addition = nil)
|
|
13
15
|
end
|
14
16
|
|
15
17
|
found_voc = Mida::Vocabulary.find(itemtype)
|
16
|
-
|
18
|
+
|
17
19
|
if found_voc == Mida::GenericVocabulary
|
18
20
|
found_voc = Mida::Vocabulary::Custom.new(itemtype)
|
19
21
|
end
|
20
|
-
|
22
|
+
|
21
23
|
if addition
|
22
24
|
Mida::Vocabulary::Custom.new(found_voc.itemtype.source + "/#{addition}")
|
23
25
|
else
|
@@ -1,6 +1,15 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
require "chronic_duration"
|
4
|
+
|
5
|
+
# Provides view helpers
|
6
|
+
# time_tag with "datetime" support
|
7
|
+
# time_tag_interval for time intervals
|
8
|
+
# time_to_iso8601 time-period converter
|
9
|
+
# mida_scope shortcut to build "itemscope" and "itemtype" attributes
|
10
|
+
# breadcrumb_link_to makes a link with itemtype="http://data-vocabulary.org/Breadcrumb"
|
11
|
+
|
12
|
+
|
4
13
|
module GreenMonkey
|
5
14
|
module ViewHelper
|
6
15
|
|
@@ -20,7 +29,7 @@ module GreenMonkey
|
|
20
29
|
title = nil
|
21
30
|
content = args.first || I18n.l(time, format: format)
|
22
31
|
elsif time.kind_of?(Numeric)
|
23
|
-
title = ChronicDuration.output(time, :
|
32
|
+
title = ChronicDuration.output(time, format: format)
|
24
33
|
content = args.first || distance_of_time_in_words(time)
|
25
34
|
else
|
26
35
|
content = time.to_s
|
@@ -38,7 +47,7 @@ module GreenMonkey
|
|
38
47
|
if time.acts_like?(:time)
|
39
48
|
I18n.l(from, format: format)
|
40
49
|
else
|
41
|
-
ChronicDuration.output(time, :
|
50
|
+
ChronicDuration.output(time, format: format)
|
42
51
|
end
|
43
52
|
end
|
44
53
|
|
@@ -52,26 +61,49 @@ module GreenMonkey
|
|
52
61
|
end
|
53
62
|
|
54
63
|
def time_to_iso8601(time)
|
64
|
+
# http://www.ostyn.com/standards/scorm/samples/ISOTimeForSCORM.htm
|
65
|
+
# P[yY][mM][dD][T[hH][mM][s[.s]S]]
|
66
|
+
|
67
|
+
minute = 60
|
68
|
+
hour = minute * 60
|
69
|
+
day = hour * 24
|
70
|
+
year = day * 365.25
|
71
|
+
month = year / 12
|
72
|
+
|
55
73
|
if time.acts_like?(:time)
|
56
74
|
time.iso8601
|
57
75
|
elsif time.kind_of?(Numeric)
|
58
|
-
|
76
|
+
time = time.to_f
|
77
|
+
return "PT0H0M0S" if time == 0
|
78
|
+
|
79
|
+
parts = ["P"]
|
80
|
+
parts << "#{(time / year).floor}Y" if time >= year
|
81
|
+
parts << "#{(time % year / month).floor}M" if time % year >= month
|
82
|
+
parts << "#{(time % month / day).floor}D" if time % month >= day
|
83
|
+
time = time % month
|
84
|
+
parts << "T" if time % day > 0
|
85
|
+
parts << "#{(time % day / hour).floor}H" if time % day >= hour
|
86
|
+
parts << "#{(time % hour / minute).floor}M" if time % hour >= minute
|
87
|
+
parts << "#{(time % 1 == 0 ? time.to_i : time) % minute}S" if time % minute > 0
|
88
|
+
|
89
|
+
return parts.join
|
59
90
|
end
|
60
91
|
end
|
61
92
|
|
62
93
|
def mida_scope(object)
|
63
94
|
options = {itemscope: true}
|
95
|
+
|
64
96
|
if object.respond_to?(:html_schema_type)
|
65
97
|
if object.html_schema_type.kind_of?(Mida::Vocabulary)
|
66
|
-
options.merge!
|
98
|
+
options.merge!(itemtype: object.html_schema_type.itemtype.source)
|
67
99
|
else
|
68
|
-
raise "No vocabulary found (#{
|
69
|
-
options.merge!
|
100
|
+
raise "No vocabulary found (#{object.html_schema_type})" unless Mida::Vocabulary.find(object.html_schema_type)
|
101
|
+
options.merge!(itemtype: object.html_schema_type)
|
70
102
|
end
|
71
103
|
elsif object.is_a?(Symbol)
|
72
|
-
options.merge!
|
104
|
+
options.merge!(itemtype: Mida(object).itemtype.source)
|
73
105
|
elsif object.is_a?(String)
|
74
|
-
options.merge!
|
106
|
+
options.merge!(itemtype: object)
|
75
107
|
end
|
76
108
|
|
77
109
|
tag_options(options)
|
data/lib/green_monkey/railtie.rb
CHANGED
@@ -5,7 +5,10 @@ module GreenMonkey
|
|
5
5
|
initializer 'green_monkey.init', :before => :load_config_initializers do
|
6
6
|
require "green_monkey/ext/active_model"
|
7
7
|
ActiveModel::Dirty.send :include, GreenMonkey::ModelHelpers
|
8
|
-
|
8
|
+
|
9
|
+
if defined?(ActiveRecord)
|
10
|
+
ActiveRecord::Base.send :include, GreenMonkey::ModelHelpers
|
11
|
+
end
|
9
12
|
|
10
13
|
require 'green_monkey/ext/view_helper'
|
11
14
|
ActionView::Base.send :include, GreenMonkey::ViewHelper
|
data/spec/action_view_spec.rb
CHANGED
@@ -33,7 +33,10 @@ describe "ActionView hacks" do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "should make breadcrumb link" do
|
36
|
-
str = render_haml('= breadcrumb_link_to("Home", "/")')
|
36
|
+
str = render_haml('= breadcrumb_link_to("Home", "/")').strip
|
37
37
|
str.index('http://data-vocabulary.org/Breadcrumb').should_not == nil
|
38
|
+
str.should == '<span itemscope itemtype="http://data-vocabulary.org/Breadcrumb">' +
|
39
|
+
'<a href="/" itemprop="url"><span itemprop="title">Home</span></a>' +
|
40
|
+
'</span>'
|
38
41
|
end
|
39
42
|
end
|
data/spec/haml_spec.rb
CHANGED
@@ -1,53 +1,52 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require "pathname"
|
3
|
-
require "mida"
|
4
3
|
|
5
4
|
$t = 0
|
6
5
|
|
7
6
|
describe "Haml generation" do
|
8
7
|
include TestInlineRenderer
|
9
|
-
|
8
|
+
|
10
9
|
it "should render itemscope as a boolean attribute" do
|
11
10
|
render_haml("%b{:itemscope => true}").should =~ /<b\s+itemscope\s*>/
|
12
11
|
end
|
13
|
-
|
12
|
+
|
14
13
|
it "should get AR object" do
|
15
14
|
user = User.create
|
16
15
|
tpl = "%article[user]"
|
17
16
|
str = render_haml(tpl, user: user)
|
18
|
-
|
17
|
+
|
19
18
|
str.should =~ /itemtype=('|")#{Regexp.escape 'http://example.com/User'}('|")/
|
20
19
|
str.should =~ /itemid=.?#{user.id}/
|
21
20
|
str.should =~ /itemscope/
|
22
21
|
end
|
23
|
-
|
22
|
+
|
24
23
|
it "should render itemprop attribute" do
|
25
24
|
render_haml("%b[:title] Dada").should =~ /itemprop=.?title/
|
26
25
|
end
|
27
|
-
|
26
|
+
|
28
27
|
it "should generate valid microdata layout" do
|
29
28
|
post = Post.create(title: "Post 1", body: "Some text")
|
30
29
|
tpl = Pathname.new(__FILE__).dirname.join("post")
|
31
30
|
str = render_file(tpl, post: post)
|
32
31
|
|
33
|
-
doc =
|
34
|
-
|
35
|
-
props = doc
|
36
|
-
props['url'][0].to_s.should == "
|
32
|
+
doc = parse_mida_page(str)
|
33
|
+
|
34
|
+
props = doc[0][:properties]
|
35
|
+
props['url'][0].to_s.should == "/posts/#{post.id}"
|
37
36
|
props['name'][0].should == post.title
|
38
37
|
props['articleBody'][0].should == post.body
|
39
38
|
props['datePublished'][0].to_i.should == post.created_at.to_i
|
40
|
-
|
41
|
-
doc
|
42
|
-
doc
|
39
|
+
|
40
|
+
doc[0][:id].should == post.id.to_s
|
41
|
+
doc[0][:type].should == post.html_schema_type.itemtype.source
|
43
42
|
end
|
44
|
-
|
43
|
+
|
45
44
|
describe 'time_tag' do
|
46
45
|
it "should produce itemprop if specified" do
|
47
46
|
str = render_haml("= time_tag(Time.now, itemprop: 'time')")
|
48
47
|
str.should =~ /itemprop="time"/
|
49
48
|
end
|
50
|
-
|
49
|
+
|
51
50
|
it "should run with time" do
|
52
51
|
time = Time.now
|
53
52
|
str = render_haml("= time_tag(time)", time: time)
|
@@ -72,7 +71,7 @@ describe "Haml generation" do
|
|
72
71
|
str = render_haml("= time_tag_interval(*time, :format => :short)", time: time)
|
73
72
|
str.should =~ /<time.+datetime=.?#{Regexp.escape time[0].iso8601}\/P6DT6H/
|
74
73
|
end
|
75
|
-
|
74
|
+
|
76
75
|
it "should add class from model" do
|
77
76
|
user = User.create
|
78
77
|
tpl = "%article.person[user]"
|
@@ -81,7 +80,7 @@ describe "Haml generation" do
|
|
81
80
|
html_class.should =~ /person/
|
82
81
|
html_class.should =~ /user/
|
83
82
|
end
|
84
|
-
|
83
|
+
|
85
84
|
it "should make itemscope as boolean attribute" do
|
86
85
|
str = render_haml("%div{:itemscope => true}")
|
87
86
|
str.should =~ %r{<div\s+itemscope\s*/?>}
|
data/spec/mida_spec.rb
CHANGED
@@ -4,12 +4,12 @@ describe "Mida helper" do
|
|
4
4
|
it "should find vocabulary class" do
|
5
5
|
Mida(:BlogPosting).should == Mida::SchemaOrg::BlogPosting
|
6
6
|
Mida("http://schema.org/BlogPosting").should == Mida::SchemaOrg::BlogPosting
|
7
|
-
|
7
|
+
|
8
8
|
custom = Mida("http://t.co/BlogPosting")
|
9
9
|
custom.itemtype.source == "http://t.co/BlogPosting"
|
10
10
|
custom.class.should == Mida::Vocabulary::Custom
|
11
11
|
end
|
12
|
-
|
12
|
+
|
13
13
|
it "should make Mida::Vocabulary::Custom for extended vocabularies" do
|
14
14
|
extended = Mida(:Blog, :SexJokes)
|
15
15
|
extended.class.should == Mida::Vocabulary::Custom
|
data/spec/model_spec.rb
CHANGED
@@ -4,16 +4,21 @@ describe ActiveModel do
|
|
4
4
|
it "should check ActiveModel extention" do
|
5
5
|
ActiveRecord::Base.should respond_to(:html_schema_type)
|
6
6
|
end
|
7
|
-
|
7
|
+
|
8
8
|
it "should return schema-type on #html_schema_type" do
|
9
9
|
Post.html_schema_type.should == Post.new.html_schema_type
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
it "should return instance of kind Mida::Vocabulary" do
|
13
13
|
Post.new.html_schema_type.should == Mida::SchemaOrg::BlogPosting
|
14
14
|
end
|
15
|
-
|
15
|
+
|
16
16
|
it "should return string on unknown itemtype" do
|
17
17
|
User.html_schema_type.should == "http://example.com/User"
|
18
18
|
end
|
19
|
+
|
20
|
+
it "should return properties" do
|
21
|
+
# make sure it load parents' properties
|
22
|
+
Post.html_schema_type.properties.keys.size.should >= 60
|
23
|
+
end
|
19
24
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -27,6 +27,8 @@ module Rails
|
|
27
27
|
end
|
28
28
|
|
29
29
|
Rails.application.config.root = Rails.root
|
30
|
+
Rails.application.config.eager_load = false
|
31
|
+
|
30
32
|
TestApp::Application.initialize!
|
31
33
|
|
32
34
|
ActiveRecord::Schema.define(:version => 20111023054000) do
|
@@ -67,4 +69,41 @@ module TestInlineRenderer
|
|
67
69
|
File.open(file, 'w+') {|f| f.write template }
|
68
70
|
render_file(file.sub(/.haml$/, ''), options)
|
69
71
|
end
|
72
|
+
end
|
73
|
+
|
74
|
+
RSpec.configure do |config|
|
75
|
+
config.expect_with :rspec do |c|
|
76
|
+
c.syntax = [:should, :expect]
|
77
|
+
end
|
78
|
+
|
79
|
+
config.mock_with :rspec do |c|
|
80
|
+
c.syntax = [:should, :expect]
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
# Simple microdata parser
|
85
|
+
def parse_mida_page(str)
|
86
|
+
require 'nokogiri'
|
87
|
+
doc = Nokogiri::HTML(str)
|
88
|
+
items = []
|
89
|
+
doc.css('[itemscope]').each do |scope|
|
90
|
+
item = {type: scope.attr('itemtype'), id: scope.attr('itemid')}
|
91
|
+
props = {}
|
92
|
+
scope.css('[itemprop]').each do |el|
|
93
|
+
prop_name = el.attr('itemprop')
|
94
|
+
if prop_name == 'url'
|
95
|
+
prop_value = el.attr('href')
|
96
|
+
elsif prop_name == 'datePublished' || prop_name.start_with?('date')
|
97
|
+
prop_value = DateTime.parse(el.attr('datetime'))
|
98
|
+
else
|
99
|
+
prop_value = el.inner_text
|
100
|
+
end
|
101
|
+
props[prop_name] ||= []
|
102
|
+
props[prop_name] << prop_value
|
103
|
+
end
|
104
|
+
|
105
|
+
item[:properties] = props
|
106
|
+
items << item
|
107
|
+
end
|
108
|
+
items
|
70
109
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe GreenMonkey::ViewHelper do
|
4
|
+
include ActionView::Helpers::TagHelper
|
5
|
+
include GreenMonkey::ViewHelper
|
6
|
+
|
7
|
+
it "should convert time period to iso8601 period" do
|
8
|
+
time_to_iso8601(3 * 60 * 60 + 20 * 60 + 19).should == "PT3H20M19S"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should convert date period to iso8601 period" do
|
12
|
+
time_to_iso8601(500 * 24 * 60 * 60 + 3 * 60 * 60 + 20 * 60 + 19).should == "P1Y4M13DT3H20M19S"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should work with simple" do
|
16
|
+
time_to_iso8601(31557600).should == "P1Y"
|
17
|
+
time_to_iso8601(2629800).should == "P1M"
|
18
|
+
time_to_iso8601(86400).should == "P1D"
|
19
|
+
time_to_iso8601(3600).should == "PT1H"
|
20
|
+
time_to_iso8601(60).should == "PT1M"
|
21
|
+
time_to_iso8601(1).should == "PT1S"
|
22
|
+
time_to_iso8601(0).should == "PT0H0M0S"
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should build time tag" do
|
26
|
+
time = DateTime.parse("09-09-2014 9:38AM")
|
27
|
+
time_tag(time).should == %{<time datetime="2014-09-09T09:38:00+00:00">September 09, 2014 09:38</time>}
|
28
|
+
end
|
29
|
+
|
30
|
+
it "should make time interval tag" do
|
31
|
+
time = DateTime.parse("09-09-2014 9:38AM")
|
32
|
+
tag = time_tag_interval(time, 1.hour + 20.minutes)
|
33
|
+
expected_html = %{<time datetime="2014-09-09T09:38:00+00:00/PT1H20M">September 09, 2014 09:38 in 1 hour 20 minutes</time>}
|
34
|
+
tag.should == expected_html
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should build itemscope and itentype attributes" do
|
38
|
+
mida_scope(:Airline).should == %{ itemscope itemtype="http://schema.org/Airline"}
|
39
|
+
mida_scope(Post).should == %{ itemscope itemtype="http://schema.org/BlogPosting"}
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
metadata
CHANGED
@@ -1,160 +1,145 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: green_monkey
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.2.2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Pavel Evstigneev
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-09-09 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: haml
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ">="
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: 3.1.0
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ">="
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: 3.1.0
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: mida_vocabulary
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
33
|
+
version: 0.2.2
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
40
|
+
version: 0.2.2
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: chronic_duration
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - ">="
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - ">="
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: bundler
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ">="
|
68
60
|
- !ruby/object:Gem::Version
|
69
61
|
version: 1.0.0
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ">="
|
76
67
|
- !ruby/object:Gem::Version
|
77
68
|
version: 1.0.0
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: rspec
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
72
|
requirements:
|
83
|
-
- -
|
73
|
+
- - ">="
|
84
74
|
- !ruby/object:Gem::Version
|
85
|
-
version: 2.
|
75
|
+
version: 2.9.0
|
86
76
|
type: :development
|
87
77
|
prerelease: false
|
88
78
|
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
79
|
requirements:
|
91
|
-
- -
|
80
|
+
- - ">="
|
92
81
|
- !ruby/object:Gem::Version
|
93
|
-
version: 2.
|
82
|
+
version: 2.9.0
|
94
83
|
- !ruby/object:Gem::Dependency
|
95
84
|
name: rspec-rails
|
96
85
|
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
86
|
requirements:
|
99
|
-
- -
|
87
|
+
- - ">="
|
100
88
|
- !ruby/object:Gem::Version
|
101
89
|
version: '0'
|
102
90
|
type: :development
|
103
91
|
prerelease: false
|
104
92
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
93
|
requirements:
|
107
|
-
- -
|
94
|
+
- - ">="
|
108
95
|
- !ruby/object:Gem::Version
|
109
96
|
version: '0'
|
110
97
|
- !ruby/object:Gem::Dependency
|
111
|
-
name:
|
98
|
+
name: nokogiri
|
112
99
|
requirement: !ruby/object:Gem::Requirement
|
113
|
-
none: false
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
type: :development
|
119
105
|
prerelease: false
|
120
106
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
none: false
|
122
107
|
requirements:
|
123
|
-
- -
|
108
|
+
- - ">="
|
124
109
|
- !ruby/object:Gem::Version
|
125
110
|
version: '0'
|
126
111
|
- !ruby/object:Gem::Dependency
|
127
112
|
name: sqlite3
|
128
113
|
requirement: !ruby/object:Gem::Requirement
|
129
|
-
none: false
|
130
114
|
requirements:
|
131
|
-
- -
|
115
|
+
- - ">="
|
132
116
|
- !ruby/object:Gem::Version
|
133
117
|
version: '0'
|
134
118
|
type: :development
|
135
119
|
prerelease: false
|
136
120
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
121
|
requirements:
|
139
|
-
- -
|
122
|
+
- - ">="
|
140
123
|
- !ruby/object:Gem::Version
|
141
124
|
version: '0'
|
142
|
-
description:
|
125
|
+
description: Provides useful helpers to map object with microdata types and display
|
126
|
+
object's properties in view
|
143
127
|
email:
|
144
128
|
- pavel.evst@gmail.com
|
145
129
|
executables: []
|
146
130
|
extensions: []
|
147
131
|
extra_rdoc_files: []
|
148
132
|
files:
|
149
|
-
- .gitignore
|
150
|
-
- .rspec
|
151
|
-
- .travis.yml
|
133
|
+
- ".gitignore"
|
134
|
+
- ".rspec"
|
135
|
+
- ".travis.yml"
|
152
136
|
- Gemfile
|
153
137
|
- Gemfile.haml-edge
|
154
138
|
- Gemfile.lock
|
155
139
|
- Gemfile.rails-3.0
|
156
140
|
- Gemfile.rails-3.1
|
157
141
|
- Gemfile.rails-3.2
|
142
|
+
- Gemfile.rails-4.1
|
158
143
|
- README.md
|
159
144
|
- Rakefile
|
160
145
|
- green_monkey.gemspec
|
@@ -176,32 +161,34 @@ files:
|
|
176
161
|
- spec/model_spec.rb
|
177
162
|
- spec/post.haml
|
178
163
|
- spec/spec_helper.rb
|
164
|
+
- spec/view_helper_spec.rb
|
179
165
|
- tmp/rails/assets/stylesheets/application.sass
|
180
166
|
- tmp/rails/config/database.yml
|
181
167
|
- tmp/rails/config/environments/development.rb
|
182
168
|
- tmp/rails/config/environments/test.rb
|
183
169
|
homepage: https://github.com/paxa/green_monkey
|
184
|
-
licenses:
|
170
|
+
licenses:
|
171
|
+
- MIT
|
172
|
+
metadata: {}
|
185
173
|
post_install_message:
|
186
174
|
rdoc_options: []
|
187
175
|
require_paths:
|
188
176
|
- lib
|
189
177
|
required_ruby_version: !ruby/object:Gem::Requirement
|
190
|
-
none: false
|
191
178
|
requirements:
|
192
|
-
- -
|
179
|
+
- - ">="
|
193
180
|
- !ruby/object:Gem::Version
|
194
|
-
version: '
|
181
|
+
version: '1.9'
|
195
182
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
196
|
-
none: false
|
197
183
|
requirements:
|
198
|
-
- -
|
184
|
+
- - ">="
|
199
185
|
- !ruby/object:Gem::Version
|
200
186
|
version: 1.2.0
|
201
187
|
requirements: []
|
202
188
|
rubyforge_project:
|
203
|
-
rubygems_version:
|
189
|
+
rubygems_version: 2.4.1
|
204
190
|
signing_key:
|
205
|
-
specification_version:
|
206
|
-
summary: Rails and Haml microdata
|
191
|
+
specification_version: 4
|
192
|
+
summary: Rails and Haml microdata toolkit
|
207
193
|
test_files: []
|
194
|
+
has_rdoc:
|