green_monkey 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/.travis.yml CHANGED
@@ -3,7 +3,7 @@ rvm:
3
3
  - 1.9.2
4
4
  - 1.9.3
5
5
  gemfile:
6
- - Gemfile.rails-3.0.11
7
- - Gemfile.rails-3.1.3
6
+ - Gemfile.rails-3.0
7
+ - Gemfile.rails-3.1
8
8
  - Gemfile.rails-3.2
9
9
  - Gemfile.haml-edge
data/Gemfile CHANGED
@@ -1,5 +1,5 @@
1
1
  source :rubygems
2
2
  gemspec
3
- gem "mida", git: 'git@github.com:Paxa/mida.git', ref: '7db7149a2cf'
4
- gem "rails", "3.2.0.rc2"
3
+ gem "mida", git: 'git://github.com/Paxa/mida.git', ref: '5289a3be1'
4
+ gem "rails", "3.2.3"
5
5
  gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref: '8c0d0e101b'
data/Gemfile.haml-edge CHANGED
@@ -1,5 +1,6 @@
1
1
  source :rubygems
2
2
  gemspec
3
3
  gem "haml", git: "https://github.com/nex3/haml.git", ref: "630b8fe2033e6"
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'
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'
6
+ gem 'tzinfo'
data/Gemfile.lock CHANGED
@@ -7,9 +7,9 @@ GIT
7
7
  numerizer (~> 0.1.1)
8
8
 
9
9
  GIT
10
- remote: git@github.com:Paxa/mida.git
11
- revision: 7db7149a2cf7d60bb4b570ce89094b56d86642af
12
- ref: 7db7149a2cf
10
+ remote: git://github.com/Paxa/mida.git
11
+ revision: 5289a3be11941f4698136fafddd1c2218765181a
12
+ ref: 5289a3be1
13
13
  specs:
14
14
  mida (0.3.4)
15
15
  mida_vocabulary (>= 0.1)
@@ -18,43 +18,42 @@ GIT
18
18
  PATH
19
19
  remote: .
20
20
  specs:
21
- green_monkey (0.1.1)
21
+ green_monkey (0.1.2)
22
22
  chronic_duration
23
23
  haml (>= 3.1.0)
24
24
  mida_vocabulary (>= 0.1)
25
- rails (>= 3.0.0)
26
25
 
27
26
  GEM
28
27
  remote: http://rubygems.org/
29
28
  specs:
30
- actionmailer (3.2.0.rc2)
31
- actionpack (= 3.2.0.rc2)
32
- mail (~> 2.3.0)
33
- actionpack (3.2.0.rc2)
34
- activemodel (= 3.2.0.rc2)
35
- activesupport (= 3.2.0.rc2)
29
+ actionmailer (3.2.3)
30
+ actionpack (= 3.2.3)
31
+ mail (~> 2.4.4)
32
+ actionpack (3.2.3)
33
+ activemodel (= 3.2.3)
34
+ activesupport (= 3.2.3)
36
35
  builder (~> 3.0.0)
37
36
  erubis (~> 2.7.0)
38
- journey (~> 1.0.0.rc1)
37
+ journey (~> 1.0.1)
39
38
  rack (~> 1.4.0)
40
- rack-cache (~> 1.1)
39
+ rack-cache (~> 1.2)
41
40
  rack-test (~> 0.6.1)
42
41
  sprockets (~> 2.1.2)
43
- activemodel (3.2.0.rc2)
44
- activesupport (= 3.2.0.rc2)
42
+ activemodel (3.2.3)
43
+ activesupport (= 3.2.3)
45
44
  builder (~> 3.0.0)
46
- activerecord (3.2.0.rc2)
47
- activemodel (= 3.2.0.rc2)
48
- activesupport (= 3.2.0.rc2)
49
- arel (~> 3.0.0.rc1)
45
+ activerecord (3.2.3)
46
+ activemodel (= 3.2.3)
47
+ activesupport (= 3.2.3)
48
+ arel (~> 3.0.2)
50
49
  tzinfo (~> 0.3.29)
51
- activeresource (3.2.0.rc2)
52
- activemodel (= 3.2.0.rc2)
53
- activesupport (= 3.2.0.rc2)
54
- activesupport (3.2.0.rc2)
50
+ activeresource (3.2.3)
51
+ activemodel (= 3.2.3)
52
+ activesupport (= 3.2.3)
53
+ activesupport (3.2.3)
55
54
  i18n (~> 0.6)
