From 1ab56c61bf97e303b6473a6396226c906358609a Mon Sep 17 00:00:00 2001 From: 0x1eef <0x1eef@protonmail.com> Date: Sat, 11 Mar 2023 13:11:10 -0300 Subject: [PATCH 1/3] Add src/sitemap.xml.erb --- Rules | 8 ++++++++ lib/nanoc/filters/strip.rb | 10 ++++++++++ src/sitemap.xml.erb | 26 ++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 lib/nanoc/filters/strip.rb create mode 100644 src/sitemap.xml.erb diff --git a/Rules b/Rules index 0fb491679..7da91f6ca 100644 --- a/Rules +++ b/Rules @@ -60,6 +60,14 @@ compile "/css/webpackage.scss" do write(nil) end +## +# /sitemap.xml +compile "/sitemap.xml.erb" do + filter(:erb, locals: {locales:, surah_id_to_name:}) + filter(:strip) + write("/sitemap.xml") +end + ## # Defaults compile("/**/*") { write(nil) } diff --git a/lib/nanoc/filters/strip.rb b/lib/nanoc/filters/strip.rb new file mode 100644 index 000000000..40d275be7 --- /dev/null +++ b/lib/nanoc/filters/strip.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class Nanoc::Filters::Strip < Nanoc::Filter + identifier :strip + type text: :text + + def run(content, options = {}) + content.each_line.reject { _1.strip.empty? }.join + end +end diff --git a/src/sitemap.xml.erb b/src/sitemap.xml.erb new file mode 100644 index 000000000..c44f42ee6 --- /dev/null +++ b/src/sitemap.xml.erb @@ -0,0 +1,26 @@ + + + <% locales.each do |locale| %> + + https://al-quran.reflectslight.io/<%= locale %>/ + <% locales.each do |locale| %> + + <% end %> + + <% Ryo.each(surah_id_to_name) do |_id, name| %> + + https://al-quran.reflectslight.io/<%= locale %>/<%= name %>/ + <% locales.each do |locale| %> + + <% end %> + + <% end %> + <% end %> + From 3f3032dfcb7840347c015760be37c4b6ee6997dc Mon Sep 17 00:00:00 2001 From: 0x1eef <0x1eef@protonmail.com> Date: Sat, 11 Mar 2023 13:32:07 -0300 Subject: [PATCH 2/3] Add canonical link tag to id_redirect.html.erb --- Rules | 2 +- rules/pages/surah/id_redirect.rules | 2 +- src/html/pages/surah/id_redirect.html.erb | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Rules b/Rules index 7da91f6ca..ac226de1b 100644 --- a/Rules +++ b/Rules @@ -35,7 +35,7 @@ require_rules "rules/pages/surah/random", {locales:, surah_id_to_name:} require_rules "rules/pages/surah/stream", {locales:, surah_id_to_name:} require_rules "rules/pages/surah/index", {locales:} require_rules "rules/pages/surah/redirect" -require_rules "rules/pages/surah/id_redirect", {locales:} +require_rules "rules/pages/surah/id_redirect", {locales:, surah_id_to_name:} ## # Inline CSS / JSON rules diff --git a/rules/pages/surah/id_redirect.rules b/rules/pages/surah/id_redirect.rules index d78bbb471..d4133777b 100644 --- a/rules/pages/surah/id_redirect.rules +++ b/rules/pages/surah/id_redirect.rules @@ -8,7 +8,7 @@ 1.upto(114) do |id| locales.each do |locale| compile "/html/pages/surah/id_redirect.html.erb", rep: "redirect_id/#{locale}/#{id}" do - filter(:erb) + filter(:erb, locals: {locale:, surah_name: surah_id_to_name[id]}) write("/#{locale}/#{id}/index.html") end end diff --git a/src/html/pages/surah/id_redirect.html.erb b/src/html/pages/surah/id_redirect.html.erb index f15519778..d697c53e8 100644 --- a/src/html/pages/surah/id_redirect.html.erb +++ b/src/html/pages/surah/id_redirect.html.erb @@ -1,7 +1,10 @@ - + Al-Quran: redirect + <%= inline_json('/slugs.json') %> From c1d23f27c7179b0730cc2e3a3c93f30e2b3df724 Mon Sep 17 00:00:00 2001 From: 0x1eef <0x1eef@protonmail.com> Date: Sat, 11 Mar 2023 13:46:42 -0300 Subject: [PATCH 3/3] Re-implement id_redirect.ts without a JS redirect --- rules/pages/surah/id_redirect.rules | 9 +++------ src/html/pages/surah/id_redirect.html.erb | 7 ++----- src/js/pages/surah/id_redirect.ts | 10 ---------- 3 files changed, 5 insertions(+), 21 deletions(-) delete mode 100644 src/js/pages/surah/id_redirect.ts diff --git a/rules/pages/surah/id_redirect.rules b/rules/pages/surah/id_redirect.rules index d4133777b..7e1834977 100644 --- a/rules/pages/surah/id_redirect.rules +++ b/rules/pages/surah/id_redirect.rules @@ -8,13 +8,10 @@ 1.upto(114) do |id| locales.each do |locale| compile "/html/pages/surah/id_redirect.html.erb", rep: "redirect_id/#{locale}/#{id}" do - filter(:erb, locals: {locale:, surah_name: surah_id_to_name[id]}) + surah_name = surah_id_to_name[id] + redirect_url = "https://al-quran.reflectslight.io/#{locale}/#{surah_name}/" + filter(:erb, {locals: {redirect_url:}}) write("/#{locale}/#{id}/index.html") end end end - -compile "/js/pages/surah/id_redirect.ts" do - filter(:webpack) - write("/js/pages/surah/id_redirect.js") -end diff --git a/src/html/pages/surah/id_redirect.html.erb b/src/html/pages/surah/id_redirect.html.erb index d697c53e8..e73a6e4d7 100644 --- a/src/html/pages/surah/id_redirect.html.erb +++ b/src/html/pages/surah/id_redirect.html.erb @@ -2,12 +2,9 @@ Al-Quran: redirect - + + - <%= inline_json('/slugs.json') %> - diff --git a/src/js/pages/surah/id_redirect.ts b/src/js/pages/surah/id_redirect.ts deleted file mode 100644 index 6917aba94..000000000 --- a/src/js/pages/surah/id_redirect.ts +++ /dev/null @@ -1,10 +0,0 @@ -(function () { - const [locale, surahId] = location.pathname - .split('/') - .filter(function (s) { return s.length; }) - .slice(-2); - const el: HTMLElement = document.querySelector('.json.slugs')!; - const slugs = JSON.parse(el.innerText); - const path = ['', locale, slugs[surahId]].join('/'); - location.replace([path, location.search].join('')); -})();