bin/json: add bin/json/insert-chapter-metadata
This commit is contained in:
parent
827710107d
commit
e79b3bc3e1
1 changed files with 51 additions and 0 deletions
51
bin/json/insert-chapter-metadata
Executable file
51
bin/json/insert-chapter-metadata
Executable file
|
@ -0,0 +1,51 @@
|
|||
#!/usr/bin/env ruby
|
||||
# frozen_string_literal: true
|
||||
|
||||
##
|
||||
# This script inserts metadata about each chapter in
|
||||
# The Qur'an. The metadata is inserted into the JSON
|
||||
# for each chapter (eg src/json/en/1.json, src/json/en/2.json,
|
||||
# src/json/en/3.json, ...).
|
||||
#
|
||||
# The metadata is an object that's inserted as the first element
|
||||
# in an array that otherwise contains the contents of a chapter.
|
||||
|
||||
##
|
||||
# Set process name - primarily for the "ps" command
|
||||
Process.setproctitle("quran-pull (insert-chapter-metadata)")
|
||||
|
||||
##
|
||||
# Dependencies
|
||||
require "bundler/setup"
|
||||
require "json"
|
||||
require "paint"
|
||||
require_relative "../../binlib/io/line"
|
||||
|
||||
##
|
||||
# Utils
|
||||
def parse_json(path)= JSON.parse(File.read(path))
|
||||
|
||||
##
|
||||
# Configuration variables
|
||||
lc_glob = ARGV[0] || "*"
|
||||
base_dir = File.join("src", "json")
|
||||
chapters = parse_json(File.join(base_dir, "chapter-metadata.json"))
|
||||
dirs = Dir.glob(File.join(base_dir, lc_glob)).select { File.directory?(_1) }
|
||||
line = IO::Line.new($stdout)
|
||||
|
||||
print "\n", " " * 3, Paint["Add metadata", :bold], "\n\n"
|
||||
print "Locale", " " * 3
|
||||
print "Location", "\n"
|
||||
dirs.each do |dir|
|
||||
1.upto(114) do |number|
|
||||
ch = chapters[number - 1]
|
||||
lc = File.basename(dir)
|
||||
fp = File.join(dir, "#{number}.json")
|
||||
line.rewind.print File.basename(dir), " " * 7, File.join(lc, "#{number}.json").center(9)
|
||||
contents = parse_json(fp)
|
||||
contents.unshift(ch)
|
||||
File.write(fp, JSON.pretty_generate(contents))
|
||||
sleep 0.01
|
||||
end
|
||||
puts
|
||||
end
|
Loading…
Reference in a new issue