From d055720b4e685ee94a32f2f87fcb4048490e2ee8 Mon Sep 17 00:00:00 2001 From: Michael Currin <18750745+MichaelCurrin@users.noreply.github.com> Date: Wed, 1 Sep 2021 14:45:59 +0200 Subject: [PATCH 01/26] docs: fix typo (#449) Merge pull request 449 --- lib/jekyll-seo-tag/url_helper.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jekyll-seo-tag/url_helper.rb b/lib/jekyll-seo-tag/url_helper.rb index 68246cd..42bc803 100644 --- a/lib/jekyll-seo-tag/url_helper.rb +++ b/lib/jekyll-seo-tag/url_helper.rb @@ -8,8 +8,8 @@ module Jekyll # Determines if the given string is an absolute URL # - # Returns true if an absolute URL. - # Retruns false if it's a relative URL + # Returns true if an absolute URL + # Returns false if it's a relative URL # Returns nil if it is not a string or can't be parsed as a URL def absolute_url?(string) return unless string From 01fcf38c8b776655dd7d7d09009f5a4b06bca422 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 1 Sep 2021 08:46:00 -0400 Subject: [PATCH 02/26] Update history to reflect merge of #449 [ci skip] --- History.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/History.markdown b/History.markdown index 2c1b440..2b6643c 100644 --- a/History.markdown +++ b/History.markdown @@ -4,6 +4,10 @@ * Allow to set type for author (#427) +### Development Fixes + + * Fix typo in source code comment (#449) + ## 2.7.1 / 2020-10-18 ### Development Fixes From e3d0542ce6860bd6a6f348602d11131c372513bc Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Wed, 1 Sep 2021 20:17:50 +0530 Subject: [PATCH 03/26] Set up Continuous Integration via GH Actions (#450) Merge pull request 450 --- .github/workflows/ci.yml | 103 +++++++++++++++++++++++++++++++++++++++ .travis.yml | 18 ------- 2 files changed, 103 insertions(+), 18 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..75291c8 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,103 @@ +name: Continuous Integration + +on: + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + j4: + if: "!contains(github.event.commits[0].message, '[ci skip]')" + name: "Jekyll ${{ matrix.jekyll_version }} (Ruby ${{ matrix.ruby_version }})" + runs-on: 'ubuntu-latest' + env: + JEKYLL_VERSION: ${{ matrix.jekyll_version }} + strategy: + fail-fast: false + matrix: + ruby_version: + - 2.5 + - 2.7 + - 3.0 + jekyll_version: + - "~> 4.0" + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 5 + - name: "Set up Ruby ${{ matrix.ruby_version }}" + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby_version }} + bundler-cache: true + - name: Execute tests + run: bundle exec rspec + j3: + if: "!contains(github.event.commits[0].message, '[ci skip]')" + name: "Jekyll ${{ matrix.jekyll_version }} (Ruby ${{ matrix.ruby_version }})" + runs-on: 'ubuntu-latest' + env: + JEKYLL_VERSION: ${{ matrix.jekyll_version }} + strategy: + fail-fast: false + matrix: + ruby_version: + - 2.5 + jekyll_version: + - "~> 3.9" + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 5 + - name: "Set up Ruby ${{ matrix.ruby_version }}" + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby_version }} + bundler-cache: true + - name: Execute tests + run: bundle exec rspec + + style_check: + if: "!contains(github.event.commits[0].message, '[ci skip]')" + name: "Code Style Check (Ruby ${{ matrix.ruby_version }})" + runs-on: 'ubuntu-latest' + strategy: + fail-fast: false + matrix: + ruby_version: + - 2.5 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 5 + - name: "Set up Ruby ${{ matrix.ruby_version }}" + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby_version }} + bundler-cache: true + - name: Check Style Offenses + run: bundle exec rubocop -S -D + + gem_build: + if: "!contains(github.event.commits[0].message, '[ci skip]')" + name: "Test Gem build (Ruby ${{ matrix.ruby_version }})" + runs-on: 'ubuntu-latest' + strategy: + fail-fast: false + matrix: + ruby_version: + - 2.5 + steps: + - uses: actions/checkout@v2 + with: + fetch-depth: 5 + - name: "Set up Ruby ${{ matrix.ruby_version }}" + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby_version }} + bundler-cache: true + - name: Test Gem build + run: bundle exec gem build jekyll-seo-tag.gemspec diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index d5ffa5c..0000000 --- a/.travis.yml +++ /dev/null @@ -1,18 +0,0 @@ -language: ruby -cache: bundler -rvm: - - 2.5 - - 2.7 - -before_install: - - gem update --system - - gem install bundler - -script: script/cibuild - -env: - global: - - NOKOGIRI_USE_SYSTEM_LIBRARIES=true - matrix: - - JEKYLL_VERSION="~> 3.9" - - JEKYLL_VERSION="~> 4.0" From 7b5478a24972d74a633513610802d13da225bc64 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Wed, 1 Sep 2021 10:47:51 -0400 Subject: [PATCH 04/26] Update history to reflect merge of #450 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 2b6643c..0840522 100644 --- a/History.markdown +++ b/History.markdown @@ -7,6 +7,7 @@ ### Development Fixes * Fix typo in source code comment (#449) + * Set up Continuous Integration via GH Actions (#450) ## 2.7.1 / 2020-10-18 From e1a60e2fdf38fa8a345dd87ee10a220201fb4713 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Fri, 17 Sep 2021 12:54:01 +0530 Subject: [PATCH 05/26] Update third-party repo profile workflow config * Set ruby_version via `strategy.matrix`. * Migrate to `ruby/setup-ruby` action. * Use double-quoted strings consistently. --- .github/workflows/third-party.yml | 38 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index e450e8a..0348108 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -10,7 +10,18 @@ on: jobs: build_n_profile: if: "!contains(github.event.commits[0].message, '[ci skip]')" - runs-on: 'ubuntu-latest' + name: "Third-Party Repo Profile (Ruby ${{ matrix.ruby_version }})" + runs-on: "ubuntu-latest" + strategy: + fail-fast: false + matrix: + ruby_version: + - 2.7 + env: + BUNDLE_GEMFILE: "sandbox/Gemfile" + BUNDLE_PATH: "vendor/bundle" + BUNDLE_JOBS: 4 + BUNDLE_RETRY: 3 steps: - name: Checkout Jekyll SEO Tag uses: actions/checkout@v2 @@ -21,32 +32,19 @@ jobs: uses: actions/checkout@v2 with: repository: ashmaroli/tomjoht.github.io - ref: 'no-seo-tag' + ref: "no-seo-tag" path: alpha-sandbox - name: Checkout Same Third-Party Repository (WITH SEO Tag) uses: actions/checkout@v2 with: repository: ashmaroli/tomjoht.github.io - ref: 'seo-tag' + ref: "seo-tag" path: sandbox - - name: Set up Ruby - uses: actions/setup-ruby@v1 + - name: "Set up Ruby ${{ matrix.ruby_version }}" + uses: ruby/setup-ruby@v1 with: - ruby-version: 2.6.x - - name: Set up Dependencies Cache - uses: actions/cache@v1 - with: - path: sandbox/vendor/bundle - key: ubuntu-latest-gems- - restore-keys: | - ubuntu-latest-gems- - - name: Set up Dependencies - run: | - gem update --system --no-document - gem update bundler --no-document - bundle config gemfile sandbox/Gemfile - bundle config path vendor/bundle - bundle install --jobs 4 --retry 3 + ruby-version: ${{ matrix.ruby_version }} + bundler-cache: true - name: Run Jekyll Build (WITHOUT SEO Tag) 3 times run: | bundle exec jekyll build -s alpha-sandbox -d alpha-sandbox/_site --trace From 6c387eaeb4e6e86ec19ca84f1dbdbc7411b1d523 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Fri, 17 Sep 2021 19:49:57 +0530 Subject: [PATCH 06/26] Bump RuboCop to v1.18.x (#452) Merge pull request 452 --- .rubocop.yml | 25 +++++++++++++++++- .rubocop_todo.yml | 35 ++++++++++++++++++++++++- jekyll-seo-tag.gemspec | 4 +-- lib/jekyll-seo-tag/author_drop.rb | 8 +++--- lib/jekyll-seo-tag/image_drop.rb | 8 +++--- lib/jekyll-seo-tag/json_ld_drop.rb | 7 +++-- spec/jekyll_seo_tag_integration_spec.rb | 3 ++- 7 files changed, 73 insertions(+), 17 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index 7c33120..6688e6d 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -5,15 +5,38 @@ inherit_gem: rubocop-jekyll: .rubocop.yml AllCops: - TargetRubyVersion: 2.4 + TargetRubyVersion: 2.5 + SuggestExtensions: false Exclude: - vendor/**/* +Layout/LineEndStringConcatenationIndentation: + Enabled: true Layout/LineLength: Exclude: - spec/**/* - jekyll-seo-tag.gemspec +Lint/EmptyInPattern: + Enabled: false + Metrics/BlockLength: Exclude: - spec/**/* + +Naming/InclusiveLanguage: + Enabled: false + +Performance/MapCompact: + Enabled: true +Performance/RedundantEqualityComparisonBlock: + Enabled: true +Performance/RedundantSplitRegexpArgument: + Enabled: true + +Style/InPatternThen: + Enabled: false +Style/MultilineInPatternThen: + Enabled: false +Style/QuotedSymbols: + Enabled: true diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index cb469c1..59fd59b 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -1,13 +1,46 @@ # This configuration was generated by # `rubocop --auto-gen-config --auto-gen-only-exclude` -# on 2020-03-20 11:41:46 +0100 using RuboCop version 0.80.1. +# on 2021-09-17 06:40:32 UTC using RuboCop version 1.18.4. # The point is for the user to remove these configuration records # one by one as the offenses are removed from the code base. # Note that changes in the inspected code, or installation of new # versions of RuboCop, may require this file to be generated again. +# Offense count: 1 +# Configuration parameters: AllowComments. +Lint/EmptyClass: + Exclude: + - 'lib/jekyll-seo-tag/version.rb' + +# Offense count: 3 +Lint/NoReturnInBeginEndBlocks: + Exclude: + - 'lib/jekyll-seo-tag/author_drop.rb' + - 'lib/jekyll-seo-tag/drop.rb' + # Offense count: 1 # Cop supports --auto-correct. Lint/ToJSON: Exclude: - 'lib/jekyll-seo-tag/json_ld_drop.rb' + +# Offense count: 1 +# Configuration parameters: IgnoredMethods, Max. +Metrics/PerceivedComplexity: + Exclude: + - 'lib/jekyll-seo-tag/drop.rb' + +# Offense count: 1 +# Configuration parameters: MinSize. +Performance/CollectionLiteralInLoop: + Exclude: + - 'spec/jekyll_seo_tag/author_drop_spec.rb' + +# Offense count: 9 +# Cop supports --auto-correct. +Style/RedundantBegin: + Exclude: + - 'lib/jekyll-seo-tag.rb' + - 'lib/jekyll-seo-tag/author_drop.rb' + - 'lib/jekyll-seo-tag/drop.rb' + - 'lib/jekyll-seo-tag/image_drop.rb' diff --git a/jekyll-seo-tag.gemspec b/jekyll-seo-tag.gemspec index 17eb92d..487444b 100644 --- a/jekyll-seo-tag.gemspec +++ b/jekyll-seo-tag.gemspec @@ -19,7 +19,7 @@ Gem::Specification.new do |spec| raise "RubyGems 2.0 or newer is required to protect against public gem pushes." end - spec.required_ruby_version = ">= 2.4.0" + spec.required_ruby_version = ">= 2.5.0" spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r!^(test|spec|features)/!) } spec.bindir = "exe" @@ -30,5 +30,5 @@ Gem::Specification.new do |spec| spec.add_development_dependency "bundler", ">= 1.15" spec.add_development_dependency "html-proofer", "~> 3.7" spec.add_development_dependency "rspec", "~> 3.5" - spec.add_development_dependency "rubocop-jekyll", "~> 0.11" + spec.add_development_dependency "rubocop-jekyll", "~> 0.12.0" end diff --git a/lib/jekyll-seo-tag/author_drop.rb b/lib/jekyll-seo-tag/author_drop.rb index 2baa95e..9d534cb 100644 --- a/lib/jekyll-seo-tag/author_drop.rb +++ b/lib/jekyll-seo-tag/author_drop.rb @@ -41,8 +41,7 @@ module Jekyll private - attr_reader :page - attr_reader :site + attr_reader :site, :page # Finds the page author in the page.author, page.authors, or site.author # @@ -75,9 +74,10 @@ module Jekyll # or an empty hash, if the author cannot be resolved def author_hash @author_hash ||= begin - if resolved_author.is_a? Hash + case resolved_author + when Hash resolved_author - elsif resolved_author.is_a? String + when String { "name" => resolved_author }.merge!(site_data_hash) else {} diff --git a/lib/jekyll-seo-tag/image_drop.rb b/lib/jekyll-seo-tag/image_drop.rb index 5427353..43367a4 100644 --- a/lib/jekyll-seo-tag/image_drop.rb +++ b/lib/jekyll-seo-tag/image_drop.rb @@ -34,17 +34,17 @@ module Jekyll private - attr_accessor :page - attr_accessor :context + attr_accessor :page, :context # The normalized image hash with a `path` key (which may be nil) def image_hash @image_hash ||= begin image_meta = page["image"] - if image_meta.is_a?(Hash) + case image_meta + when Hash { "path" => nil }.merge!(image_meta) - elsif image_meta.is_a?(String) + when String { "path" => image_meta } else { "path" => nil } diff --git a/lib/jekyll-seo-tag/json_ld_drop.rb b/lib/jekyll-seo-tag/json_ld_drop.rb index 88bb0e0..11d04e3 100644 --- a/lib/jekyll-seo-tag/json_ld_drop.rb +++ b/lib/jekyll-seo-tag/json_ld_drop.rb @@ -16,9 +16,8 @@ module Jekyll def_delegator :page_drop, :type, :type # Expose #type and #logo as private methods and #@type as a public method - alias_method :"@type", :type - private :type - private :logo + alias_method :@type, :type + private :type, :logo VALID_ENTITY_TYPES = %w(BlogPosting CreativeWork).freeze VALID_AUTHOR_TYPES = %w(Organization Person).freeze @@ -84,7 +83,7 @@ module Jekyll private :main_entity def to_json - to_h.reject { |_k, v| v.nil? }.to_json + to_h.compact.to_json end private diff --git a/spec/jekyll_seo_tag_integration_spec.rb b/spec/jekyll_seo_tag_integration_spec.rb index df2ebac..b0b9d26 100755 --- a/spec/jekyll_seo_tag_integration_spec.rb +++ b/spec/jekyll_seo_tag_integration_spec.rb @@ -26,7 +26,8 @@ RSpec.describe Jekyll::SeoTag do end it "outputs meta generator" do - expect(output).to match(%r!Jekyll v#{Jekyll::VERSION}!i) + version = Jekyll::VERSION + expect(output).to match(%r!Jekyll v#{version}!i) end it "outputs valid HTML" do From 7c0d75a29b9f48af44657a17cce29e386f370cf2 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 17 Sep 2021 10:19:58 -0400 Subject: [PATCH 07/26] Update history to reflect merge of #452 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 0840522..5e94420 100644 --- a/History.markdown +++ b/History.markdown @@ -8,6 +8,7 @@ * Fix typo in source code comment (#449) * Set up Continuous Integration via GH Actions (#450) + * Bump RuboCop to v1.18.x (#452) ## 2.7.1 / 2020-10-18 From b5c53de8f04520b8807baca28830ceb908641dd7 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Thu, 7 Oct 2021 22:53:32 +0530 Subject: [PATCH 08/26] Profile with multiple Jekyll versions --- .github/workflows/third-party.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index 0348108..1a67494 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -9,19 +9,22 @@ on: - master jobs: build_n_profile: - if: "!contains(github.event.commits[0].message, '[ci skip]')" - name: "Third-Party Repo Profile (Ruby ${{ matrix.ruby_version }})" + name: "Third-Party Repo Profile with Jekyll ${{ matrix.jekyll_version }} (Ruby ${{ matrix.ruby_version }})" runs-on: "ubuntu-latest" strategy: fail-fast: false matrix: ruby_version: - 2.7 + jekyll_version: + - "~> 4.0" + - "~> 3.9" env: BUNDLE_GEMFILE: "sandbox/Gemfile" BUNDLE_PATH: "vendor/bundle" BUNDLE_JOBS: 4 BUNDLE_RETRY: 3 + JEKYLL_VERSION: ${{ matrix.jekyll_version }} steps: - name: Checkout Jekyll SEO Tag uses: actions/checkout@v2 From be9ce5d13e35f5560bd43853cac0f0f5a48ce1c2 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Thu, 7 Oct 2021 23:18:54 +0530 Subject: [PATCH 09/26] Profile using an intermediate shell script --- .github/workflows/scripts/memprof | 4 ++++ .github/workflows/{actions => scripts}/memprof.rb | 0 .github/workflows/third-party.yml | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/scripts/memprof rename .github/workflows/{actions => scripts}/memprof.rb (100%) diff --git a/.github/workflows/scripts/memprof b/.github/workflows/scripts/memprof new file mode 100644 index 0000000..2f06786 --- /dev/null +++ b/.github/workflows/scripts/memprof @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +bundle exec ruby jekyll-seo-tag/.github/workflows/scripts/memprof.rb sandbox +exit 0 diff --git a/.github/workflows/actions/memprof.rb b/.github/workflows/scripts/memprof.rb similarity index 100% rename from .github/workflows/actions/memprof.rb rename to .github/workflows/scripts/memprof.rb diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index 1a67494..aa773f3 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -59,4 +59,4 @@ jobs: bundle exec jekyll build -s sandbox -d sandbox/_site --trace bundle exec jekyll build -s sandbox -d sandbox/_site --trace - name: Memory Analysis of Jekyll Build (WITH SEO Tag) - run: bundle exec ruby jekyll-seo-tag/.github/workflows/actions/memprof.rb sandbox + run: bash jekyll-seo-tag/.github/workflows/scripts/memprof From 8b5d2901c262c6f9e97dcb1bfc473bd4250c5ea8 Mon Sep 17 00:00:00 2001 From: Ilgiz Mustafin Date: Fri, 8 Oct 2021 08:50:06 +0300 Subject: [PATCH 10/26] Allow setting `author.url` (#453) Merge pull request 453 --- docs/advanced-usage.md | 12 ++++++++++++ lib/jekyll-seo-tag/json_ld_drop.rb | 7 ++++++- spec/jekyll_seo_tag/json_ld_drop_spec.rb | 15 +++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md index a0d0a57..e534abd 100644 --- a/docs/advanced-usage.md +++ b/docs/advanced-usage.md @@ -68,6 +68,18 @@ There are several ways to convey this author-specific information. Author inform author: benbalter ``` +#### Setting author url + +Starting from August 6, 2021 [Google recommends](https://developers.google.com/search/updates) to set the `author.url` property. This property helps Google to disambiguate the correct author of the article. + +You can set it the same way as the other author properties. For example, you can put it in an `author` object, in the site's `_config.yml`, e.g.: + + ```yml + author: + name: My Name + url: https://example.com/ + ``` + ### Customizing JSON-LD output The following options can be set for any particular page. While the default options are meant to serve most users in the most common circumstances, there may be situations where more precise control is necessary. diff --git a/lib/jekyll-seo-tag/json_ld_drop.rb b/lib/jekyll-seo-tag/json_ld_drop.rb index 11d04e3..c892895 100644 --- a/lib/jekyll-seo-tag/json_ld_drop.rb +++ b/lib/jekyll-seo-tag/json_ld_drop.rb @@ -41,10 +41,15 @@ module Jekyll author_type = page_drop.author["type"] return if author_type && !VALID_AUTHOR_TYPES.include?(author_type) - { + hash = { "@type" => author_type || "Person", "name" => page_drop.author["name"], } + + author_url = page_drop.author["url"] + hash["url"] = author_url if author_url + + hash end def image diff --git a/spec/jekyll_seo_tag/json_ld_drop_spec.rb b/spec/jekyll_seo_tag/json_ld_drop_spec.rb index c40f4ed..3f1b5ff 100644 --- a/spec/jekyll_seo_tag/json_ld_drop_spec.rb +++ b/spec/jekyll_seo_tag/json_ld_drop_spec.rb @@ -69,6 +69,7 @@ RSpec.describe Jekyll::SeoTag::JSONLDDrop do expect(subject["author"]).to have_key("name") expect(subject["author"]["name"]).to be_a(String) expect(subject["author"]["name"]).to eql("author") + expect(subject["author"]["url"]).to be nil end end end @@ -95,6 +96,20 @@ RSpec.describe Jekyll::SeoTag::JSONLDDrop do expect(subject["author"]).to be nil end end + + context "when url is present" do + let(:author) { { "name" => "author", "url" => "https://example.com" } } + + it "returns the author with url" do + expect(subject).to have_key("author") + expect(subject["author"]).to be_a(Hash) + expect(subject["author"]).to have_key("url") + expect(subject["author"]["url"]).to eql("https://example.com") + expect(subject["author"]).to have_key("name") + expect(subject["author"]["name"]).to be_a(String) + expect(subject["author"]["name"]).to eql("author") + end + end end context "image" do From dff018c347d81c26d61a3270cb175c37231a5301 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 8 Oct 2021 01:50:07 -0400 Subject: [PATCH 11/26] Update history to reflect merge of #453 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 5e94420..5f13ab2 100644 --- a/History.markdown +++ b/History.markdown @@ -3,6 +3,7 @@ ### Minor Enhancements * Allow to set type for author (#427) + * Allow setting `author.url` (#453) ### Development Fixes From f1b98288e3ae6466e833e0f34f877cd2cbaeecfe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Igor=20=C5=BBuk?= Date: Fri, 8 Oct 2021 12:05:05 +0200 Subject: [PATCH 12/26] Set the default og:type to 'website' (#391) Merge pull request 391 --- lib/template.html | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/template.html b/lib/template.html index bc507e7..682330b 100755 --- a/lib/template.html +++ b/lib/template.html @@ -42,6 +42,8 @@ {% if page.date %} +{% else %} + {% endif %} {% if paginator.previous_page %} From 36330e876c605116f2e00735d69e94a3b47dd5af Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 8 Oct 2021 06:05:06 -0400 Subject: [PATCH 13/26] Update history to reflect merge of #391 [ci skip] --- History.markdown | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/History.markdown b/History.markdown index 5f13ab2..54bda88 100644 --- a/History.markdown +++ b/History.markdown @@ -11,6 +11,10 @@ * Set up Continuous Integration via GH Actions (#450) * Bump RuboCop to v1.18.x (#452) +### Bug Fixes + + * Set the default og:type to 'website' (#391) + ## 2.7.1 / 2020-10-18 ### Development Fixes From 062604e7e145e47708e30213a14e03ccf750903b Mon Sep 17 00:00:00 2001 From: fauno Date: Thu, 28 Oct 2021 13:59:07 -0300 Subject: [PATCH 14/26] Implement Facebook domain verification (#455) Merge pull request 455 --- docs/usage.md | 1 + lib/template.html | 4 ++++ spec/jekyll_seo_tag_integration_spec.rb | 14 ++++++++++---- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index 489c233..20dbd41 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -65,6 +65,7 @@ The following properties are available: alexa: 1234 yandex: 1234 baidu: 1234 + facebook: 1234 ``` * `locale` - The locale these tags are marked up in. Of the format `language_TERRITORY`. Default is `en_US`. Takes priority over existing config key `lang`. diff --git a/lib/template.html b/lib/template.html index 682330b..8bc25d5 100755 --- a/lib/template.html +++ b/lib/template.html @@ -107,6 +107,10 @@ {% if site.webmaster_verifications.baidu %} {% endif %} + + {% if site.webmaster_verifications.facebook %} + + {% endif %} {% elsif site.google_site_verification %} {% endif %} diff --git a/spec/jekyll_seo_tag_integration_spec.rb b/spec/jekyll_seo_tag_integration_spec.rb index b0b9d26..cde2e77 100755 --- a/spec/jekyll_seo_tag_integration_spec.rb +++ b/spec/jekyll_seo_tag_integration_spec.rb @@ -614,10 +614,11 @@ RSpec.describe Jekyll::SeoTag do context "with site.webmaster_verifications" do let(:site_verifications) do { - "google" => "foo", - "bing" => "bar", - "alexa" => "baz", - "yandex" => "bat", + "google" => "foo", + "bing" => "bar", + "alexa" => "baz", + "yandex" => "bat", + "facebook" => "bas", } end @@ -642,6 +643,11 @@ RSpec.describe Jekyll::SeoTag do expected = %r!! expect(output).to match(expected) end + + it "outputs facebook verification meta" do + expected = %r!! + expect(output).to match(expected) + end end context "with site.google_site_verification" do From 41b23937a96db83212be29521a5422e2fbbfdb8b Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Thu, 28 Oct 2021 12:59:08 -0400 Subject: [PATCH 15/26] Update history to reflect merge of #455 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 54bda88..c801d21 100644 --- a/History.markdown +++ b/History.markdown @@ -4,6 +4,7 @@ * Allow to set type for author (#427) * Allow setting `author.url` (#453) + * Implement Facebook domain verification (#455) ### Development Fixes From 4a590c9d0be6429599e5c0ce0a2919043473f134 Mon Sep 17 00:00:00 2001 From: Tobias Date: Mon, 22 Nov 2021 18:56:57 +0100 Subject: [PATCH 16/26] Add `og:image:alt` and `twitter:image:alt` (#438) Merge pull request 438 --- docs/advanced-usage.md | 4 +++- lib/template.html | 7 +++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/advanced-usage.md b/docs/advanced-usage.md index e534abd..f334496 100644 --- a/docs/advanced-usage.md +++ b/docs/advanced-usage.md @@ -98,6 +98,7 @@ For most users, setting `image: [path-to-image]` on a per-page basis should be e * `path` - The relative path to the image. Same as `image: [path-to-image]` * `height` - The height of the Open Graph (`og:image`) image * `width` - The width of the Open Graph (`og:image`) image +* `alt` - The alternative image text for Open Graph (`og:image:alt`) and Twitter (`twitter:image:alt`) You can use any of the above, optional properties, like so: @@ -106,6 +107,7 @@ image: path: /img/twitter.png height: 100 width: 100 + alt: Twitter Logo ``` ### Setting a default image @@ -158,7 +160,7 @@ Which will generate following canonical_url: You can override the default title modifier for paginated pages from `Page %{current} of %{total} for ` to a string of your choice by setting a `seo_paginator_message` key in your `_config.yml`. -For example: +For example: ```yml seo_paginator_message: "%s / %s | " diff --git a/lib/template.html b/lib/template.html index 8bc25d5..5878047 100755 --- a/lib/template.html +++ b/lib/template.html @@ -37,6 +37,9 @@ {% if seo_tag.image.width %} {% endif %} + {% if seo_tag.image.alt %} + + {% endif %} {% endif %} {% if page.date %} @@ -61,6 +64,10 @@ {% endif %} +{% if seo_tag.image.alt %} + +{% endif %} + {% if seo_tag.page_title %} {% endif %} From dba6621d1fbacc4717122657e48bf188919783ad Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 22 Nov 2021 12:56:59 -0500 Subject: [PATCH 17/26] Update history to reflect merge of #438 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index c801d21..2672e26 100644 --- a/History.markdown +++ b/History.markdown @@ -5,6 +5,7 @@ * Allow to set type for author (#427) * Allow setting `author.url` (#453) * Implement Facebook domain verification (#455) + * Add `og:image:alt` and `twitter:image:alt` (#438) ### Development Fixes From e19993b3e0717c36f546cef5616b7d27524d7115 Mon Sep 17 00:00:00 2001 From: Tobias Date: Mon, 22 Nov 2021 19:24:30 +0100 Subject: [PATCH 18/26] Template: Remove double new line (#454) Merge pull request 454 --- lib/template.html | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/template.html b/lib/template.html index 5878047..1a3c979 100755 --- a/lib/template.html +++ b/lib/template.html @@ -56,7 +56,6 @@ {% endif %} - {% if seo_tag.image %} From 4037708eff0747d58217c27179b62caa0e58226a Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Mon, 22 Nov 2021 13:24:32 -0500 Subject: [PATCH 19/26] Update history to reflect merge of #454 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 2672e26..5968ae3 100644 --- a/History.markdown +++ b/History.markdown @@ -16,6 +16,7 @@ ### Bug Fixes * Set the default og:type to 'website' (#391) + * Template: Remove double new line (#454) ## 2.7.1 / 2020-10-18 From c658a8dd9d94520c090547b164e643441df8e62f Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Fri, 26 Nov 2021 20:35:50 +0530 Subject: [PATCH 20/26] Reduce verbosity of workflow job names --- .github/workflows/third-party.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/third-party.yml b/.github/workflows/third-party.yml index aa773f3..d98e371 100644 --- a/.github/workflows/third-party.yml +++ b/.github/workflows/third-party.yml @@ -9,7 +9,7 @@ on: - master jobs: build_n_profile: - name: "Third-Party Repo Profile with Jekyll ${{ matrix.jekyll_version }} (Ruby ${{ matrix.ruby_version }})" + name: "Third-Party Repo Profile (Jekyll ${{ matrix.jekyll_version }}, Ruby ${{ matrix.ruby_version }})" runs-on: "ubuntu-latest" strategy: fail-fast: false From 8303d31d79a477d0d0d6fd49c5b96fc8d0ffd354 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Fri, 4 Feb 2022 12:27:51 +0530 Subject: [PATCH 21/26] Add workflow to release gem via GH Actions --- .github/workflows/release.yml | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..af07ea6 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,33 @@ +name: Release Gem + +on: + push: + branches: + - master + paths: + - "lib/**/version.rb" + +jobs: + release: + if: "github.repository_owner == 'jekyll'" + name: "Release Gem (Ruby ${{ matrix.ruby_version }})" + runs-on: "ubuntu-latest" + strategy: + fail-fast: true + matrix: + ruby_version: + - 2.7 + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + - name: "Set up Ruby ${{ matrix.ruby_version }}" + uses: ruby/setup-ruby@v1 + with: + ruby-version: ${{ matrix.ruby_version }} + bundler-cache: true + - name: Build and Publish Gem + uses: ashmaroli/release-gem@dist + with: + gemspec_name: jekyll-seo-tag + env: + GEM_HOST_API_KEY: ${{ secrets.RUBYGEMS_GEM_PUSH_API_KEY }} From 54d37a8396e36445d4de5f322c69c01add661e72 Mon Sep 17 00:00:00 2001 From: Parker Moore <237985+parkr@users.noreply.github.com> Date: Fri, 4 Feb 2022 08:17:52 -0800 Subject: [PATCH 22/26] Sort JSON-LD data by key (#458) Merge pull request 458 --- lib/jekyll-seo-tag/json_ld_drop.rb | 9 +++++++-- spec/jekyll_seo_tag_integration_spec.rb | 4 ++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/jekyll-seo-tag/json_ld_drop.rb b/lib/jekyll-seo-tag/json_ld_drop.rb index c892895..d51404f 100644 --- a/lib/jekyll-seo-tag/json_ld_drop.rb +++ b/lib/jekyll-seo-tag/json_ld_drop.rb @@ -87,8 +87,13 @@ module Jekyll alias_method :mainEntityOfPage, :main_entity private :main_entity - def to_json - to_h.compact.to_json + # Returns a JSON-encoded object containing the JSON-LD data. + # Keys are sorted. + def to_json(state = nil) + keys.sort.each_with_object({}) do |(key, _), result| + v = self[key] + result[key] = v unless v.nil? + end.to_json(state) end private diff --git a/spec/jekyll_seo_tag_integration_spec.rb b/spec/jekyll_seo_tag_integration_spec.rb index cde2e77..d7e934e 100755 --- a/spec/jekyll_seo_tag_integration_spec.rb +++ b/spec/jekyll_seo_tag_integration_spec.rb @@ -30,6 +30,10 @@ RSpec.describe Jekyll::SeoTag do expect(output).to match(%r!Jekyll v#{version}!i) end + it "outputs JSON sorted by key" do + expect(json.strip).to eql('{"@context":"https://schema.org","@type":"WebPage","url":"/page.html"}') + end + it "outputs valid HTML" do site.process options = { From 7209c422e559064e3c625ff6bc80d20d665cab3e Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 4 Feb 2022 11:17:54 -0500 Subject: [PATCH 23/26] Update history to reflect merge of #458 [ci skip] --- History.markdown | 1 + 1 file changed, 1 insertion(+) diff --git a/History.markdown b/History.markdown index 5968ae3..7b8bdea 100644 --- a/History.markdown +++ b/History.markdown @@ -6,6 +6,7 @@ * Allow setting `author.url` (#453) * Implement Facebook domain verification (#455) * Add `og:image:alt` and `twitter:image:alt` (#438) + * Sort JSON-LD data by key (#458) ### Development Fixes From 792a0fa3ab28602468d3107677069ffdf7296059 Mon Sep 17 00:00:00 2001 From: Ashwin Maroli Date: Fri, 4 Feb 2022 22:17:28 +0530 Subject: [PATCH 24/26] Release :gem: v2.8.0 --- History.markdown | 13 +++++++------ lib/jekyll-seo-tag/version.rb | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/History.markdown b/History.markdown index 7b8bdea..101289e 100644 --- a/History.markdown +++ b/History.markdown @@ -1,4 +1,4 @@ -## HEAD +## 2.8.0 / 2022-02-04 ### Minor Enhancements @@ -8,16 +8,17 @@ * Add `og:image:alt` and `twitter:image:alt` (#438) * Sort JSON-LD data by key (#458) +### Bug Fixes + + * Set the default `og:type` to 'website' (#391) + * Template: Remove double new line (#454) + ### Development Fixes * Fix typo in source code comment (#449) * Set up Continuous Integration via GH Actions (#450) * Bump RuboCop to v1.18.x (#452) - -### Bug Fixes - - * Set the default og:type to 'website' (#391) - * Template: Remove double new line (#454) + * Add workflow to release gem via GH Actions ## 2.7.1 / 2020-10-18 diff --git a/lib/jekyll-seo-tag/version.rb b/lib/jekyll-seo-tag/version.rb index 7287eb5..3a42ca6 100644 --- a/lib/jekyll-seo-tag/version.rb +++ b/lib/jekyll-seo-tag/version.rb @@ -5,6 +5,6 @@ module Liquid; class Tag; end; end module Jekyll class SeoTag < Liquid::Tag - VERSION = "2.7.1" + VERSION = "2.8.0" end end From b41ebd39a8075c7f73500040bf3af55d90064455 Mon Sep 17 00:00:00 2001 From: Peter Goldstein Date: Fri, 4 Feb 2022 09:41:52 -0800 Subject: [PATCH 25/26] Add Ruby 3.1 to CI matrix (#459) Merge pull request 459 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 75291c8..ed8b71f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -21,7 +21,7 @@ jobs: ruby_version: - 2.5 - 2.7 - - 3.0 + - 3.1 jekyll_version: - "~> 4.0" steps: From 9e452bf1d6bae43dd9001785ba5233ef281ec152 Mon Sep 17 00:00:00 2001 From: jekyllbot Date: Fri, 4 Feb 2022 12:41:53 -0500 Subject: [PATCH 26/26] Update history to reflect merge of #459 [ci skip] --- History.markdown | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/History.markdown b/History.markdown index 101289e..6617a11 100644 --- a/History.markdown +++ b/History.markdown @@ -1,3 +1,9 @@ +## HEAD + +### Development Fixes + + * Add Ruby 3.1 to CI matrix (#459) + ## 2.8.0 / 2022-02-04 ### Minor Enhancements