metaa 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ MWY1YmFjNmQ1N2U0ZjYyNDQ0MjhlMDFjYmQ3MzA5NGY4ZDZmZmU0MQ==
5
+ data.tar.gz: !binary |-
6
+ MzViZGQ3OGNhZWE4YzE1Njg1MDZjZTA2ZjJmMDc0NzcwZWMyNDYwYg==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ZWM3NTFlMmQwNjlkZTFjMTFiYmU4ZThmZTFlNTRhYTM1Njg2NzI4Y2E2NzBh
10
+ ZWM3YmM5NGIyZTAwMDUwMDM0YzhkYzA1YjgxZjU3NmU0NTJiOTBhZTEzNjk3
11
+ NjAzNzdlZDdiYjBmMGM0OTg2Y2QyODgzZTEzNDE1YjQzYTg1YmM=
12
+ data.tar.gz: !binary |-
13
+ MzQ1OWFmZWYzMWUyZWZjOTAzNGQxZjA0Zjg3MGFjZmRkOGRhZGQ5YTA4NGRk
14
+ N2JkZGUwM2ZmMWYwNjljZTI4MzNmY2IyNzAxMTVjZjg4ZjhhYjliZjZhYTFk
15
+ MjAzNTc2NGViYzk0MjU2YTg4ZWU1NTcxMTQ1ZDEyMzM2YjdmOWE=
data/README.md CHANGED
@@ -24,8 +24,8 @@ After generated, the meta class will look like this:
24
24
  # app/meta/product_meta.rb
25
25
  class ProductMeta < Metaa::Meta
26
26
  def define_meta
27
- # Define meta tags of your record here. Each definition will require a hash for the meta attributes,
28
- # and each attribute can be a string, symbol or lambda/proc, for example:
27
+ # Define meta tags of your record here.
28
+ # Each definition will require a hash for the meta attributes, for example:
29
29
  # meta name: "title",
30
30
  # content: object.title # you can access the record through 'object' variable
31
31
 
@@ -5,8 +5,8 @@ class <%= class_name %>Meta < <%= parent_class_name %>
5
5
  class <%= class_name %>
6
6
  <%- end -%>
7
7
  def define_meta
8
- # Define meta tags of your record here. Each definition will require a hash for the meta attributes,
9
- # and each attribute can be a string, symbol or lambda/proc, for example:
8
+ # Define meta tags of your record here.
9
+ # Each definition will require a hash for the meta attributes, for example:
10
10
  # meta name: "title",
11
11
  # content: object.title # you can access to the model through 'object' method
12
12
 
@@ -3,7 +3,6 @@ require 'action_view'
3
3
  require "metaa/version"
4
4
  require 'metaa/tag'
5
5
  require 'metaa/tag_collection'
6
- require 'metaa/definition'
7
6
  require 'metaa/meta'
8
7
  require 'metaa/concern'
9
8
  require 'metaa/railtie' if defined?(Rails)
@@ -6,27 +6,20 @@ module Metaa
6
6
  @object = object
7
7
  end
8
8
 
9
- def meta(attributes = {})
10
- definitions << Definition.new(attributes)
9
+ def tag_collection
10
+ @tag_collection ||= TagCollection.new
11
11
  end
12
12
 
13
- def definitions
14
- @definitions ||= []
13
+ def meta(attributes = {})
14
+ tag_collection.add(attributes)
15
15
  end
16
16
 
17
- # lazy define meta tags then collect
18
- def tag_collection
19
- @tag_collection ||= begin
20
- define_meta
21
- TagCollection.new(
22
- definitions.map do |definition|
23
- definition.attributes_for(object)
24
- end
25
- )
26
- end
17
+ def define_meta
18
+ raise NotImplementedError
27
19
  end
28
20
 
29
21
  def to_html
22
+ define_meta if tag_collection.empty?
30
23
  tag_collection.to_html
31
24
  end
32
25
  end
@@ -4,6 +4,14 @@ module Metaa
4
4
  add(tags)
5
5
  end
6
6
 
7
+ def tags
8
+ @tags ||= []
9
+ end
10
+
11
+ def empty?
12
+ tags.empty?
13
+ end
14
+
7
15
  def add(new_tags)
8
16
  new_tags = [new_tags] if !new_tags.is_a? Array
9
17
  new_tags.each do |tag|