56
55
  multi_json (~> 1.0)
57
- arel (3.0.0)
56
+ arel (3.0.2)
58
57
  blankslate (2.1.2.4)
59
58
  builder (3.0.0)
60
59
  diff-lcs (1.1.3)
@@ -62,37 +61,37 @@ GEM
62
61
  haml (3.1.4)
63
62
  hike (1.2.1)
64
63
  i18n (0.6.0)
65
- journey (1.0.0)
66
- json (1.6.4)
67
- mail (2.3.0)
64
+ journey (1.0.3)
65
+ json (1.6.6)
66
+ mail (2.4.4)
68
67
  i18n (>= 0.4.0)
69
68
  mime-types (~> 1.16)
70
69
  treetop (~> 1.4.8)
71
- mida_vocabulary (0.1)
70
+ mida_vocabulary (0.1.3)
72
71
  blankslate
73
- mime-types (1.17.2)
74
- multi_json (1.0.4)
75
- nokogiri (1.5.0)
72
+ mime-types (1.18)
73
+ multi_json (1.2.0)
74
+ nokogiri (1.5.2)
76
75
  numerizer (0.1.1)
77
76
  polyglot (0.3.3)
78
- rack (1.4.0)
79
- rack-cache (1.1)
77
+ rack (1.4.1)
78
+ rack-cache (1.2)
80
79
  rack (>= 0.4)
81
80
  rack-ssl (1.3.2)
82
81
  rack
83
82
  rack-test (0.6.1)
84
83
  rack (>= 1.0)
85
- rails (3.2.0.rc2)
86
- actionmailer (= 3.2.0.rc2)
87
- actionpack (= 3.2.0.rc2)
88
- activerecord (= 3.2.0.rc2)
89
- activeresource (= 3.2.0.rc2)
90
- activesupport (= 3.2.0.rc2)
84
+ rails (3.2.3)
85
+ actionmailer (= 3.2.3)
86
+ actionpack (= 3.2.3)
87
+ activerecord (= 3.2.3)
88
+ activeresource (= 3.2.3)
89
+ activesupport (= 3.2.3)
91
90
  bundler (~> 1.0)
92
- railties (= 3.2.0.rc2)
93
- railties (3.2.0.rc2)
94
- actionpack (= 3.2.0.rc2)
95
- activesupport (= 3.2.0.rc2)
91
+ railties (= 3.2.3)
92
+ railties (3.2.3)
93
+ actionpack (= 3.2.3)
94
+ activesupport (= 3.2.3)
96
95
  rack-ssl (~> 1.3.2)
97
96
  rake (>= 0.8.7)
98
97
  rdoc (~> 3.4)
@@ -100,19 +99,19 @@ GEM
100
99
  rake (0.9.2.2)
101
100
  rdoc (3.12)
102
101
  json (~> 1.4)
103
- rspec (2.8.0)
104
- rspec-core (~> 2.8.0)
105
- rspec-expectations (~> 2.8.0)
106
- rspec-mocks (~> 2.8.0)
107
- rspec-core (2.8.0)
108
- rspec-expectations (2.8.0)
109
- diff-lcs (~> 1.1.2)
110
- rspec-mocks (2.8.0)
111
- rspec-rails (2.8.1)
102
+ rspec (2.9.0)
103
+ rspec-core (~> 2.9.0)
104
+ rspec-expectations (~> 2.9.0)
105
+ rspec-mocks (~> 2.9.0)
106
+ rspec-core (2.9.0)
107
+ rspec-expectations (2.9.1)
108
+ diff-lcs (~> 1.1.3)
109
+ rspec-mocks (2.9.0)
110
+ rspec-rails (2.9.0)
112
111
  actionpack (>= 3.0)
113
112
  activesupport (>= 3.0)
114
113
  railties (>= 3.0)
115
- rspec (~> 2.8.0)
114
+ rspec (~> 2.9.0)
116
115
  sprockets (2.1.2)
117
116
  hike (~> 1.2)
118
117
  rack (~> 1.0)
@@ -123,7 +122,7 @@ GEM
123
122
  treetop (1.4.10)
124
123
  polyglot
125
124
  polyglot (>= 0.3.1)
126
- tzinfo (0.3.31)
125
+ tzinfo (0.3.33)
127
126
 
128
127
  PLATFORMS
129
128
  ruby
