al-quran.reflectslight.io/Rules

99 lines
1.9 KiB
Text
Raw Normal View History

2022-10-31 19:32:08 +01:00
#!/usr/bin/env ruby
# frozen_string_literal: true
2023-03-11 13:31:37 +01:00
require "ryo"
2023-06-30 00:49:42 +02:00
require "nanoc-gzip"
require "nanoc-webpack"
require "nanoc-tidy"
2022-10-31 19:32:08 +01:00
locales = %w[ar en]
slugs = Ryo.from(
JSON.parse(
File.read(File.join(Dir.getwd, "src", "slugs.json"))
)
)
i18n = Ryo.from(
JSON.parse(
File.read(File.join(Dir.getwd, "src", "i18n.json"))
)
)
2022-10-31 19:32:08 +01:00
buildenv = ENV["buildenv"] || "development"
Nanoc::Webpack.default_options.merge!(
"--config" => "webpack.#{buildenv}.js"
)
2024-02-25 17:04:45 +01:00
Nanoc::Tidy.default_options.merge!(
"-upper" => true
)
def require_rules(rules, locals = {}, target = binding)
locals.each { target.local_variable_set(_1, _2) }
path = File.join(Dir.getwd, rules)
target.eval(
if File.readable?(path)
File.read(path)
elsif File.readable?("#{path}.rb")
File.read("#{path}.rb")
elsif File.readable?("#{path}.rules")
File.read("#{path}.rules")
else
raise LoadError, "#{path} is not readable"
end
)
end
##
2023-03-11 14:45:12 +01:00
# Inline CSS / JSON rules
compile "/i18n.json" do
filter(:minify_json)
write(nil)
end
compile "/surahs.json" do
filter(:minify_json)
write(nil)
end
compile "/slugs.json" do
filter(:minify_json)
write(nil)
end
2023-10-13 06:13:03 +02:00
compile "/recitations.json" do
2023-07-21 17:30:47 +02:00
filter(:minify_json)
write(nil)
end
2023-07-12 01:14:58 +02:00
compile "/css/postman.scss" do
2023-03-11 14:45:12 +01:00
filter :sass, syntax: :scss, style: :compact
filter :rainpress
2023-07-12 01:14:58 +02:00
write("/css/postman.css")
2023-03-11 14:45:12 +01:00
end
2023-03-11 17:11:10 +01:00
##
# /sitemap.xml
compile "/sitemap.xml.erb" do
filter(:erb, locals: {locales:, slugs:})
2023-03-11 17:11:10 +01:00
filter(:strip)
write("/sitemap.xml")
end
2023-07-17 21:48:12 +02:00
##
# /robots.txt
compile "/robots.txt" do
write("/robots.txt")
end
2023-07-12 01:14:58 +02:00
##
# Require rules
2023-07-17 12:19:43 +02:00
require_rules "nanoc/rules/assets"
require_rules "nanoc/rules/redirect"
require_rules "nanoc/rules/random", {locales:, i18n:, slugs:}
require_rules "nanoc/rules/stream", {locales:, i18n:, slugs:}
require_rules "nanoc/rules/index", {locales:, i18n:}
2023-07-12 01:14:58 +02:00
2022-10-31 19:32:08 +01:00
##
# Defaults
2022-10-31 19:32:08 +01:00
compile("/**/*") { write(nil) }
2022-11-02 04:49:43 +01:00
layout("**/*", :erb)