metaa 0.0.3 → 0.0.11
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.
- data/README.md +38 -10
- data/lib/generators/rails/meta_generator.rb +37 -0
- data/lib/generators/rails/templates/meta.rb +15 -0
- data/lib/generators/rspec/meta_generator.rb +9 -0
- data/lib/generators/rspec/templates/meta_spec.rb +4 -0
- data/lib/metaa.rb +13 -3
- data/lib/metaa/concern.rb +33 -0
- data/lib/metaa/meta.rb +24 -15
- data/lib/metaa/railtie.rb +28 -0
- data/lib/metaa/version.rb +1 -1
- data/metaa.gemspec +3 -3
- data/spec/generators/meta/meta_generator_spec.rb +79 -0
- data/spec/metaa/concern_spec.rb +43 -0
- data/spec/metaa/meta_spec.rb +41 -25
- data/spec/spec_helper.rb +12 -1
- metadata +17 -10
- data/lib/metaa/view_helper.rb +0 -16
- data/spec/metaa/view_helper_spec.rb +0 -40
data/README.md
CHANGED
@@ -1,26 +1,54 @@
|
|
1
1
|
[](https://travis-ci.org/anhkind/metaa)
|
2
2
|
|
3
|
-
# Metaa
|
3
|
+
# Metaa: meta tags with ease
|
4
4
|
|
5
5
|
Metaa adds meta tags to your Rails application with ease.
|
6
6
|
|
7
|
-
|
7
|
+
With Metaa, you can easily add meta tags to your current model with simple DSL, then render these tags on your views with a single method.
|
8
8
|
|
9
|
-
|
9
|
+
## Generator
|
10
10
|
|
11
|
-
|
11
|
+
The command is simple, just add the model you want to create the meta for:
|
12
|
+
|
13
|
+
```
|
14
|
+
rails generate meta Product
|
15
|
+
```
|
16
|
+
|
17
|
+
This will generate `ProductMeta` meta class in your app/meta folder.
|
18
|
+
|
19
|
+
## Meta definition
|
20
|
+
|
21
|
+
After generated, the meta class will look like this:
|
12
22
|
|
13
|
-
|
23
|
+
```
|
24
|
+
# app/meta/product_meta.rb
|
25
|
+
class ProductMeta < Metaa::Meta
|
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:
|
29
|
+
# meta name: "title",
|
30
|
+
# content: object.title # you can access the record through 'object' variable
|
14
31
|
|
15
|
-
|
32
|
+
end
|
33
|
+
end
|
34
|
+
```
|
16
35
|
|
17
|
-
|
36
|
+
You can define meta tags multiple times and these tags will be displayed in the order you define in meta class.
|
18
37
|
|
19
|
-
|
38
|
+
To access to the final rendered html, just use method `meta_tags` on your instance
|
39
|
+
|
40
|
+
```
|
41
|
+
product.meta_tags
|
42
|
+
```
|
43
|
+
|
44
|
+
## Installation
|
45
|
+
|
46
|
+
Add Metaa to your Gemfile:
|
47
|
+
|
48
|
+
gem 'metaa'
|
20
49
|
|
21
|
-
|
50
|
+
And run bundle install within your app's directory.
|
22
51
|
|
23
|
-
TODO: Write usage instructions here
|
24
52
|
|
25
53
|
## Contributing
|
26
54
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require "rails/generators"
|
2
|
+
|
3
|
+
module Rails
|
4
|
+
module Generators
|
5
|
+
class MetaGenerator < NamedBase
|
6
|
+
source_root File.expand_path("../templates", __FILE__)
|
7
|
+
check_class_collision suffix: "Meta"
|
8
|
+
|
9
|
+
class_option :parent, type: :string, desc: "The parent class for the generated meta"
|
10
|
+
|
11
|
+
def create_meta_file
|
12
|
+
template 'meta.rb', File.join('app/meta', class_path, "#{file_name}_meta.rb")
|
13
|
+
end
|
14
|
+
|
15
|
+
hook_for :test_framework
|
16
|
+
|
17
|
+
private
|
18
|
+
def parent_class_name
|
19
|
+
options.fetch("parent") do
|
20
|
+
begin
|
21
|
+
require 'application_meta'
|
22
|
+
ApplicationMeta
|
23
|
+
rescue LoadError
|
24
|
+
"Metaa::Meta"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Rails 3.0.X compatibility, stolen from https://github.com/jnunemaker/mongomapper/pull/385/files#L1R32
|
30
|
+
unless methods.include?(:module_namespacing)
|
31
|
+
def module_namespacing
|
32
|
+
yield if block_given?
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%- module_namespacing do -%>
|
2
|
+
<%- if parent_class_name.present? -%>
|
3
|
+
class <%= class_name %>Meta < <%= parent_class_name %>
|
4
|
+
<%- else -%>
|
5
|
+
class <%= class_name %>
|
6
|
+
<%- end -%>
|
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:
|
10
|
+
# meta name: "title",
|
11
|
+
# content: object.title # you can access to the model through 'object' method
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
<% end -%>
|
data/lib/metaa.rb
CHANGED
@@ -3,11 +3,21 @@ require 'action_view'
|
|
3
3
|
require "metaa/version"
|
4
4
|
require 'metaa/tag'
|
5
5
|
require 'metaa/tag_collection'
|
6
|
-
require 'metaa/view_helper'
|
7
6
|
require 'metaa/definition'
|
8
7
|
require 'metaa/meta'
|
8
|
+
require 'metaa/concern'
|
9
|
+
require 'metaa/railtie' if defined?(Rails)
|
9
10
|
|
10
11
|
module Metaa
|
11
|
-
|
12
|
+
def self.setup_orm(base)
|
13
|
+
base.class_eval do
|
14
|
+
include Metaa::Concern
|
15
|
+
end
|
16
|
+
end
|
12
17
|
|
13
|
-
|
18
|
+
class UninferrableMetaError < NameError
|
19
|
+
def initialize(klass)
|
20
|
+
super("Could not infer a meta for #{klass}.")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Metaa
|
2
|
+
module Concern
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
def meta
|
6
|
+
@meta ||= meta_class.new(self)
|
7
|
+
end
|
8
|
+
|
9
|
+
def meta_tags
|
10
|
+
meta.html
|
11
|
+
end
|
12
|
+
|
13
|
+
# (see ClassMethods#meta_class)
|
14
|
+
def meta_class
|
15
|
+
self.class.meta_class
|
16
|
+
end
|
17
|
+
|
18
|
+
module ClassMethods
|
19
|
+
# Infers the meta class to be used by {Concern#meta} (e.g.
|
20
|
+
# `Product` maps to `ProductMeta`).
|
21
|
+
#
|
22
|
+
# @return [Class] the inferred meta class.
|
23
|
+
def meta_class
|
24
|
+
prefix = respond_to?(:model_name) ? model_name : name
|
25
|
+
meta_name = "#{prefix}Meta"
|
26
|
+
meta_name.constantize
|
27
|
+
rescue NameError => error
|
28
|
+
raise unless error.missing_name?(meta_name)
|
29
|
+
raise Metaa::UninferrableMetaError.new(self)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/metaa/meta.rb
CHANGED
@@ -1,29 +1,38 @@
|
|
1
1
|
module Metaa
|
2
2
|
class Meta
|
3
|
-
|
4
|
-
def meta(attributes = {})
|
5
|
-
definitions << Definition.new(attributes)
|
6
|
-
end
|
3
|
+
attr_reader :object
|
7
4
|
|
8
|
-
|
9
|
-
|
10
|
-
end
|
5
|
+
def initialize(object = nil)
|
6
|
+
@object = object
|
11
7
|
end
|
12
8
|
|
13
|
-
|
9
|
+
def meta(attributes = {})
|
10
|
+
definitions << Definition.new(attributes)
|
11
|
+
end
|
14
12
|
|
15
|
-
def
|
16
|
-
@
|
13
|
+
def definitions
|
14
|
+
@definitions ||= []
|
17
15
|
end
|
18
16
|
|
17
|
+
# lazy define meta tags then collect
|
19
18
|
def tags
|
20
|
-
@
|
21
|
-
|
19
|
+
@tags ||= begin
|
20
|
+
define_meta
|
21
|
+
collect_tags
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def html
|
26
|
+
tags.map(&:html).join.html_safe
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def collect_tags
|
31
|
+
TagCollection.new(
|
32
|
+
definitions.map do |definition|
|
22
33
|
definition.attributes_for(object)
|
23
34
|
end
|
24
|
-
)
|
25
|
-
|
26
|
-
@tag_collection.html
|
35
|
+
).tags
|
27
36
|
end
|
28
37
|
end
|
29
38
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'rails/railtie'
|
2
|
+
|
3
|
+
module ActiveModel
|
4
|
+
class Railtie < Rails::Railtie
|
5
|
+
generators do |app|
|
6
|
+
app ||= Rails.application # Rails 3.0.x does not yield `app`
|
7
|
+
|
8
|
+
Rails::Generators.configure! app.config.generators
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
module Metaa
|
14
|
+
class Railtie < Rails::Railtie
|
15
|
+
|
16
|
+
config.after_initialize do |app|
|
17
|
+
app.config.paths.add 'app/meta', eager_load: true
|
18
|
+
end
|
19
|
+
|
20
|
+
initializer "Metaa.setup_orm" do |app|
|
21
|
+
[:active_record].each do |orm|
|
22
|
+
ActiveSupport.on_load orm do
|
23
|
+
Metaa.setup_orm self
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/metaa/version.rb
CHANGED
data/metaa.gemspec
CHANGED
@@ -8,14 +8,14 @@ Gem::Specification.new do |gem|
|
|
8
8
|
gem.version = Metaa::VERSION
|
9
9
|
gem.authors = ["anhkind"]
|
10
10
|
gem.email = ["anhkind@gmail.com"]
|
11
|
-
gem.description = "Metaa adds meta tags to your Rails application with ease"
|
12
|
-
gem.summary = "Meta tags with ease"
|
11
|
+
gem.description = "Metaa adds meta tags to your Rails application with ease."
|
12
|
+
gem.summary = "Meta tags with ease."
|
13
13
|
gem.homepage = "https://github.com/anhkind/metaa"
|
14
14
|
|
15
15
|
gem.add_dependency 'activesupport', '>= 3.0'
|
16
16
|
gem.add_dependency 'actionpack', '>= 3.0'
|
17
|
-
gem.add_dependency 'activemodel', '>= 3.0'
|
18
17
|
|
18
|
+
gem.add_development_dependency 'ammeter'
|
19
19
|
gem.add_development_dependency 'rake', '>= 0.9.2'
|
20
20
|
gem.add_development_dependency 'rspec', '~> 2.12'
|
21
21
|
gem.add_development_dependency 'rspec-mocks', '>= 2.12.1'
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rails'
|
3
|
+
require 'ammeter/init'
|
4
|
+
require 'generators/rails/meta_generator'
|
5
|
+
|
6
|
+
describe Rails::Generators::MetaGenerator do
|
7
|
+
destination File.expand_path("../tmp", __FILE__)
|
8
|
+
|
9
|
+
before { prepare_destination }
|
10
|
+
after(:all) { FileUtils.rm_rf destination_root }
|
11
|
+
|
12
|
+
describe "the generated meta" do
|
13
|
+
subject { file("app/meta/your_model_meta.rb") }
|
14
|
+
|
15
|
+
describe "naming" do
|
16
|
+
before { run_generator %w(YourModel) }
|
17
|
+
|
18
|
+
it { should contain "class YourModelMeta" }
|
19
|
+
end
|
20
|
+
|
21
|
+
describe "define_meta method" do
|
22
|
+
before { run_generator %w(YourModel) }
|
23
|
+
|
24
|
+
it { should contain "def define_meta" }
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "namespacing" do
|
28
|
+
subject { file("app/meta/namespace/your_model_meta.rb") }
|
29
|
+
before { run_generator %w(Namespace::YourModel) }
|
30
|
+
|
31
|
+
it { should contain "class Namespace::YourModelMeta" }
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "inheritance" do
|
35
|
+
context "by default" do
|
36
|
+
before { run_generator %w(YourModel) }
|
37
|
+
|
38
|
+
it { should contain "class YourModelMeta < Metaa::Meta" }
|
39
|
+
end
|
40
|
+
|
41
|
+
context "with the --parent option" do
|
42
|
+
before { run_generator %w(YourModel --parent=FooMeta) }
|
43
|
+
|
44
|
+
it { should contain "class YourModelMeta < FooMeta" }
|
45
|
+
end
|
46
|
+
|
47
|
+
context "with an ApplicationMeta" do
|
48
|
+
before do
|
49
|
+
Object.any_instance.stub(:require).with("application_meta").and_return do
|
50
|
+
stub_const "ApplicationMeta", Class.new
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
before { run_generator %w(YourModel) }
|
55
|
+
|
56
|
+
it { should contain "class YourModelMeta < ApplicationMeta" }
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "with -t=rspec" do
|
62
|
+
describe "the generated spec" do
|
63
|
+
subject { file("spec/meta/your_model_meta_spec.rb") }
|
64
|
+
|
65
|
+
describe "naming" do
|
66
|
+
before { run_generator %w(YourModel -t=rspec) }
|
67
|
+
|
68
|
+
it { should contain "describe YourModelMeta" }
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "namespacing" do
|
72
|
+
subject { file("spec/meta/namespace/your_model_meta_spec.rb") }
|
73
|
+
before { run_generator %w(Namespace::YourModel -t=rspec) }
|
74
|
+
|
75
|
+
it { should contain "describe Namespace::YourModelMeta" }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module Metaa
|
4
|
+
describe Concern do
|
5
|
+
describe "meta" do
|
6
|
+
it "returns meta object for self" do
|
7
|
+
model = Model.new
|
8
|
+
meta = model.meta
|
9
|
+
|
10
|
+
expect(meta).to be_a ModelMeta
|
11
|
+
expect(meta.object).to be model
|
12
|
+
end
|
13
|
+
|
14
|
+
it "uses the #meta_class" do
|
15
|
+
model = Model.new
|
16
|
+
model.stub meta_class: OtherMeta
|
17
|
+
|
18
|
+
expect(model.meta).to be_an_instance_of OtherMeta
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#meta_tags" do
|
23
|
+
it "returns html meta tags for self" do
|
24
|
+
meta_mock = double :meta, html: "<meta content=\"a title\" name=\"title\" property=\"text\" />"
|
25
|
+
model = Model.new
|
26
|
+
model.stub meta: meta_mock
|
27
|
+
|
28
|
+
html = model.meta_tags
|
29
|
+
|
30
|
+
expect(html).to eq "<meta content=\"a title\" name=\"title\" property=\"text\" />"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe "#meta_class" do
|
35
|
+
it "delegates to .meta_class" do
|
36
|
+
model = Model.new
|
37
|
+
|
38
|
+
Model.should_receive(:meta_class).and_return(:some_meta)
|
39
|
+
expect(model.meta_class).to be :some_meta
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
data/spec/metaa/meta_spec.rb
CHANGED
@@ -2,44 +2,60 @@ require 'spec_helper'
|
|
2
2
|
|
3
3
|
module Metaa
|
4
4
|
describe Meta do
|
5
|
-
describe '
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
klass.class_eval do
|
12
|
-
meta name: 'title',
|
13
|
-
property: :text,
|
14
|
-
content: block
|
5
|
+
describe '#meta' do
|
6
|
+
it 'defines a meta tag' do
|
7
|
+
klass = Class.new(Meta) do
|
8
|
+
def define_meta
|
9
|
+
meta name: 'title'
|
15
10
|
end
|
11
|
+
end
|
16
12
|
|
17
|
-
|
13
|
+
meta_obj = klass.new
|
14
|
+
meta_obj.define_meta # trigger due to lazy load
|
18
15
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
end
|
16
|
+
expect(meta_obj.definitions.length).to eq 1
|
17
|
+
|
18
|
+
definition = meta_obj.definitions.first
|
19
|
+
expect(definition.attributes).to eq({
|
20
|
+
name: 'title'
|
21
|
+
})
|
26
22
|
end
|
27
23
|
end
|
28
24
|
|
29
25
|
describe '#tags' do
|
30
26
|
it 'returns meta tags for an object' do
|
31
|
-
klass = Class.new(Meta)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
27
|
+
klass = Class.new(Meta) do
|
28
|
+
def define_meta
|
29
|
+
meta name: 'title',
|
30
|
+
property: :text,
|
31
|
+
content: object.title
|
32
|
+
end
|
37
33
|
end
|
38
34
|
|
39
35
|
object_mock = double title: 'a title'
|
40
36
|
meta = klass.new(object_mock)
|
41
37
|
|
42
|
-
expect(meta.tags).to eq
|
38
|
+
expect(meta.tags.length).to eq 1
|
39
|
+
|
40
|
+
tag = meta.tags.first
|
41
|
+
expect(tag.html).to eq "<meta content=\"a title\" name=\"title\" property=\"text\" />"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
describe '#html' do
|
46
|
+
it 'returns the meta html tags for an object' do
|
47
|
+
object_mock = double title: 'a title'
|
48
|
+
klass = Class.new(Meta) do
|
49
|
+
def define_meta
|
50
|
+
meta name: 'title',
|
51
|
+
property: :text,
|
52
|
+
content: object.title
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
meta = klass.new(object_mock)
|
57
|
+
|
58
|
+
expect(meta.html).to eq "<meta content=\"a title\" name=\"title\" property=\"text\" />"
|
43
59
|
end
|
44
60
|
end
|
45
61
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,2 +1,13 @@
|
|
1
1
|
require 'bundler/setup'
|
2
|
-
require 'metaa'
|
2
|
+
require 'metaa'
|
3
|
+
|
4
|
+
RSpec.configure do |config|
|
5
|
+
config.treat_symbols_as_metadata_keys_with_true_values = true
|
6
|
+
config.expect_with(:rspec) {|c| c.syntax = :expect}
|
7
|
+
config.order = :random
|
8
|
+
end
|
9
|
+
|
10
|
+
class Model; include Metaa::Concern; end
|
11
|
+
class ModelMeta < Metaa::Meta; end
|
12
|
+
|
13
|
+
class OtherMeta < Metaa::Meta; end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metaa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.11
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -44,21 +44,21 @@ dependencies:
|
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '3.0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
47
|
+
name: ammeter
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
51
|
- - ! '>='
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
54
|
-
type: :
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: rake
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -123,7 +123,7 @@ dependencies:
|
|
123
123
|
- - ~>
|
124
124
|
- !ruby/object:Gem::Version
|
125
125
|
version: '2.12'
|
126
|
-
description: Metaa adds meta tags to your Rails application with ease
|
126
|
+
description: Metaa adds meta tags to your Rails application with ease.
|
127
127
|
email:
|
128
128
|
- anhkind@gmail.com
|
129
129
|
executables: []
|
@@ -136,19 +136,25 @@ files:
|
|
136
136
|
- LICENSE.txt
|
137
137
|
- README.md
|
138
138
|
- Rakefile
|
139
|
+
- lib/generators/rails/meta_generator.rb
|
140
|
+
- lib/generators/rails/templates/meta.rb
|
141
|
+
- lib/generators/rspec/meta_generator.rb
|
142
|
+
- lib/generators/rspec/templates/meta_spec.rb
|
139
143
|
- lib/metaa.rb
|
144
|
+
- lib/metaa/concern.rb
|
140
145
|
- lib/metaa/definition.rb
|
141
146
|
- lib/metaa/meta.rb
|
147
|
+
- lib/metaa/railtie.rb
|
142
148
|
- lib/metaa/tag.rb
|
143
149
|
- lib/metaa/tag_collection.rb
|
144
150
|
- lib/metaa/version.rb
|
145
|
-
- lib/metaa/view_helper.rb
|
146
151
|
- metaa.gemspec
|
152
|
+
- spec/generators/meta/meta_generator_spec.rb
|
153
|
+
- spec/metaa/concern_spec.rb
|
147
154
|
- spec/metaa/definition_spec.rb
|
148
155
|
- spec/metaa/meta_spec.rb
|
149
156
|
- spec/metaa/tag_collection_spec.rb
|
150
157
|
- spec/metaa/tag_spec.rb
|
151
|
-
- spec/metaa/view_helper_spec.rb
|
152
158
|
- spec/spec_helper.rb
|
153
159
|
homepage: https://github.com/anhkind/metaa
|
154
160
|
licenses: []
|
@@ -173,11 +179,12 @@ rubyforge_project:
|
|
173
179
|
rubygems_version: 1.8.24
|
174
180
|
signing_key:
|
175
181
|
specification_version: 3
|
176
|
-
summary: Meta tags with ease
|
182
|
+
summary: Meta tags with ease.
|
177
183
|
test_files:
|
184
|
+
- spec/generators/meta/meta_generator_spec.rb
|
185
|
+
- spec/metaa/concern_spec.rb
|
178
186
|
- spec/metaa/definition_spec.rb
|
179
187
|
- spec/metaa/meta_spec.rb
|
180
188
|
- spec/metaa/tag_collection_spec.rb
|
181
189
|
- spec/metaa/tag_spec.rb
|
182
|
-
- spec/metaa/view_helper_spec.rb
|
183
190
|
- spec/spec_helper.rb
|
data/lib/metaa/view_helper.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
module Metaa
|
2
|
-
module ViewHelpers
|
3
|
-
def add_meta_tags(meta = [])
|
4
|
-
meta = [meta] if !meta.is_a? Array
|
5
|
-
self.meta_tags.concat meta
|
6
|
-
end
|
7
|
-
|
8
|
-
def display_meta_tags
|
9
|
-
TagCollection.new(meta_tags).html
|
10
|
-
end
|
11
|
-
|
12
|
-
def meta_tags
|
13
|
-
@meta_tags ||= []
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module Metaa
|
4
|
-
describe ViewHelpers do
|
5
|
-
let(:subject) { Class.new{include ViewHelpers}.new }
|
6
|
-
|
7
|
-
describe "#add_meta_tags" do
|
8
|
-
it "adds the meta tags from an input array" do
|
9
|
-
meta = [
|
10
|
-
{ name: 'keywords', content: 'abc'}
|
11
|
-
]
|
12
|
-
|
13
|
-
subject.add_meta_tags meta
|
14
|
-
expect(subject.send :meta_tags).to eq([
|
15
|
-
{ name: 'keywords', content: 'abc'}
|
16
|
-
])
|
17
|
-
end
|
18
|
-
|
19
|
-
it "adds the meta tags from an input hash" do
|
20
|
-
meta = { name: 'keywords', content: 'abc'}
|
21
|
-
|
22
|
-
subject.add_meta_tags meta
|
23
|
-
expect(subject.send :meta_tags).to eq([
|
24
|
-
{ name: 'keywords', content: 'abc'}
|
25
|
-
])
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
describe "#display_meta_tags" do
|
30
|
-
it "displays the added meta tags" do
|
31
|
-
subject.stub meta_tags: [
|
32
|
-
{ name: 'keywords', content: 'abc'}
|
33
|
-
]
|
34
|
-
|
35
|
-
expect(subject.display_meta_tags).to eq "<meta content=\"abc\" name=\"keywords\" />"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|