@@ -133,7 +132,7 @@ DEPENDENCIES
133
132
  chronic_duration!
134
133
  green_monkey!
135
134
  mida!
136
- rails (= 3.2.0.rc2)
135
+ rails (= 3.2.3)
137
136
  rspec (>= 2.7.0)
138
137
  rspec-rails
139
138
  sqlite3
data/Gemfile.rails-3.0 ADDED
@@ -0,0 +1,5 @@
1
+ source :rubygems
2
+ gemspec
3
+ gem "rails", "3.0.12"
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'
data/Gemfile.rails-3.1 ADDED
@@ -0,0 +1,5 @@
1
+ source :rubygems
2
+ gemspec
3
+ gem "rails", "3.1.4"
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'
data/Gemfile.rails-3.2 CHANGED
@@ -1,5 +1,5 @@
1
1
  source :rubygems
2
2
  gemspec
3
- gem "rails", "3.2.0.rc2"
4
- gem "mida", git: 'git@github.com:Paxa/mida.git', ref: '7db7149a2cf'
3
+ gem "rails", "3.2.2"
4
+ gem "mida", git: 'git://github.com/Paxa/mida.git', ref: '7db7149a2cf'
5
5
  gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref: '8c0d0e101b'
data/README.md CHANGED
@@ -12,7 +12,6 @@ Add to Gemfile
12
12
 
13
13
  ```ruby
14
14
  gem "green_monkey", '0.1.2'
15
- gem "mida", git: 'git@github.com:Paxa/mida.git', ref: '7db7149a2cf'
16
15
  gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref: '8c0d0e101b'
17
16
  ```
18
17
 
@@ -20,8 +19,8 @@ gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref:
20
19
 
21
20
  ### helper `time_tag`
22
21
 
23
- It almost as rails' time_tag but make `datetime` attribute in iso8601 format, according to Microdata specifications
24
- Also it accepts Numeric values as duration
22
+ It almost the same with rails' time_tag but make `datetime` attribute in iso8601 format, according to Microdata specifications.
23
+ Also it accepts Numeric values as duration for time intervals
25
24
 
26
25
  Haml & HTML:
27
26
 
@@ -59,7 +58,7 @@ class User < ActiveRecord::Base
59
58
  end
60
59
 
61
60
  User.html_schema_type #=> Mida::SchemaOrg::Person
