metaa 0.0.12 → 0.0.13
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 +15 -0
- data/README.md +2 -2
- data/lib/generators/rails/templates/meta.rb +2 -2
- data/lib/metaa.rb +0 -1
- data/lib/metaa/meta.rb +7 -14
- data/lib/metaa/tag_collection.rb +8 -4
- data/lib/metaa/version.rb +1 -1
- data/spec/metaa/meta_spec.rb +11 -17
- data/spec/metaa/tag_collection_spec.rb +19 -3
- metadata +4 -23
- data/lib/metaa/definition.rb +0 -20
- data/spec/metaa/definition_spec.rb +0 -23
checksums.yaml
ADDED
@@ -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.
|
28
|
-
#
|
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.
|
9
|
-
#
|
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
|
|
data/lib/metaa.rb
CHANGED
data/lib/metaa/meta.rb
CHANGED
@@ -6,27 +6,20 @@ module Metaa
|
|
6
6
|
@object = object
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
10
|
-
|
9
|
+
def tag_collection
|
10
|
+
@tag_collection ||= TagCollection.new
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
14
|
-
|
13
|
+
def meta(attributes = {})
|
14
|
+
tag_collection.add(attributes)
|
15
15
|
end
|
16
16
|
|
17
|
-
|
18
|
-
|
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
|
data/lib/metaa/tag_collection.rb
CHANGED
@@ -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
|
data/lib/metaa/version.rb
CHANGED
data/spec/metaa/meta_spec.rb
CHANGED
@@ -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
|
-
|
8
|
-
|
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
|
-
|
10
|
+
tags = meta_obj.tag_collection.tags
|
11
|
+
expect(tags.length).to eq 1
|
17
12
|
|
18
|
-
|
19
|
-
expect(
|
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 '#
|
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 '
|
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
|
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 '
|
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.
|
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.
|
161
|
+
rubygems_version: 2.1.10
|
180
162
|
signing_key:
|
181
|
-
specification_version:
|
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
|
data/lib/metaa/definition.rb
DELETED
@@ -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
|