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.
@@ -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