page_meta 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47b05c4d0f3a885ff8629fcd3a0c7a94e7b02ce9
4
- data.tar.gz: 864f07a8590ad4348747251d1702259ea7ffe60f
3
+ metadata.gz: 620d5c304048d03fda5d458b21b09ecaa55f6820
4
+ data.tar.gz: bdbad72bfc75068a8508b41c9dd7888e578a6b18
5
5
  SHA512:
6
- metadata.gz: 76be3317383dc4c0c4fa0e79ae04801c39308c45483c565b85ae8aa03d91da39f8bd832e1966ac9ef8b7fa6bef592ffcbb6964cbdae74aa89559b8bd24b3f539
7
- data.tar.gz: ce9cf345d3b877a69be7ad736139790193726f03c8376a27657720e0840bfa39cefe8e2d7bed0714b9ba9ac3208fea32736dcb87ebb7efbab8a3fc7778db4c87
6
+ metadata.gz: 370bb280d38674259cf00c13bca91974081c319414ab2de2fe03696468fcebd3485d55631956a95bd587eec9cac305f6e4fb7746b83ce4e0aa96bfa7d5ed2d64
7
+ data.tar.gz: dc315f6f3e0115e58702a23e25c6fecf14f9c2ab403851d99b49563c83c43c6bd70943760ab7b11650990ed8a8653360a89082b13cebd49d851d40f276658852
data/.rubocop.yml ADDED
@@ -0,0 +1,50 @@
1
+ AllCops:
2
+ TargetRubyVersion: 2.4
3
+
4
+ Metrics/LineLength:
5
+ Enabled: false
6
+
7
+ Style/Documentation:
8
+ Enabled: false
9
+
10
+ Style/StringLiterals:
11
+ EnforcedStyle: double_quotes
12
+
13
+ Layout/SpaceInsideBlockBraces:
14
+ EnforcedStyle: space
15
+ EnforcedStyleForEmptyBraces: space
16
+ SpaceBeforeBlockParameters: false
17
+
18
+ Layout/SpaceInsideHashLiteralBraces:
19
+ EnforcedStyle: no_space
20
+ EnforcedStyleForEmptyBraces: no_space
21
+
22
+ Layout/FirstArrayElementLineBreak:
23
+ Enabled: true
24
+
25
+ Layout/FirstHashElementLineBreak:
26
+ Enabled: true
27
+
28
+ Style/SymbolArray:
29
+ Enabled: true
30
+
31
+ Style/PercentLiteralDelimiters:
32
+ PreferredDelimiters:
33
+ '%': '[]'
34
+ '%i': '[]'
35
+ '%q': '[]'
36
+ '%Q': '[]'
37
+ '%r': '[]'
38
+ '%s': '[]'
39
+ '%w': '[]'
40
+ '%W': '[]'
41
+ '%x': '[]'
42
+
43
+ Metrics/MethodLength:
44
+ Enabled: false
45
+
46
+ Style/FormatStringToken:
47
+ Enabled: false
48
+
49
+ Style/Alias:
50
+ EnforcedStyle: prefer_alias_method
data/.travis.yml CHANGED
@@ -2,5 +2,18 @@ language: ruby
2
2
  cache: bundler
3
3
  sudo: false
4
4
  rvm:
5
- - 2.2.3
6
- before_install: gem install bundler -v 1.10.6
5
+ - 2.4.2
6
+ - 2.3.5
7
+ - 2.2.8
8
+ before_install: gem install bundler --pre
9
+ before_script:
10
+ - "curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter"
11
+ - chmod +x ./cc-test-reporter
12
+ - "./cc-test-reporter before-build"
13
+ after_script:
14
+ - "./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT"
15
+ notifications:
16
+ email: false
17
+ env:
18
+ global:
19
+ secure: pN+1uDJEgbIfpvSmk9owADeqXcQAXzMYMkM6XHR3IgfjbRZ39sBL11EkYziF90boEJPoMkVYmwYuTfGePPN7uWxkDBQJXTEaAXGeuAlQc1Fhzsj0WQZlOcQn1JHYmLtzBVe/B8J4z5ZuQMDFTMe+f2i1qIk00P/R1ozcbz9+g3Pi/5Esf7+6NY2rxQYeEw21/D7WM4UGAOJ+uX6rHdEUo/ej18bUZC8GBxZZy6jVeVqbBE8PPdzNcLkkUu+soPbZVBZiVF2bXn+N3AqXQqA4oL4t7zorG7xU4+2mUldbHRr3HaJBPSwnWzw6mjnSEq6OO77nTOrpwdrkb/Qz/slgL5cuqjlO0MRNq6THdBZT29vCqErxAFs9w4AUoFgwkzMe1mR8ZB8QuUct3xFpAMtE2q35efCuHFb5h682Ske8v0COnzsIRjN1NgSX3nx1oKIh7V9c9O84oDx+W/h0oL2RH/OjW4DcLaVBDS5MhaMZ1ySuBktmqDJD2OqsfbO4Gn+LrWbQAM2RFp2TTROyfDJJU3ITgE7DMqn0QiOcZIoCWzastamGJJs99WzmliouO87ZDSG5Kct2JXml0syyY/jBuR5nnJ9x6TyJpDD9jNMz6LOW9LZ31aOttGbAOQbYVgUgtPkITEuo8xhLCBc6ae+GVA4t8NcJx/rAn1U9E/CXiPs=
data/Gemfile CHANGED
@@ -1,4 +1,6 @@
1
- source 'https://rubygems.org'
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
2
4
 
