aboutsummaryrefslogtreecommitdiff
path: root/_plugins
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mikisabate@gmail.com>2024-09-17 07:16:43 +0200
committerMiquel Sabaté Solà <mikisabate@gmail.com>2024-09-17 07:16:43 +0200
commit40013704cf16f53468940a7d0160b40e8241a87c (patch)
treef8ddc584fd90a450733332a3b9e6bbb898b4ab4e /_plugins
parent71a1444ec305d537cbfadb1a599df7dcacde13a1 (diff)
downloadjo.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.rb107
-rw-r--r--_plugins/modified_time_helper.rb35
-rw-r--r--_plugins/render_helper.rb32
-rw-r--r--_plugins/twitter.rb54
-rw-r--r--_plugins/type.rb65
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)