From 1c1245e9bdbaf444832c439ccbc09c290a6253ad Mon Sep 17 00:00:00 2001 From: 0x1eef <0x1eef@protonmail.com> Date: Thu, 2 Feb 2023 02:53:09 -0300 Subject: [PATCH] Shrink the README --- README.md | 265 +++++++----------------------------------------------- 1 file changed, 31 insertions(+), 234 deletions(-) diff --git a/README.md b/README.md index 07941aa..3da95eb 100644 --- a/README.md +++ b/README.md @@ -1,262 +1,59 @@ ## About -This repository contains the holy book, The Quran, in its original Arabic -and as translations in English, Farsi, and Portuguese. The contents are made -available in the JSON, and SQL formats. +This repository contains the contents of the holy book, The Quran - in its original +Arabic. Translations in English, Farsi, and Portuguese are also included. The contents +are available in the JSON, and SQL formats. **Contents** -1. [`src/json/`directory](#srcjson-directory) -2. [`src/sql/` directory](#srcsql-directory) -3. [`bin/` directory](#bin-directory) +1. [src/json/](#srcjson-directory) +2. [src/sql/](#srcsql-directory) +3. [bin/](#bin-directory) -## `src/json/` directory +## src/json/ -* The [src/json/ar/](src/json/ar/) directory contains The Quran in its original Arabic. +* [src/json/ar/](src/json/ar/) contains The Quran in its original Arabic. +* [src/json/en/](src/json/en/) contains an English translation of The Quran. +* [src/json/fa/](src/json/fa/) contains a Farsi translation of The Quran. +* [src/json/pt/](src/json/pt/) contains a Portuguese translation of The Quran. -* The [src/json/en/](src/json/en/) directory contains an English translation of The Quran. +### JSON schema -* The [src/json/fa/](src/json/fa/) directory contains a Farsi translation of The Quran. - -* The [src/json/pt/](src/json/pt/) directory contains a Portuguese translation of The Quran. - -* The [src/json/chapter-metadata.json](src/json/chapter-metadata.json) file - contains information about each chapter in The Quran. - -### File structure - -Each JSON file represents a chapter, or surah. For example - -[src/json/ar/1.json](src/json/ar/1.json) contains Al-Fatihah. The structure of the JSON +Each JSON file represents a surah (also known as a chapter). The format of the JSON files can be described as an array where the first element is an object that contains -information aboout the chapter, and the rest of the array is composed of two-element arrays - -the first element being the verse number, and the second element being the contents of -the verse. For example: - -``` -[ - { }, - [ - , - - ], - [ - , - - ], - [ - , - - ], - /* etc... */ -] +information about a surah, and the rest of the array is made up of two-element arrays. +The first element is the ayah number (also known as a verse number), and the second +element is the contents of the ayah. See Surah [Al-Fatihah](src/json/en/1.json) as +an example. ``` +## src/sql/ -### Chapter metadata +* [src/sql/schema.sql](src/sql/schema.sql) defines the schema of the database. +* [src/sql/seed.sql](src/sql/seed.sql) can be used to populate a SQL database. +* [src/sql/queries/](src/sql/queries) contains example SQL queries. -* [src/json/chapter-metadata.json](/src/json/chapter-metadata.json)
- [Source: https://quran.com](https://quran.com) +## bin/ -The [src/json/chapter-metadata.json](/src/json/chapter-metadata.json) file contains -information about each chapter in The Quran. The JSON file is structured as an array -of objects, where each object describes a given chapter. - -The following example demonstrates how Al-Fatihah is described. The "codepoints" -property is a sequence of unicode codepoints representing a surah's name in Arabic. -The codepoints can be mapped to Arabic using JavaScript's -`String.fromCodePoint(...codepoints)` function. - -```json - { - "id": "1", - "place_of_revelation": "makkah", - "transliterated_name": "Al-Fatihah", - "translated_name": "The Opener", - "verse_count": 7, - "slug": "al-fatihah", - "codepoints": [ - 1575, - 1604, - 1601, - 1575, - 1578, - 1581, - 1577 - ] - }, -``` - -## `src/sql/` directory - -* The [src/sql/schema.sql](src/sql/schema.sql) defines the schema of the database.
- The schema is composed of three tables: `qurans`, `chapters`, and `verses`. - -* The [src/sql/seed.sql](src/sql/seed.sql) populates the contents of the database.
- The languages included are Arabic, English, Farsi, and Portuguese. - -* The [src/sql/queries/](src/sql/queries) directory contains `.sql` files that - contain example SQL queries. - -### SQLite3 - -The SQL files mentioned above can be used to create a fully populated database -in-memory and on disk using SQLite3. Other SQL databases might work but -have not been tested. - -**1. $HOME/.sqliterc** - -For identical results - it is recommended that `$HOME/.sqliterc` has the -following contents: - -``` -PRAGMA case_sensitive_like=ON; -pragma FOREIGN_KEYS = on; -.headers on -.mode column - -``` - -**2. Save the database to disk** - -The `.save` command can be used to save the database to disk: - -``` -sqlite> .read src/sql/schema.sql -sqlite> .read src/sql/seed.sql -sqlite> .save src/sql/quran.db -sqlite> .exit -``` - -SQLite3 can then be started with the path to the database that's been saved -to disk: - -``` -$ sqlite3 src/sql/quran.db -sqlite> SELECT qurans.id FROM qurans WHERE qurans.locale = 'ar'; -id --- -1 -sqlite> -``` - -**3. Query the database** - -3.1 - -The SQL query we will execute fetches the contents of chapter 112 in -the English locale (i.e: `en`): - -```sql -SELECT qurans.locale, - chapters.tr_name AS "chapter (name)", - chapters.number AS chapter, - verses.number AS verse, - verses.content -FROM verses - INNER JOIN qurans - ON qurans.id = verses.quran_id - INNER JOIN chapters - ON chapters.id = verses.chapter_id -WHERE qurans.locale = "en" - AND chapters.number = 112; -``` - -The output should look similar to this: - -``` -locale chapter (name) chapter verse content ------- -------------- ------- ----- ----------------------------------------------------- -en Al-Ikhlas 112 1 Say, ˹O Prophet,˺ “He is Allah—One ˹and Indivisible˺; -en Al-Ikhlas 112 2 Allah—the Sustainer ˹needed by all˺. -en Al-Ikhlas 112 3 He has never had offspring, nor was He born. -en Al-Ikhlas 112 4 And there is none comparable to Him.” -``` - -3.2 - -The next query we will execute finds a particular phrase in the English -translation of The Quran by using the LIKE operator: - -```sql -SELECT qurans.locale, - chapters.name AS "chapter (name)", - chapters.number AS chapter, - verses.number AS verse, - verses.content -FROM verses - INNER JOIN qurans - ON qurans.id = verses.quran_id - INNER JOIN chapters - ON chapters.id = verses.chapter_id -WHERE qurans.locale = "en" - AND verses.content LIKE "%reflected light%"; - -``` - -The output should look similar to this: - -``` -locale chapter (name) chapter verse content ------- -------------- ------- ----- ---------------------------------------------------- -en Jonah 10 5 He is the One Who made the sun a radiant source and - the moon a reflected light, with precisely ordained - phases, so that you may know the number of years and - calculation ˹of time˺. Allah did not create all this - except for a purpose. He makes the signs clear for - people of knowledge. -``` - - -## `bin/` directory - -The [bin/](bin/) directory contains scripts that generate the -contents of the [src/](src/) directory: +The [bin/](bin/) directory contains scripts that generate the contents of the +[src/](src/) directory: * JSON scripts - * [bin/json/pull-arabic](bin/json/pull-arabic)
- This script is responsible for populating [src/json/ar/](src/json/ar/). - + This script populates [src/json/ar/](src/json/ar/). * [bin/json/pull-english](bin/json/pull-english)
- This script is responsible for populating [src/json/en/](src/json/en/). - + This script populates [src/json/en/](src/json/en/). * [bin/json/pull-farsi](bin/json/pull-farsi)
- This script is responsible for populating [src/json/fa/](src/json/fa/). - + This script populates [src/json/fa/](src/json/fa/). * [bin/json/pull-portuguese](bin/json/pull-portuguese)
- This script is responsible for populating [src/json/pt/](src/json/pt/). - - * [bin/json/pull-chapter-metadata](bin/json/pull-chapter-metadata)
- The script is responsible for generating [src/json/chapter-metadata.json](src/json/chapter-metadata.json). - - * [bin/json/insert-chapter-metadata](bin/json/insert-chapter-data)
- This script is responsible for inserting chapter metadata as the first element - of a JSON array that otherwise contains the contents of a chapter - (eg [src/json/ar/1.json](src/json/ar/1.json), ...). + This script populates [src/json/pt/](src/json/pt/). * SQL scripts - * [bin/sql/create-sql-seed-file](bin/sql/create-sql-seed-file)
- This script creates [src/sql/seed.sql](src/sql/seed.sql) - using the contents of [src/json/](src/json/). + This script creates [src/sql/seed.sql](src/sql/seed.sql). -The scripts are written in [Ruby v3.1.0+](https://www.ruby-lang.org).
-The script dependencies can be installed by running: +## Credit -``` -gem install bundler --no-document -bundle install -``` - -from the root of the repository. - -## Download - -The contents of the repository are available as -[a zip file](https://github.com/ReflectedLight/The-Qur-an/archive/refs/tags/v0.11.1.zip). - -## Credit, and thanks - -The content of the [src/](src/) directory was automatically generated -thanks to the following websites: +Thanks to the following websites: * https://searchtruth.com - for the original Arabic. * https://quran.com - for the English translation.