3
5
  # Specify your gem's dependencies in page_meta.gemspec
4
6
  gemspec
data/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # PageMeta
2
2
 
3
- [![Build Status](https://travis-ci.org/fnando/page_meta.svg?branch=master)](https://travis-ci.org/fnando/page_meta)
3
+ [![Travis-CI](https://travis-ci.org/fnando/page_meta.png)](https://travis-ci.org/fnando/page_meta)
4
+ [![Code Climate](https://codeclimate.com/github/fnando/page_meta/badges/gpa.svg)](https://codeclimate.com/github/fnando/page_meta)
5
+ [![Test Coverage](https://codeclimate.com/github/fnando/page_meta/badges/coverage.svg)](https://codeclimate.com/github/fnando/page_meta/coverage)
6
+ [![Gem](https://img.shields.io/gem/v/page_meta.svg)](https://rubygems.org/gems/page_meta)
7
+ [![Gem](https://img.shields.io/gem/dt/page_meta.svg)](https://rubygems.org/gems/page_meta)
4
8
 
5
9
  Easily define `<meta>` and `<link>` tags. I18n support for descriptions, keywords and titles.
6
10
 
@@ -40,14 +44,22 @@ page_meta:
40
44
  index: "Welcome to MyApp"
41
45
  ```
42
46
 
47
+ The title can without the `base` context can be accessed through `page_meta.title.simple`.
48
+
49
+ ```erb
50
+ <%= page_meta.title %> // Welcome to MyApp • MyApp
51
+ <%= page_meta.title.simple %> // Welcome to MyApp
52
+ ```
53
+
43
54
  Sometimes you need to render some dynamic value. In this case, you can use the I18n placeholders.
44
55
 
45
56
  ```yaml
46
57
  en:
47
- titles:
48
- base: "%{title} • MyCompany"
49
- workshops:
50
- show: "%{name}"
58
+ page_meta:
59
+ titles:
60
+ base: "%{title} • MyCompany"
61
+ workshops:
62
+ show: "%{name}"
51
63
  ```
52
64
 
53
65
  You can then set dynamic values using the `PageMeta::Base#[]=`.
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "bundler/gem_tasks"
2
4
  require "rake/testtask"
3
5
 
@@ -7,4 +9,4 @@ Rake::TestTask.new(:test) do |t|
7
9
  t.test_files = FileList["test/**/*_test.rb"]
8
10
  end
9
11
 
10
- task :default => :test
12
+ task default: :test
data/bin/console CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  #!/usr/bin/env ruby
2
3
 
3
4
  require "bundler/setup"
@@ -1,5 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class Action
5
+ # rubocop:disable Style/MutableConstant
3
6
  ALIASES = {
4
7
  "update" => "edit",
5
8
  "create" => "new",
@@ -1,5 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class Base
5
+ DEFAULT_META_TAGS = %i[language charset title keywords description].freeze
6
+
3
7
  attr_reader :controller, :store
4
8
 
5
9
  delegate :[], :[]=, to: :store
@@ -62,10 +66,28 @@ module PageMeta
62
66
  end
63
67
 
64
68
  def compute_default_meta_tags
69
+ DEFAULT_META_TAGS.each do |method_name|
70
+ public_send("compute_default_#{method_name}")
71
+ end
72
+ end
73
+
74
+ def compute_default_language
65
75
  tag(:language, I18n.locale)
66
- tag(:charset, Rails.configuration.encoding)
76
+ end
77
+
78
+ def compute_default_title
67
79
  tag(:title, title) unless title.to_s.empty?
80
+ end
81
+
82
+ def compute_default_charset
83
+ tag(:charset, Rails.configuration.encoding)
84
+ end
85
+
86
+ def compute_default_keywords
68
87
  tag(:keywords, keywords.to_s) unless keywords.to_s.empty?
88
+ end
89
+
90
+ def compute_default_description
69
91
  tag(:description, description.to_s) unless description.to_s.empty?
70
92
  end
71
93
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PageMeta
4
+ class HashMetaTag < MetaTag
5
+ def render
6
+ return if content.empty?
7
+
8
+ content.each_with_object([]) do |(attr, value), buffer|
9
+ next if value.blank?
10
+ attr = attr.to_s.tr("_", ":")
11
+ buffer << helpers.tag(:meta, property: "#{base_name}:#{attr}", content: value)
12
+ end.join
13
+ end
14
+ end
15
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  module Helpers
3
5
  def page_meta
@@ -1,8 +1,14 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class Link
3
5
  def self.build(rel, options)
4
6
  klass_name = "::PageMeta::Link::#{rel.to_s.camelize}"
5
- klass = const_get(klass_name) rescue Link
7
+ klass = begin
8
+ const_get(klass_name)
9
+ rescue ActionView::Template::Error, NameError
10
+ Link
11
+ end
6
12
  klass.new(rel, options)
7
13
  end
8
14
 
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class MetaTag
3
5
  class Charset < MetaTag
4
6
  def render
5
- return if content.empty?
7
+ return if content.blank?
6
8
 
7
- helpers.tag(:meta, charset: content)
9
+ helpers.tag(:meta, charset: content.to_s.upcase)
8
10
  end
9
11
  end
10
12
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class MetaTag
3
5
  class DnsPrefetchControl < MetaTag
4
6
  def render
5
7
  helpers.tag(:meta, "http-equiv" => "x-dns-prefetch-control", content: "on") +
6
- helpers.tag(:link, rel: "dns-prefetch", href: content)
8
+ helpers.tag(:link, rel: "dns-prefetch", href: content)
7
9
  end
8
10
  end
9
11
  end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class MetaTag
3
5
  class Language < MetaTag
4
6
  def render
5
7
  helpers.tag(:meta, name: name, content: content) +
6
- helpers.tag(:meta, itemprop: name, content: content)
8
+ helpers.tag(:meta, itemprop: name, content: content)
7
9
  end
8
10
  end
9
11
  end
@@ -1,14 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class MetaTag
3
- class Og < MetaTag
4
- def render
5
- return if content.empty?
6
-
7
- content.each_with_object("") do |(attr, value), buffer|
8
- next if value.blank?
9
- attr = attr.to_s.gsub(/_/, ":")
10
- buffer << helpers.tag(:meta, property: "og:#{attr}", content: value)
11
- end
5
+ class Og < HashMetaTag
6
+ def base_name
7
+ "og"
12
8
  end
13
9
  end
14
10
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class MetaTag
3
5
  class Title < MetaTag
4
6
  def render
5
7
  helpers.content_tag(:title, content.to_s) +
6
- helpers.tag(:meta, name: "DC.title", content: content.simple) +
7
- helpers.tag(:meta, itemprop: "name", content: content.simple)
8
+ helpers.tag(:meta, name: "DC.title", content: content.simple) +
9
+ helpers.tag(:meta, itemprop: "name", content: content.simple)
8
10
  end
9
11
  end
10
12
  end
@@ -1,14 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class MetaTag
3
- class Twitter < MetaTag
4
- def render
5
- return if content.empty?
6
-
7
- content.each_with_object("") do |(attr, value), buffer|
8
- next if value.blank?
9
- attr = attr.to_s.gsub(/_/, ":")
10
- buffer << helpers.tag(:meta, property: "twitter:#{attr}", content: value)
11
- end
5
+ class Twitter < HashMetaTag
6
+ def base_name
7
+ "twitter"
12
8
  end
13
9
  end
14
10
  end
@@ -1,10 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class MetaTag
3
5
  attr_reader :name, :content
4
6
 
5
7
  def self.build(name, content)
6
8
  klass_name = "::PageMeta::MetaTag::#{name.to_s.camelize}"
7
- klass = const_get(klass_name) rescue MetaTag
9
+ klass = begin
10
+ const_get(klass_name)
11
+ rescue ActionView::Template::Error, NameError
12
+ MetaTag
13
+ end
8
14
  klass.new(name, content)
9
15
  end
10
16
 
@@ -26,7 +32,7 @@ module PageMeta
26
32
  return if content.empty?
27
33
 
28
34
  helpers.tag(:meta, name: name, content: content) +
29
- helpers.tag(:meta, itemprop: name, content: content)
35
+ helpers.tag(:meta, itemprop: name, content: content)
30
36
  end
31
37
  end
32
38
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class Naming
3
5
  def initialize(controller)
@@ -12,9 +14,12 @@ module PageMeta
12
14
  # Converts `PagesController` into `pages` and
13
15
  # `Admin::PagesController` into `admin.pages`.
14
16
  def controller
15
- @controller ||= @_controller.class.name.underscore
16
- .gsub(/_controller/, "")
17
- .gsub(%r[/], ".")
17
+ @controller ||= @_controller
18
+ .class
19
+ .name
20
+ .underscore
21
+ .gsub(/_controller/, "")
22
+ .gsub(%r[/], ".")
18
23
  end
19
24
  end
20
25
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class Railtie < Rails::Railtie
3
5
  initializer "page_meta" do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  class Translator
3
5
  attr_reader :scope, :naming, :options
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
3
5
  end
data/lib/page_meta.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PageMeta
2
4
  require "i18n"
3
5
  require "rails/railtie"
@@ -5,6 +7,7 @@ module PageMeta
5
7
  require "page_meta/version"
6
8
  require "page_meta/base"
7
9
  require "page_meta/meta_tag"
10
+ require "page_meta/hash_meta_tag"
8
11
  require "page_meta/meta_tag/charset"
9
12
  require "page_meta/meta_tag/dns_prefetch_control"
10
13
  require "page_meta/meta_tag/title"
data/page_meta.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "./lib/page_meta/version"
2
4
 
3
5
  Gem::Specification.new do |spec|
@@ -11,18 +13,16 @@ Gem::Specification.new do |spec|
11
13
  spec.homepage = "https://github.com/fnando/page_meta"
12
14
  spec.license = "MIT"
13
15
 
14
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
+ spec.files = `git ls-files -z`.split("\x0").reject {|f| f.match(%r[^(test|spec|features)/]) }
15
17
  spec.bindir = "exe"
16
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.executables = spec.files.grep(%r[^exe/]) {|f| File.basename(f) }
17
19
  spec.require_paths = ["lib"]
18
20
 
19
21
  spec.add_dependency "rails"
20
22
 
21
- spec.add_development_dependency "bundler", "~> 1.10"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "minitest"
23
+ spec.add_development_dependency "bundler"
24
+ spec.add_development_dependency "rake"
24
25
  spec.add_development_dependency "minitest-utils"
25
- spec.add_development_dependency "minitest-autotest"
26
- spec.add_development_dependency "test_notifier"
26
+ spec.add_development_dependency "simplecov"
27
27
  spec.add_development_dependency "pry-meta"
28
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: page_meta
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-06 00:00:00.000000000 Z
11
+ date: 2017-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -26,34 +26,6 @@ dependencies:
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.10'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.10'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '10.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '10.0'
55
- - !ruby/object:Gem::Dependency
56
- name: minitest
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - ">="
@@ -67,7 +39,7 @@ dependencies:
67
39
  - !ruby/object:Gem::Version
68
40
  version: '0'
69
41
  - !ruby/object:Gem::Dependency
70
- name: minitest-utils
42
+ name: rake
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - ">="
@@ -81,7 +53,7 @@ dependencies:
81
53
  - !ruby/object:Gem::Version
82
54
  version: '0'
83
55
  - !ruby/object:Gem::Dependency
84
- name: minitest-autotest
56
+ name: minitest-utils
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - ">="
@@ -95,7 +67,7 @@ dependencies:
95
67
  - !ruby/object:Gem::Version
96
68
  version: '0'
97
69
  - !ruby/object:Gem::Dependency
98
- name: test_notifier
70
+ name: simplecov
99
71
  requirement: !ruby/object:Gem::Requirement
100
72
  requirements:
101
73
  - - ">="
@@ -131,6 +103,7 @@ extensions: []
131
103
  extra_rdoc_files: []
132
104
  files:
133
105
  - ".gitignore"
106
+ - ".rubocop.yml"
134
107
  - ".travis.yml"
135
108
  - CODE_OF_CONDUCT.md
136
109
  - Gemfile
@@ -142,6 +115,7 @@ files:
142
115
  - lib/page_meta.rb
143
116
  - lib/page_meta/action.rb
144
117
  - lib/page_meta/base.rb
118
+ - lib/page_meta/hash_meta_tag.rb
145
119
  - lib/page_meta/helpers.rb
146
120
  - lib/page_meta/link.rb
147
121
  - lib/page_meta/meta_tag.rb
@@ -176,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
150
  version: '0'
177
151
  requirements: []
178
152
  rubyforge_project:
179
- rubygems_version: 2.4.5.1
153
+ rubygems_version: 2.6.13
180
154
  signing_key:
181
155
  specification_version: 4
182
156
  summary: Easily define <meta> and <link> tags. I18n support for descriptions, keywords