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(''));
-})();