diff options
| author | Miquel Sabaté Solà <mikisabate@gmail.com> | 2024-09-17 07:16:43 +0200 |
|---|---|---|
| committer | Miquel Sabaté Solà <mikisabate@gmail.com> | 2024-09-17 07:16:43 +0200 |
| commit | 40013704cf16f53468940a7d0160b40e8241a87c (patch) | |
| tree | f8ddc584fd90a450733332a3b9e6bbb898b4ab4e /_plugins | |
| parent | 71a1444ec305d537cbfadb1a599df7dcacde13a1 (diff) | |
| download | jo.mssola.com-40013704cf16f53468940a7d0160b40e8241a87c.tar.gz jo.mssola.com-40013704cf16f53468940a7d0160b40e8241a87c.zip | |
Remove jekyll
This is a complete rewrite of my blog to a vastly simpler form. That is,
we only need HTML and a couple of build scripts to have something
equivalent, without all the dependencies that jekyll brings. I have also
taken the chance to remove a lot of stuff that was actually not needed.
Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to '_plugins')
| -rw-r--r-- | _plugins/log.rb | 107 | ||||
| -rw-r--r-- | _plugins/modified_time_helper.rb | 35 | ||||
| -rw-r--r-- | _plugins/render_helper.rb | 32 | ||||
| -rw-r--r-- | _plugins/twitter.rb | 54 | ||||
| -rw-r--r-- | _plugins/type.rb | 65 |
5 files changed, 0 insertions, 293 deletions
diff --git a/_plugins/log.rb b/_plugins/log.rb deleted file mode 100644 index 8a7d512..0000000 --- a/_plugins/log.rb +++ /dev/null @@ -1,107 +0,0 @@ -# frozen_string_literal: true - -# Copyright (C) 2019-Ω Miquel Sabaté Solà <mikisabate@gmail.com> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <https://www.gnu.org/licenses/>. - -require 'date' -require_relative 'modified_time_helper' - -module Jekyll - # Render the last modification time of the given page. This plugin requires - # the use of the Jekyll multiple-language plugin, and a value for the - # 'log.unknown' key. - class RenderModifiedAt < Liquid::Tag - include ::Jekyll::ModifiedTimeHelper - - def render(context) - mt = modified_time(context['page']) - return unknown(context) if mt.nil? - - time = Time.iso8601(mt) - if context['page']['lang'] == 'en' - time.strftime('%B %-d, %Y, at %H:%m') - else - time.strftime("%-d de #{catalan_month(time.month)} de %Y, a les %H:%m") - end - end - - protected - - # Returns the 'log.unknown' string. - def unknown(context) - lang = context['site']['lang'] - ts = context['site']['translations'][lang] - - ts['log']['unknown'] - end - - # Given a month number, return its catalan translation. - # rubocop:disable Metrics/MethodLength, Metrics/CyclomaticComplexity - def catalan_month(month) - case month - when 1 - 'gener' - when 2 - 'febrer' - when 3 - 'març' - when 4 - 'abril' - when 5 - 'maig' - when 6 - 'juny' - when 7 - 'juliol' - when 8 - 'agost' - when 9 - 'setembre' - when 10 - 'octubre' - when 11 - 'novembre' - when 12 - 'desembre' - else - '' - end - end - # rubocop:enable Metrics/MethodLength, Metrics/CyclomaticComplexity - end - - # Render the link to git.mssola.com of the given page. - class RenderLogLink < Liquid::Tag - include ::Jekyll::ModifiedTimeHelper - - WEBSITE_BASE = 'https://github.com' - WEBSITE_REPO = 'mssola/jo.mssola.com' - WEBSITE_BRANCH = 'main' - - def render(context) - page = context['page'] - url = "#{WEBSITE_BASE}/#{WEBSITE_REPO}/commits/#{WEBSITE_BRANCH}/#{page['relative_path']}" - - if page['lang'] == 'en' - "<a href=\"#{url}\" title=\"Log for this page\">here</a>" - else - "<a href=\"#{url}\" title=\"Historial d'aquesta pàgina (anglès)\">aquí</a>" - end - end - end -end - -Liquid::Template.register_tag('render_modified_at', Jekyll::RenderModifiedAt) -Liquid::Template.register_tag('render_log_link', Jekyll::RenderLogLink) diff --git a/_plugins/modified_time_helper.rb b/_plugins/modified_time_helper.rb deleted file mode 100644 index e1cffd8..0000000 --- a/_plugins/modified_time_helper.rb +++ /dev/null @@ -1,35 +0,0 @@ -# frozen_string_literal: true - -# Copyright (C) 2019-Ω Miquel Sabaté Solà <mikisabate@gmail.com> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <https://www.gnu.org/licenses/>. - -module Jekyll - # ModifiedTimeHelper offers methods to fetch the modified time of a given page. - module ModifiedTimeHelper - # Returns the modified time of the given page. - def modified_time(page) - path = File.expand_path(File.join(File.dirname(__FILE__), '..', page['path'])) - out = `git log -n 1 --pretty='format:%cd' --date=iso8601-strict -- #{path}` - - begin - Time.iso8601(out) - out - rescue ArgumentError => e - puts "[WARNING] Could not parse the given modified time from Git: #{e}" - nil - end - end - end -end diff --git a/_plugins/render_helper.rb b/_plugins/render_helper.rb deleted file mode 100644 index b563d57..0000000 --- a/_plugins/render_helper.rb +++ /dev/null @@ -1,32 +0,0 @@ -# frozen_string_literal: true - -# Copyright (C) 2019-Ω Miquel Sabaté Solà <mikisabate@gmail.com> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <https://www.gnu.org/licenses/>. - -module Jekyll - # RenderHelper implements methods that help other plugins to render HTML code. - module RenderHelper - # Render an HTML meta tag with the given property and content - # attributes. You may optionally pass a `name` argument. When true, it will - # use "name" instead of "property". Defaults to nil. - def render_meta(property, content, name: nil) - if name - "<meta name=\"#{property}\" content=\"#{content}\" />" - else - "<meta property=\"#{property}\" content=\"#{content}\" />" - end - end - end -end diff --git a/_plugins/twitter.rb b/_plugins/twitter.rb deleted file mode 100644 index eaf0483..0000000 --- a/_plugins/twitter.rb +++ /dev/null @@ -1,54 +0,0 @@ -# frozen_string_literal: true - -# Copyright (C) 2019-Ω Miquel Sabaté Solà <mikisabate@gmail.com> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <https://www.gnu.org/licenses/>. - -require_relative 'render_helper' - -module Jekyll - # Render the OG image meta HTML tag for the currently rendered page. - class RenderOGImageTag < Liquid::Tag - include ::Jekyll::RenderHelper - - # The path to be used when the current page does not have a specific image. - DEFAULT_PATH = '/images/default.png' - - def render(context) - img = "#{normalize(context['raw_title'])}.png" - path = image_exists?(img) ? "/images/posts/#{img}" : DEFAULT_PATH - render_meta('og:image', "http://jo.mssola.com#{path}") + - render_meta('og:image:width', 630) + - render_meta('og:image:height', 315) + - render_meta('twitter:image', "http://jo.mssola.com#{path}", name: true) - end - - protected - - # Returns true if the given image exists inside of /images/posts. - def image_exists?(image) - return false if image == '.png' - - path = File.expand_path(File.join(File.dirname(__FILE__), '..', 'images', 'posts', image)) - File.file?(path) - end - - # Downcases the given string and replaces space characters with "-" - def normalize(str) - str.gsub(/\s/, '-').downcase - end - end -end - -Liquid::Template.register_tag('render_og_image', Jekyll::RenderOGImageTag) diff --git a/_plugins/type.rb b/_plugins/type.rb deleted file mode 100644 index 0bc4d49..0000000 --- a/_plugins/type.rb +++ /dev/null @@ -1,65 +0,0 @@ -# frozen_string_literal: true - -# Copyright (C) 2019-Ω Miquel Sabaté Solà <mikisabate@gmail.com> -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <https://www.gnu.org/licenses/>. - -require 'time' -require_relative 'render_helper' -require_relative 'modified_time_helper' - -module Jekyll - # Render og:type related tags. - class RenderTypeTags < Liquid::Tag - include ::Jekyll::RenderHelper - include ::Jekyll::ModifiedTimeHelper - - def render(context) - if ['posts'].include?(context['page']['collection']) - render_article_tags(context['page']) - else - '<meta property="og:type" content="website" />' - end - end - - protected - - # Render all the tags related to the article og:type. - def render_article_tags(page) - tags = page['tags'].inject('') { |acc, t| acc + render_meta('article:tag', t) } - - # rubocop:disable Style/StringConcatenation - '<meta property="og:type" content="article" />' + - render_meta('og:author', 'Miquel Sabaté Solà') + - render_meta('profile:first_name', 'Miquel') + - render_meta('profile:last_name', 'Sabaté Solà') + - render_meta('profile:username', 'mssola') + - render_meta('profile:gender', 'male') + - render_meta('article:section', page['collection']) + - render_meta('article:published_time', published_time(page)) + - render_meta('article:modified_time', modified_time(page)) + - tags - # rubocop:enable Style/StringConcatenation - end - - # Returns the published time of the given page. - def published_time(page) - # We could do fancy stuff like using DateTime.strptime and so on, but - # Jekyll completely disregards the hour, minutes, etc., so why bother. - page['date'].to_s.split.first - end - end -end - -Liquid::Template.register_tag('render_type_tags', Jekyll::RenderTypeTags) |
