green_monkey 0.1.4 → 0.2.2
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.
- 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
|

|
|
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:
|