Skip to content

Commit bce2170

Browse files
committed
Move content from HTML format to XML format
In this commit, the content previously organized in HTML format has been converted to XML format. This conversion involved updating various files to replace the HTML-specific elements with their XML equivalents. The changes include modifying the Makefile to handle XML files instead of HTML, updating the chapters.sql file to adjust the structure for XML data, and refining the CSS styling in both print.css and screen.css for XML content presentation. The modifications in this commit encompass changing file extensions from .html to .xml in the .dockerignore and .gitignore files, adjusting file paths and content structures in the Makefile and chapters.sql, and updating CSS styling in print.css and creating a new screen.css file for XML content representation. These changes are essential for transitioning the project's content to XML format and ensuring consistency across the various components of the project.
1 parent 09261f1 commit bce2170

File tree

8 files changed

+124
-70
lines changed

8 files changed

+124
-70
lines changed

.dockerignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
*.html
2+
*.xml
23
*.pdf
34
*.zip
45
*.SQLite3

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
*.html
2+
*.xml
23
*.pdf
34
*.zip
45
*.SQLite3

Makefile

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ left ?= PAU
33
right ?= NA28
44
name ?= pocket-nt
55

6-
style := /app/style.css
6+
screen:= /app/screen.css
77
print := /app/print.css
88
chapters := /app/chapters.sql
99
render := /app/render.sed
@@ -16,13 +16,15 @@ screen: $(left)-$(right)_screen.pdf
1616
.PHONY: print
1717
print: $(left)-$(right)_print.pdf
1818