@@ -12,10 +20,6 @@ module Metaa
12
20
  end
13
21
  end
14
22
 
15
- def tags
16
- @tags ||= []
17
- end
18
-
19
23
  def to_html
20
24
  tags.map(&:to_html).join.html_safe
21
25
  end
@@ -1,3 +1,3 @@
1
1
  module Metaa
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.13"
3
3
  end
@@ -4,25 +4,20 @@ module Metaa
4
4
  describe Meta do
5
5
  describe '#meta' do
6
6
  it 'defines a meta tag' do
7
- klass = Class.new(Meta) do
8
- def define_meta
9
- meta name: 'title'
10
- end
11
- end
12
-
13
- meta_obj = klass.new
14
- meta_obj.define_meta # trigger due to lazy load
7
+ meta_obj = Class.new(Meta).new
8
+ meta_obj.meta name: 'title'
15
9
 
16
- expect(meta_obj.definitions.length).to eq 1
10
+ tags = meta_obj.tag_collection.tags
11
+ expect(tags.length).to eq 1
17
12
 
18
- definition = meta_obj.definitions.first
19
- expect(definition.attributes).to eq({
13
+ tag = tags.first
14
+ expect(tag.attributes).to eq({
20
15
  name: 'title'
21
16
  })
22
17
  end
23
18
  end
24
19
 
25
- describe '#tags' do
20
+ describe '#tag_collection' do
26
21
  it 'returns meta tags for an object' do
27
22
  klass = Class.new(Meta) do
28
23
  def define_meta
@@ -35,11 +30,7 @@ module Metaa
35
30
  object_mock = double title: 'a title'
36
31
  meta = klass.new(object_mock)
37
32
 
38
-
39
- expect(meta.tag_collection.tags.length).to eq 1
40
-
41
- tag = meta.tag_collection.tags.first
42
- expect(tag.to_html).to eq "<meta content=\"a title\" name=\"title\" property=\"text\" />"
33
+ expect(meta.tag_collection).to be_a TagCollection
43
34
  end
44
35
  end
45
36
 
@@ -57,6 +48,9 @@ module Metaa
57
48
  meta = klass.new(object_mock)
58
49
 
59
50
  expect(meta.to_html).to eq "<meta content=\"a title\" name=\"title\" property=\"text\" />"
51
+
52
+ # run it again would render the same result
53
+ expect(meta.to_html).to eq "<meta content=\"a title\" name=\"title\" property=\"text\" />"
60
54
  end
61
55
  end
62
56
  end
@@ -2,14 +2,30 @@ require 'spec_helper'
2
2
 
3
3
  module Metaa
4
4
  describe TagCollection do
5
+ describe '#empty?' do
6
+ it 'returns empty if there is not tag' do
7
+ meta_collection = TagCollection.new
8
+ expect(meta_collection).to be_empty
9
+ end
10
+ end
11
+
5
12
  describe '#add' do
6
- it 'add a meta object to internal list' do
13
+ it 'makes the list not to be empty anymore' do
7
14
  meta_collection = TagCollection.new
8
15
  meta_collection.add Tag.new({name: 'keywords', content: 'abc'})
9
- expect(meta_collection.tags.first.attributes).to eq({name: 'keywords', content: 'abc'})
16
+ expect(meta_collection).not_to be_empty
17
+ end
18
+
19
+ it 'adds a meta object to internal list' do
20
+ meta_collection = TagCollection.new
21
+ meta_collection.add Tag.new({name: 'keywords', content: 'abc'})
22
+ expect(meta_collection.tags).not_to be_empty
23
+
24
+ added_tag = meta_collection.tags.first
25
+ expect(added_tag.attributes).to eq({name: 'keywords', content: 'abc'})
10
26
  end
11
27
 
12
- it 'add a hash as a new meta object to internal list' do
28
+ it 'adds a hash as a new meta object to internal list' do
13
29
  meta_collection = TagCollection.new
14
30
  meta_collection.add({name: 'keywords', content: 'abc'})
15
31
  expect(meta_collection.tags.first.attributes).to eq({name: 'keywords', content: 'abc'})
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metaa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
5
- prerelease:
4
+ version: 0.0.13
6
5
  platform: ruby
7
6
  authors:
8
7
  - anhkind
@@ -14,7 +13,6 @@ dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: activesupport
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
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
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: actionpack
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ! '>='
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
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
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: ammeter
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
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
@@ -62,7 +55,6 @@ dependencies:
62
55
  - !ruby/object:Gem::Dependency
63
56
  name: rake
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - ! '>='
68
60
  - !ruby/object:Gem::Version
@@ -70,7 +62,6 @@ dependencies:
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
@@ -78,7 +69,6 @@ dependencies:
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
@@ -86,7 +76,6 @@ dependencies:
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
@@ -94,7 +83,6 @@ dependencies:
94
83
  - !ruby/object:Gem::Dependency
95
84
  name: rspec-mocks
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - ! '>='
100
88
  - !ruby/object:Gem::Version
@@ -102,7 +90,6 @@ dependencies:
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
@@ -110,7 +97,6 @@ dependencies:
110
97
  - !ruby/object:Gem::Dependency
111
98
  name: rspec-rails
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - ~>
116
102
  - !ruby/object:Gem::Version
@@ -118,7 +104,6 @@ dependencies:
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
@@ -142,7 +127,6 @@ files:
142
127
  - lib/generators/rspec/templates/meta_spec.rb
143
128
  - lib/metaa.rb
144
129
  - lib/metaa/concern.rb
145
- - lib/metaa/definition.rb
146
130
  - lib/metaa/meta.rb
147
131
  - lib/metaa/railtie.rb
148
132
  - lib/metaa/tag.rb
@@ -151,39 +135,36 @@ files:
151
135
  - metaa.gemspec
152
136
  - spec/generators/meta/meta_generator_spec.rb
153
137
  - spec/metaa/concern_spec.rb
154
- - spec/metaa/definition_spec.rb
155
138
  - spec/metaa/meta_spec.rb
156
139
  - spec/metaa/tag_collection_spec.rb
157
140
  - spec/metaa/tag_spec.rb
158
141
  - spec/spec_helper.rb
159
142
  homepage: https://github.com/anhkind/metaa
160
143
  licenses: []
144
+ metadata: {}
161
145
  post_install_message:
162
146
  rdoc_options: []
163
147
  require_paths:
164
148
  - lib
165
149
  required_ruby_version: !ruby/object:Gem::Requirement
166
- none: false
167
150
  requirements:
168
151
  - - ! '>='
169
152
  - !ruby/object:Gem::Version
170
153
  version: '0'
171
154
  required_rubygems_version: !ruby/object:Gem::Requirement
172
- none: false
173
155
  requirements:
174
156
  - - ! '>='
175
157
  - !ruby/object:Gem::Version
176
158
  version: '0'
177
159
  requirements: []
178
160
  rubyforge_project:
179
- rubygems_version: 1.8.24
161
+ rubygems_version: 2.1.10
180
162
  signing_key:
181
- specification_version: 3
163
+ specification_version: 4
182
164
  summary: Meta tags with ease.
183
165
  test_files:
184
166
  - spec/generators/meta/meta_generator_spec.rb
185
167
  - spec/metaa/concern_spec.rb
186
- - spec/metaa/definition_spec.rb
187
168
  - spec/metaa/meta_spec.rb
188
169
  - spec/metaa/tag_collection_spec.rb
189
170
  - spec/metaa/tag_spec.rb
@@ -1,20 +0,0 @@
1
- module Metaa
2
- class Definition
3
- attr_reader :attributes
4
-
5
- def initialize(attributes = {})
6
- @attributes = attributes
7
- end
8
-
9
- def attributes_for(object)
10
- object_attributes = {}
11
-
12
- attributes.each do |attr, val|
13
- object_val = val.respond_to?(:call) ? val.call(object) : val.to_s
14
- object_attributes[attr] = object_val
15
- end
16
-
17
- object_attributes
18
- end
19
- end
20
- end
@@ -1,23 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Metaa
4
- describe Definition do
5
- describe '#attributes_for' do
6
- it 'returns calculated attributes for an object' do
7
- definition = Definition.new({
8
- name: 'title',
9
- property: :text,
10
- content: ->(object){ object.title }
11
- })
12
-
13
- object_mock = double title: 'a title'
14
-
15
- expect(definition.attributes_for(object_mock)).to eq({
16
- name: 'title',
17
- property: 'text',
18
- content: 'a title'
19
- })
20
- end
21
- end
22
- end
23
- end