62
- User.find(1).html_schema_type => Mida::SchemaOrg::Person
61
+ User.find(1).html_schema_type #=> Mida::SchemaOrg::Person
63
62
  ```
64
63
 
65
64
  ### Haml magic
data/green_monkey.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "green_monkey"
5
- s.version = '0.1.3'
5
+ s.version = '0.1.4'
6
6
  s.platform = Gem::Platform::RUBY
7
7
  s.authors = ["Pavel Evstigneev"]
8
8
  s.email = ["pavel.evst@gmail.com"]
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.required_rubygems_version = ">= 1.2.0"
14
14
 
15
- s.add_runtime_dependency 'rails', '>= 3.0.0'
15
+ #s.add_runtime_dependency 'rails', '>= 3.0.0'
16
16
  s.add_runtime_dependency 'haml', '>= 3.1.0'
17
17
  s.add_runtime_dependency 'mida_vocabulary', '>= 0.1'
18
18
  s.add_runtime_dependency 'chronic_duration'
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.add_development_dependency "bundler", ">= 1.0.0"
21
21
  s.add_development_dependency "rspec", ">= 2.7.0"
22
22
  s.add_development_dependency "rspec-rails"
23
- #s.add_development_dependency "mida"
23
+ s.add_development_dependency "mida"
24
24
  s.add_development_dependency 'sqlite3'
25
25
 
26
26
  s.files = `git ls-files`.split("\n")
@@ -1,22 +1,22 @@
1
1
  module ActionView::Helpers::TagHelper
2
+ # Rails by default does not behave with itemscope as boolean attribute
3
+ # and renders it as itemscope="true"
4
+
5
+ # this changes make it render as itemscope="itemscope"
2
6
  BOOLEAN_ATTRIBUTES.merge(['itemscope', :itemscope])
3
7
 
4
8
  private
9
+
10
+ # this hack replaces itemscope="itemscope" => itemscope
11
+ # to make it follow standarts (http://www.w3.org/TR/microdata/#typed-items)
12
+ alias_method :tag_options_before_green_monkey, :tag_options
5
13
  def tag_options(options, escape = true)
6
- #p [options, escape, BOOLEAN_ATTRIBUTES]
7
- unless options.blank?
8
- attrs = []
9
- options.each_pair do |key, value|
10
- if BOOLEAN_ATTRIBUTES.include?(key)
11
- attrs << key.to_s if value
12
- elsif !value.nil?
13
- final_value = value.is_a?(Array) ? value.join(" ") : value
14
- final_value = ERB::Util.html_escape(final_value) if escape
15
- attrs << %(#{key}="#{final_value}")
16
- end
17
- end
14
+ str = tag_options_before_green_monkey(options, escape)
18
15
 
19
- " #{attrs.sort * ' '}".html_safe unless attrs.empty?
16
+ if options['itemscope'] || options[:itemscope]
17
+ str = (str + '').sub(/itemscope=('|")itemscope('|")/, 'itemscope').html_safe
20
18
  end
19
+
20
+ str
21
21
  end
22
22
  end
@@ -9,7 +9,7 @@ module GreenMonkey
9
9
  end
10
10
 
11
11
  module ClassMethods
12
- def html_schema_type(value = nil)
12
+ def html_schema_type(value = nil, options = {})
13
13
  return @html_schema_type unless value
14
14
 
15
15
  value = /#{value}/ if value.is_a?(Symbol)
@@ -20,6 +20,7 @@ module GreenMonkey
20
20
  end
21
21
 
22
22
  @html_schema_type = value
23
+ @html_schema_options = options
23
24
  end
24
25
  end
25
26
  end
@@ -27,7 +27,6 @@ class Haml::Buffer
27
27
  next if obj == "local-variable"
28
28
  self.class.merge_attrs(options, process_object_ref(obj))
29
29
  end
30
-
31
30
  options
32
31
  end
33
32
 
@@ -39,24 +38,24 @@ class Haml::Buffer
39
38
  return {'itemprop' => obj.to_s}
40
39
  elsif obj.kind_of?(Mida::Vocabulary)
41
40
  # Mida::Vocabulary => itemprop and itemtype
42
- return {itemscope: true, itemtype: obj.itemtype.source}
41
+ return {'itemscope' => true, 'itemtype' => obj.itemtype.source}
43
42
  elsif obj.is_a?(String)
44
- return {class: obj}
43
+ return {'class' => obj}
45
44
  else
46
45
  options = {}
47
- options[:class] = obj.respond_to?(:haml_object_ref) ? obj.haml_object_ref : underscore(obj.class)
48
- options[:id] = "#{options[:class]}_#{obj.id || 'new'}" if obj.respond_to?(:id)
46
+ options['class'] = obj.respond_to?(:haml_object_ref) ? obj.haml_object_ref : underscore(obj.class)
47
+ options['id'] = "#{options['class']}_#{obj.id || 'new'}" if obj.respond_to?(:id)
49
48
 
50
49
  # my hack for microdata attributes
51
50
  if obj.respond_to?(:html_schema_type)
52
- options[:itemscope] = true
53
- options[:itemid] = obj.id
51
+ options['itemscope'] = true
52
+ options['itemid'] = obj.id
54
53
 
55
54
  if obj.html_schema_type.kind_of?(Mida::Vocabulary)
56
- options[:itemtype] = obj.html_schema_type.itemtype.source
55
+ options['itemtype'] = obj.html_schema_type.itemtype.source
57
56
  else
58
57
  raise "No vocabulary found (#{obj.html_schema_type})" unless Mida::Vocabulary.find(obj.html_schema_type)
59
- options[:itemtype] = obj.html_schema_type
58
+ options['itemtype'] = obj.html_schema_type
60
59
  end
61
60
  end
62
61
 
@@ -23,12 +23,4 @@ def Mida(itemtype, addition = nil)
23
23
  else
24
24
  found_voc
25
25
  end
26
- end
27
-
28
- require "uri"
29
-
30
- module URI
31
- def to_json
32
- to_s.to_json
33
- end
34
26
  end
@@ -3,10 +3,10 @@
3
3
  require "chronic_duration"
4
4
  module GreenMonkey
5
5
  module ViewHelper
6
-
6
+
7
7
  # it shortcut for this
8
- #%time{:datetime => post.published_at.iso8601(10) }= post.published_at.strftime("%d %h %Y")
9
-
8
+ # %time{:datetime => post.published_at.iso8601(10) }= post.published_at.strftime("%d %h %Y")
9
+
10
10
  # = time_tag post.created_at
11
11
  # = time_tag post.created_at, format: "%d %h %Y %R%p"
12
12
  # = time_tag post.created_at, itemprop: "datePublished"
@@ -14,23 +14,25 @@ module GreenMonkey
14
14
  options = args.extract_options!
15
15
  format = options.delete(:format) || :long
16
16
  datetime = time_to_iso8601(time)
17
-
18
-
17
+
18
+
19
19
  if time.acts_like?(:time)
20
20
  title = nil
21
21
  content = args.first || I18n.l(time, format: format)
22
22
  elsif time.kind_of?(Numeric)
23
23
  title = ChronicDuration.output(time, :format => format)
24
24
  content = args.first || distance_of_time_in_words(time)
25
+ else
26
+ content = time.to_s
25
27
  end
26
-
27
28
  content_tag(:time, content, options.reverse_merge(datetime: datetime, title: title))
28
29
  end
29
-
30
+
31
+ # as second argumnts can get as Time/DateTime object as duration in seconds
30
32
  def time_tag_interval(from, to, *args)
31
33
  options = args.extract_options!
32
34
  format = options.delete(:format) || :long
33
-
35
+
34
36
  datetime = [from, to].map(&method(:time_to_iso8601)).join("/")
35
37
  content = args.first || [from, to].map do |time|
36
38
  if time.acts_like?(:time)
@@ -39,16 +41,16 @@ module GreenMonkey
39
41
  ChronicDuration.output(time, :format => format)
40
42
  end
41
43
  end
42
-
44
+
43
45
  if to.acts_like?(:time)
44
46
  content = content.join(" - ")
45
47
  else
46
48
  content = content.join(" in ")
47
49
  end
48
-
50
+
49
51
  content_tag(:time, content, options.reverse_merge(datetime: datetime))
50
52
  end
51
-
53
+
52
54
  def time_to_iso8601(time)
53
55
  if time.acts_like?(:time)
54
56
  time.iso8601
@@ -56,5 +58,29 @@ module GreenMonkey
56
58
  ChronicDuration.output(time, :format => :iso8601)
57
59
  end
58
60
  end
61
+
62
+ def mida_scope(object)
63
+ options = {itemscope: true}
64
+ if object.respond_to?(:html_schema_type)
65
+ if object.html_schema_type.kind_of?(Mida::Vocabulary)
66
+ options.merge! itemtype: object.html_schema_type.itemtype.source
67
+ else
68
+ raise "No vocabulary found (#{obj.html_schema_type})" unless Mida::Vocabulary.find(obj.html_schema_type)
69
+ options.merge! itemtype: object.html_schema_type
70
+ end
71
+ elsif object.is_a?(Symbol)
72
+ options.merge! itemtype: Mida(object)
73
+ elsif object.is_a?(String)
74
+ options.merge! itemtype: object
75
+ end
76
+
77
+ tag_options(options)
78
+ end
79
+
80
+ def breadcrumb_link_to(title, path, options = {})
81
+ content_tag(:span, itemscope: true, itemtype: 'http://data-vocabulary.org/Breadcrumb') do
82
+ link_to(content_tag(:span, title, itemprop: 'title'), path, options.merge(itemprop: 'url')) + ''
83
+ end
84
+ end
59
85
  end
60
86
  end
@@ -2,13 +2,14 @@
2
2
 
3
3
  module GreenMonkey
4
4
  class Railtie < Rails::Railtie
5
- initializer "load extentions and patches" do
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
+ ActiveRecord::Base.send :include, GreenMonkey::ModelHelpers
9
+
9
10
  require 'green_monkey/ext/view_helper'
10
11
  ActionView::Base.send :include, GreenMonkey::ViewHelper
11
-
12
+
12
13
  require "green_monkey/ext/action_view"
13
14
  require "green_monkey/ext/haml"
14
15
  require "green_monkey/ext/mida"
data/lib/green_monkey.rb CHANGED
@@ -1,3 +1,33 @@
1
1
  module GreenMonkey
2
- require 'green_monkey/railtie'
2
+ if defined? Rails
3
+ require 'green_monkey/railtie'
4
+ else
5
+ require "green_monkey/ext/mida"
6
+ require "green_monkey/ext/haml" if defined? Haml
7
+
8
+ if defined? ActiveModel
9
+ require "green_monkey/ext/active_model"
10
+ ActiveModel::Dirty.send :include, GreenMonkey::ModelHelpers
11
+ end
12
+
13
+ if defined? ActiveRecord
14
+ require "green_monkey/ext/active_model"
15
+ ActiveRecord::Base.send :include, GreenMonkey::ModelHelpers
16
+ end
17
+
18
+
19
+ if defined? ActionView
20
+ require "green_monkey/ext/action_view"
21
+ require 'green_monkey/ext/view_helper'
22
+ ActionView::Base.send :include, GreenMonkey::ViewHelper
23
+ end
24
+ end
25
+
26
+ if defined?(Sinatra)
27
+ require 'green_monkey/ext/view_helper'
28
+ Sinatra.helpers do
29
+ include ActionView::Helpers::TagHelper if defined?(ActionView)
30
+ include GreenMonkey::ViewHelper
31
+ end
32
+ end
3
33
  end
@@ -0,0 +1,5 @@
1
+ source :rubygems
2
+ gem "green_monkey", :path => "../", :require => "green_monkey"
3
+ gem 'chronic_duration', git: 'git://github.com/Paxa/chronic_duration.git', ref: '8c0d0e101b'
4
+ gem 'actionpack', require: false
5
+ gem 'sinatra'
@@ -0,0 +1,71 @@
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
+ PATH
10
+ remote: ../
11
+ specs:
12
+ green_monkey (0.1.2)
13
+ chronic_duration
14
+ haml (>= 3.1.0)
15
+ mida_vocabulary (>= 0.1)
16
+
17
+ GEM
18
+ remote: http://rubygems.org/
19
+ specs:
20
+ actionpack (3.2.2)
21
+ activemodel (= 3.2.2)
22
+ activesupport (= 3.2.2)
23
+ builder (~> 3.0.0)
24
+ erubis (~> 2.7.0)
25
+ journey (~> 1.0.1)
26
+ rack (~> 1.4.0)
27
+ rack-cache (~> 1.1)
28
+ rack-test (~> 0.6.1)
29
+ sprockets (~> 2.1.2)
30
+ activemodel (3.2.2)
31
+ activesupport (= 3.2.2)
32
+ builder (~> 3.0.0)
33
+ activesupport (3.2.2)
34
+ i18n (~> 0.6)
35
+ multi_json (~> 1.0)
36
+ blankslate (2.1.2.4)
37
+ builder (3.0.0)
38
+ erubis (2.7.0)
39
+ haml (3.1.4)
40
+ hike (1.2.1)
41
+ i18n (0.6.0)
42
+ journey (1.0.3)
43
+ mida_vocabulary (0.1)
44
+ blankslate
45
+ multi_json (1.1.0)
46
+ numerizer (0.1.1)
47
+ rack (1.4.1)
48
+ rack-cache (1.1)
49
+ rack (>= 0.4)
50
+ rack-protection (1.2.0)
51
+ rack
52
+ rack-test (0.6.1)
53
+ rack (>= 1.0)
54
+ sinatra (1.3.2)
55
+ rack (~> 1.3, >= 1.3.6)
56
+ rack-protection (~> 1.2)
57
+ tilt (~> 1.3, >= 1.3.3)
58
+ sprockets (2.1.2)
59
+ hike (~> 1.2)
60
+ rack (~> 1.0)
61
+ tilt (~> 1.1, != 1.3.0)
62
+ tilt (1.3.3)
63
+
64
+ PLATFORMS
65
+ ruby
66
+
67
+ DEPENDENCIES
68
+ actionpack
69
+ chronic_duration!
70
+ green_monkey!
71
+ sinatra
@@ -0,0 +1,38 @@
1
+ require 'bundler/setup'
2
+
3
+ require 'rubygems'
4
+
5
+ require 'action_view'
6
+ require 'sinatra'
7
+ require 'green_monkey'
8
+ require 'ostruct'
9
+
10
+
11
+ get '/' do
12
+ @post = OpenStruct.new(
13
+ html_schema_type: Mida(:BlogPosting),
14
+ id: 5,
15
+ title: 'Hello world',
16
+ body: 'Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort',
17
+ created_at: Time.parse('10-feb-2012')
18
+ )
19
+ erb :index
20
+ end
21
+
22
+ __END__
23
+
24
+ @@ index
25
+ <DOCTYPE html>
26
+ <html>
27
+ <head></head>
28
+ <body>
29
+ <article <%= mida_scope(@post) %>>
30
+ <a href="/posts/<%= @post.id%>" itemprop="url">
31
+ <h3 itemprop="name"><%= @post.title %></h3>
32
+ </a>
33
+
34
+ <div class="post_body" itemprop="articleBody"><%= @post.body %></div>
35
+ <%= time_tag @post.created_at, itemprop: 'datePublished' %>
36
+ </article>
37
+ </body>
38
+ </html>
@@ -0,0 +1,33 @@
1
+ require 'bundler/setup'
2
+
3
+ require 'rubygems'
4
+ require 'haml'
5
+ require 'sinatra'
6
+ require 'action_view' # for time_tag support
7
+ require 'green_monkey'
8
+
9
+ require 'ostruct'
10
+
11
+ get '/' do
12
+ @post = OpenStruct.new(
13
+ html_schema_type: Mida(:BlogPosting),
14
+ id: 5,
15
+ title: 'Hello world',
16
+ body: 'Sinatra is a DSL for quickly creating web applications in Ruby with minimal effort',
17
+ created_at: Time.parse('10-feb-2012')
18
+ )
19
+ haml :index
20
+ end
21
+
22
+ __END__
23
+
24
+ @@ index
25
+ !!! 5
26
+ %html
27
+ %head
28
+ %body
29
+ %article[@post]
30
+ %a[:url]{:href => "/posts/#{@post.id}"}
31
+ %h3[:name]>= @post.title
32
+ .post_body[:articleBody]= @post.body
33
+ = time_tag @post.created_at, itemprop: 'datePublished'
File without changes
@@ -5,11 +5,35 @@ $t = 0
5
5
 
6
6
  describe "ActionView hacks" do
7
7
  include TestInlineRenderer
8
-
8
+
9
9
  it "should works with stylesheet_link_tag" do
10
- tpl = "= stylesheet_link_tag 'application'"
11
- str = render_haml(tpl)
10
+ str = render_haml "= stylesheet_link_tag 'application'"
12
11
 
13
12
  str.should =~ %r{link.+href="/stylesheets/application.css.*"}
14
13
  end
14
+
15
+ if Rails.version =~ /^3\.[12].*/
16
+ it "should work with data- attributes and nested hashes" do
17
+ str = render_haml('= link_to "An", ?#, data: data_hash', data_hash: {a: 1, b: '2', c: 0.111}).gsub(?', ?")
18
+
19
+ str.should =~ /data\-a="1"/
20
+ str.should =~ /data\-b="2"/
21
+ str.should =~ /data\-c="0.111"/
22
+ end
23
+ end
24
+
25
+ it "should make itemscope as boolean attribute" do
26
+ str = render_haml('= tag ?p, itemscope: true')
27
+ str.should =~ %r{<p\s+itemscope\s*/?>}
28
+ end
29
+
30
+ it "haml should render itemscope as boolean attribute" do
31
+ str = render_haml('%p{itemscope: true}')
32
+ str.should =~ %r{<p\s+itemscope\s*/?>}
33
+ end
34
+
35
+ it "should make breadcrumb link" do
36
+ str = render_haml('= breadcrumb_link_to("Home", "/")')
37
+ str.index('http://data-vocabulary.org/Breadcrumb').should_not == nil
38
+ end
15
39
  end
data/spec/haml_spec.rb CHANGED
@@ -72,5 +72,19 @@ describe "Haml generation" do
72
72
  str = render_haml("= time_tag_interval(*time, :format => :short)", time: time)
73
73
  str.should =~ /<time.+datetime=.?#{Regexp.escape time[0].iso8601}\/P6DT6H/
74
74
  end
75
+
76
+ it "should add class from model" do
77
+ user = User.create
78
+ tpl = "%article.person[user]"
79
+ str = render_haml(tpl, user: user)
80
+ html_class = str.match(/class=['"]([\w\s]+)['"]/)[1]
81
+ html_class.should =~ /person/
82
+ html_class.should =~ /user/
83
+ end
84
+
85
+ it "should make itemscope as boolean attribute" do
86
+ str = render_haml("%div{:itemscope => true}")
87
+ str.should =~ %r{<div\s+itemscope\s*/?>}
88
+ end
75
89
  end
76
90
  end
data/spec/post.haml CHANGED
@@ -1,6 +1,6 @@
1
1
  !!! 5
2
2
  %html
3
- %heda
3
+ %head
4
4
  %body
5
5
  %article[post]
6
6
  = link_to "/posts/#{post.id}", :itemprop => "url" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: green_monkey
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,33 +9,27 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-16 00:00:00.000000000 Z
12
+ date: 2012-04-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rails
16
- requirement: &2157556760 !ruby/object:Gem::Requirement
15
+ name: haml
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 3.0.0
21
+ version: 3.1.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2157556760
25
- - !ruby/object:Gem::Dependency
26
- name: haml
27
- requirement: &2157555460 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
28
25
  none: false
29
26
  requirements:
30
27
  - - ! '>='
31
28
  - !ruby/object:Gem::Version
32
29
  version: 3.1.0
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *2157555460
36
30
  - !ruby/object:Gem::Dependency
37
31
  name: mida_vocabulary
38
- requirement: &2157554840 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
39
33
  none: false
40
34
  requirements:
41
35
  - - ! '>='
@@ -43,10 +37,15 @@ dependencies:
43
37
  version: '0.1'
44
38
  type: :runtime
45
39
  prerelease: false
46
- version_requirements: *2157554840
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0.1'
47
46
  - !ruby/object:Gem::Dependency
48
47
  name: chronic_duration
49
- requirement: &2157553580 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
50
49
  none: false
51
50
  requirements:
52
51
  - - ! '>='
@@ -54,10 +53,15 @@ dependencies:
54
53
  version: '0'
55
54
  type: :runtime
56
55
  prerelease: false
57
- version_requirements: *2157553580
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
58
62
  - !ruby/object:Gem::Dependency
59
63
  name: bundler
60
- requirement: &2157552140 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
61
65
  none: false
62
66
  requirements:
63
67
  - - ! '>='
@@ -65,10 +69,15 @@ dependencies:
65
69
  version: 1.0.0
66
70
  type: :development
67
71
  prerelease: false
68
- version_requirements: *2157552140
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 1.0.0
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: rspec
71
- requirement: &2157549560 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
72
81
  none: false
73
82
  requirements:
74
83
  - - ! '>='
@@ -76,10 +85,31 @@ dependencies:
76
85
  version: 2.7.0
77
86
  type: :development
78
87
  prerelease: false
79
- version_requirements: *2157549560
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 2.7.0
80
94
  - !ruby/object:Gem::Dependency
81
95
  name: rspec-rails
82
- requirement: &2157548640 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: mida
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *2157548640
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: sqlite3
93
- requirement: &2157547420 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,7 +133,12 @@ dependencies:
98
133
  version: '0'
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *2157547420
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
102
142
  description: It hacks Rails and Haml
103
143
  email:
104
144
  - pavel.evst@gmail.com
@@ -112,8 +152,8 @@ files:
112
152
  - Gemfile
113
153
  - Gemfile.haml-edge
114
154
  - Gemfile.lock
115
- - Gemfile.rails-3.0.11
116
- - Gemfile.rails-3.1.3
155
+ - Gemfile.rails-3.0
156
+ - Gemfile.rails-3.1
117
157
  - Gemfile.rails-3.2
118
158
  - README.md
119
159
  - Rakefile
@@ -125,6 +165,11 @@ files:
125
165
  - lib/green_monkey/ext/mida.rb
126
166
  - lib/green_monkey/ext/view_helper.rb
127
167
  - lib/green_monkey/railtie.rb
168
+ - sinatra_app/Gemfile
169
+ - sinatra_app/Gemfile.lock
170
+ - sinatra_app/app.rb
171
+ - sinatra_app/app_haml.rb
172
+ - sinatra_app/config.ru
128
173
  - spec/action_view_spec.rb
129
174
  - spec/haml_spec.rb
130
175
  - spec/mida_spec.rb
@@ -155,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
200
  version: 1.2.0
156
201
  requirements: []
157
202
  rubyforge_project:
158
- rubygems_version: 1.8.10
203
+ rubygems_version: 1.8.22
159
204
  signing_key:
160
205
  specification_version: 3
161
206
  summary: Rails and Haml microdata layout helpers
data/Gemfile.rails-3.0.11 DELETED
@@ -1,5 +0,0 @@
1
- source :rubygems
2
- gemspec
3
- gem "rails", "3.0.11"
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'
data/Gemfile.rails-3.1.3 DELETED
@@ -1,5 +0,0 @@
1
- source :rubygems
2
- gemspec
3
- gem "rails", "3.1.3"
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'