19-
$(left)-$(right).html: info-$(left).html info-$(right).html cross_references.SQLite3
19+
$(left)-$(right).xml: info-$(left).xml info-$(right).xml cross_references.SQLite3
2020
mv "$(left).SQLite3" left.db; mv "$(right).SQLite3" right.db; \
21-
{ echo "<!DOCTYPE html><html><head><meta charset=\"utf-8\"><link rel=\"stylesheet\" href=\"$(style)\"></head><body><info><name>$(name)</name>"; \
22-
cat "info-$(left).html" "info-$(right).html"; \
21+
{ echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; \
22+
echo "<nt>"; \
23+
echo "<info>"; \
24+
echo "<name>$(name)</name>$$(cat 'info-$(left).xml' 'info-$(right).xml')"; \
2325
echo "</info>"; \
24-
sed 's/<RATE>/$(rate)/' $(chapters) | sqlite3 | sed -rf $(render); \
25-
echo "</body></html>"; \
26+
cat $(chapters) | sqlite3 | sed -rf $(render); \
27+
echo "</nt>"; \
2628
} > "$@"
2729

2830
%.zip:
@@ -44,21 +46,21 @@ cross_references.SQLite3: cross_references.csv
4446
%.SQLite3: %.zip
4547
unzip -j "$<"
4648

47-
%_screen.pdf: %.html
48-
prince --verbose --pdf-title="pocket-nt" --no-network --page-size=$(size) --media=screen --output="/data/$@" "/data/$<"
49+
%_screen.pdf: %.xml
50+
prince --verbose --pdf-title="$(name)" --no-network --page-size=$(size) --media=screen --style=$(screen) --output="/data/$@" "/data/$<"
4951

50-
%_print_raw.pdf: %.html
51-
prince --verbose --pdf-title="pocket-nt" --no-network --page-size=$(size) --media=print --style=$(print) --output="/data/$@" "/data/$<"
52+
%_print_raw.pdf: %.xml
53+
prince --verbose --pdf-title="$(name)" --no-network --page-size=$(size) --media=print --style=$(print) --output="/data/$@" "/data/$<"
5254

5355
%_print.pdf: %_print_raw.pdf
5456
gs -dPDFX -dBATCH -dNOPAUSE -dNOOUTERSAVE -dNoOutputFonts -sDEVICE=pdfwrite -sColorConversionStrategy=CMYK -dProcessColorModel=/DeviceCMYK -dCompatibilityLevel=1.4 -dPDFSETTINGS=/prepress -dHaveTransparency=false -sOutputFile="$@" "$<"
5557

56-
info-%.html: %.SQLite3
57-
{ echo "<column><description>"; \
58-
sqlite3 "$<" "SELECT value FROM info WHERE name = 'description'" | sed "s/,/<br>/g"; \
59-
echo "</description></column>"; \
58+
info-%.xml: %.SQLite3
59+
{ echo "<description>"; \
60+
sqlite3 "$<" "SELECT value FROM info WHERE name = 'description'"; \
61+
echo "</description>"; \
6062
} > "$@"
6163

6264
.PHONY: clean
6365
clean:
64-
rm -f *.html *.pdf *.db *.txt *.csv *.SQLite3
66+
rm -f *.xml *.pdf *.db *.txt *.csv *.SQLite3

chapters.sql

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ ATTACH DATABASE 'cross_references.SQLite3' AS cr;
55
WITH
66
CrossReferences AS (
77
SELECT c.book_number, chapter, verse, b2,
8-
GROUP_CONCAT('{{reference data-rate="' || rate || '"}}' ||
8+
GROUP_CONCAT('{{reference rate="' || rate || '"}}' ||
99
CASE
10-
WHEN b2 = '' THEN b.short_name || '&nbsp;' || c1 || ',' || v1
11-
ELSE b.short_name || '&nbsp;' || c1 || ',' || v1 || '-' || c2 || ',' || v2
10+
WHEN b2 = '' THEN b.short_name || ' ' || c1 || ',' || v1
11+
ELSE b.short_name || ' ' || c1 || ',' || v1 || '-' || c2 || ',' || v2
1212
END || '{{/reference}}'
1313
, ' '
1414
) AS refs
@@ -35,9 +35,9 @@ WITH
3535
GROUP_CONCAT(
3636
CASE
3737
WHEN book_number IS NOT NULL THEN
38-
'{{verse data-verse="' || verse || '"}}' || text || IFNULL(refs, '') || '{{/verse}}'
38+
'{{verse number="' || verse || '"}}' || text || IFNULL(refs, '') || '{{/verse}}'
3939
ELSE
40-
'{{verse data-verse="' || verse || '"}}' || text || '{{/verse}}'
40+
'{{verse number="' || verse || '"}}' || text || '{{/verse}}'
4141
END, ''
4242
) AS verses
4343
FROM AllVersesD1 LEFT JOIN CrossReferences
@@ -46,7 +46,7 @@ WITH
4646
),
4747
AllChaptersD2 AS (
4848
SELECT book_number, book, chapter,
49-
GROUP_CONCAT('{{verse data-verse="' || verse || '"}}' || text || '{{/verse}}', '') AS verses
49+
GROUP_CONCAT('{{verse number="' || verse || '"}}' || text || '{{/verse}}', '') AS verses
5050
FROM AllVersesD2
5151
GROUP BY book_number, chapter
5252
)

print.css

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,45 @@
1-
@page { marks: crop cross; bleed: 5mm; -prince-trim: 5mm; }
1+
:root { --size: 2vh; }
2+
3+
@font-face { font-family: greek; src: url(fonts/newathu.ttf); }
4+
@font-face { font-family: mono; src: url(fonts/mono.ttf); }
5+
@font-face { font-family: f1; src: url(fonts/freeserif.ttf); }
6+
@font-face { font-family: f2; src: url(fonts/freesans.ttf); }
7+
8+
@page { margin: 1.6em .8em .8em .8em; marks: crop cross; bleed: 5mm; -prince-trim: 5mm; }
9+
@page book:left { @top-left { content: string(book); font-family: mono; font-weight: 600; font-size: var(--size); } }
10+
@page book:right { @top-right { content: string(chapter); font-family: mono; font-weight: 600; font-size: var(--size); } }
11+
@page book:blank { @top-left { content: ""; } @top-right { content: ""; } }
12+
13+
* { margin: 0; padding: 0; }
14+
body { font-size: var(--size); text-align: justify; font-family: greek, mono, f1, f2; line-height: 1.2; font-variant-ligatures: historical-ligatures; }
15+
16+
info { display: flex; width: 100%; justify-content: space-between; }
17+
info name { font-family: mono; font-weight: 600; font-size: 6vh; margin: 46vh 0; padding: 0; text-align: center; display: block; }
18+
19+
book { string-set: book attr(data-book); display: block; break-before: left; page: book; -prince-bookmark-level: 1; -prince-bookmark-label: attr(data-book); }
20+
21+
column { display: block; padding: 0 .5em; hyphens: auto; }
22+
23+
chapter { string-set: chapter attr(data-chapter); display: flex; -prince-bookmark-level: 2; -prince-bookmark-label: attr(data-chapter); }
24+
chapter:before { content: attr(data-chapter); font-family: mono; font-weight: 600; }
25+
chapter[data-chapter="1"]:before { display: none; }
26+
chapter[data-chapter="1"] verse[data-verse="1"] { padding-top: 1em; }
27+
chapter[data-chapter="1"] verse[data-verse="1"]::first-letter { font-size: 2.2em; float: left; line-height: 0.5em; }
28+
29+
verse { display: inline; }
30+
verse[data-verse="1"] { display: inline-block; }
31+
verse[data-verse="1"]:before { display: none; }
32+
verse:before { content: attr(data-verse); font-family: mono; font-weight: 600; font-size: .6em; margin: 0 .5em; vertical-align: super; }
33+
34+
reference { font-family: mono; font-size: .6em; margin: 0 .5em; vertical-align: baseline; display: inline; }
35+
36+
reference[data-rate="1"],
37+
reference[data-rate="2"],
38+
reference[data-rate="3"],
39+
reference[data-rate="4"],
40+
reference[data-rate="5"],
41+
reference[data-rate="6"],
42+
reference[data-rate="7"],
43+
reference[data-rate="8"],
44+
reference[data-rate="9"]
45+
{ display: none; }

render.sed

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ s/\s+/ /g # remove extra whitespaces
99
s/\s+([,\.\?:;!\]\)\}»])/\1/g # remove whitespaces before punctuation and closing brackets
1010
s/([\(\{\[«])\s+/\1/g # remove whitespaces after opening brackets
1111

12-
s/^[0-9]*\|([^|]*)\|1\|([^|]*)\|([^|]*)$/<\/book><book data-book="\1"><chapter data-chapter="1"><column class="left">\2<\/column><column class="right">\3<\/column><\/chapter>/
13-
s/^[0-9]*\|[^|]*\|([^|]*)\|([^|]*)\|([^|]*)$/<chapter data-chapter="\1"><column class="left">\2<\/column><column class="right">\3<\/column><\/chapter>/
12+
s/^[0-9]*\|([^|]*)\|1\|([^|]*)\|([^|]*)$/<\/book><book name="\1"><number>1<\/number><chapter><left>\2<\/left><right>\3<\/right><\/chapter>/
13+
s/^[0-9]*\|[^|]*\|([^|]*)\|([^|]*)\|([^|]*)$/<number>\1<\/number><chapter><left>\2<\/left><right>\3<\/right><\/chapter>/
1414
s/\{\{/</g
1515
s/\}\}/>/g
16-
s/\b(z|do|na|przy|bez|dla|nad|pod|przed|po|w|o|u|ku|za|a|i|oraz|ale|lecz|czy|czyli|więc|bo|się|ci|mu|mi|jej|jemu|mnie|tobie|sobie|kto|co|który|która|które|jak|gdzie) /\1\&nbsp;/gI
16+
s/\b(z|do|na|przy|bez|dla|nad|pod|przed|po|w|o|u|ku|za|a|i|oraz|ale|lecz|czy|czyli|więc|bo|się|ci|mu|mi|jej|jemu|mnie|tobie|sobie|kto|co|który|która|które|jak|gdzie) /\1\ /gI
1717

1818
1s/<\/book>//
1919
$a</book>

screen.css

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
:root { --size: 2.1vh; }
2+
3+
@font-face { font-family: greek; src: url(fonts/newathu.ttf); }
4+
@font-face { font-family: mono; src: url(fonts/mono.ttf); }
5+
@font-face { font-family: f1; src: url(fonts/freeserif.ttf); }
6+
@font-face { font-family: f2; src: url(fonts/freesans.ttf); }
7+
8+
@page { margin: 7vh 5vh 5vh 5vh; }
9+
@page book:left { @top-left { content: string(book); font-family: mono; font-weight: 600; font-size: var(--size); } }
10+
@page book:right { @top-right-corner { content: string(chapter); font-family: mono; font-weight: 600; font-size: var(--size); } }
11+
@page book:blank { @top-left { content: ""; } @top-right { content: ""; } }
12+
13+
* { margin: 0; padding: 0; }
14+
nt { font-size: var(--size); text-align: justify; font-family: greek, mono, f1, f2; line-height: 1.2; font-variant-ligatures: historical-ligatures; }
15+
16+
info { width: 100%; justify-content: space-between; }
17+
info name { font-family: mono; font-weight: 600; font-size: 6vh; margin: 47vh 0; padding: 0; text-align: center; display: block; }
18+
19+
book { string-set: book attr(name); display: block; break-before: left; page: book; -prince-bookmark-level: 1; -prince-bookmark-label: attr(name); }
20+
21+
column, left, right { display: block; padding: 0 .5em; hyphens: auto; min-width: 45%; }
22+
23+
chapter { display: flex; }
24+
chapter[number="1"] verse[number="1"] { padding-top: 1em; }
25+
26+
number { string-set: chapter content(); -prince-bookmark-level: 2; -prince-bookmark-label: string(chapter); font-family: mono; font-weight: 600; -prince-float: outside; -prince-margin-outside: -1em; break-after: avoid; }
27+
chapter[number="1"] number { display: none; }
28+
29+
book chapter:first-of-type verse[number="1"] { display: block; }
30+
book chapter:first-of-type verse[number="1"]::first-letter { font-size: 2.2em; float: left; line-height: 0.5em; }
31+
book chapter:first-of-type verse[number="1"]:before { display: none; }
32+
verse { display: inline; }
33+
verse:before { content: attr(number); font-family: mono; font-weight: 600; font-size: .6em; margin: 0 .5em; vertical-align: super; }
34+
35+
reference { font-family: mono; font-size: .6em; margin: 0 .5em; vertical-align: baseline; display: inline; }
36+
37+
reference[rate="1"],
38+
reference[rate="2"],
39+
reference[rate="3"],
40+
reference[rate="4"],
41+
reference[rate="5"],
42+
reference[rate="6"],
43+
reference[rate="7"],
44+
reference[rate="8"],
45+
reference[rate="9"],
46+
reference[rate="10"],
47+
reference[rate="11"],
48+
reference[rate="12"],
49+
reference[rate="13"],
50+
reference[rate="14"]
51+
{ display: none; }

style.css

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)