page_meta 0.1.1 → 0.1.2

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