From 2fdb812f462de1769e49f03a76547825b9bc9721 Mon Sep 17 00:00:00 2001 From: Dave Burt Date: Wed, 21 Feb 2024 21:38:10 +1100 Subject: [PATCH] Add ePub builder --- .gitignore | 3 +++ build_epub | 38 ++++++++++++++++++++++++++++++++++++++ title.txt | 6 ++++++ 3 files changed, 47 insertions(+) create mode 100644 .gitignore create mode 100755 build_epub create mode 100644 title.txt diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0e17d20 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +chapters +tmp +*.epub diff --git a/build_epub b/build_epub new file mode 100755 index 0000000..0c884b6 --- /dev/null +++ b/build_epub @@ -0,0 +1,38 @@ +#!/usr/bin/env ruby + +require 'pathname' + +chapters = %w( + Races + Classes + Characterizations + Gameplay + Equipment + Gamemastering + Spells\ (Alt) + Treasure\ (Alt) + Monsters\ (Alt) +) + +# chapter = h1 +# file = h2 + +`rm chapters/*.md` + +chapters.each_with_index do |chapter, i| + s = "# #{chapter.split.first}\n\n" + + Pathname(chapter).children.sort.map do |f| + data = f.read + data[/^#+ /] = '' # remove initial heading (it will be re-added as h2) + hs = data.scan(/^#+ /).sort.uniq.map {|hdg| hdg.size - 1 } + (hs.length - 1).downto(0) do |h| + data.gsub! /^\#{#{hs[h]}}/, '#' * (h + 3) + end + "\n\n## " + data + end.join + File.write "chapters/#{i+1}_#{chapter.split.first}.md", s +end + +pandoc_cmd = "pandoc -o Dungeons_and_Dragons_SRD_5.1.epub title.txt chapters/*" +puts pandoc_cmd +system pandoc_cmd diff --git a/title.txt b/title.txt new file mode 100644 index 0000000..4e2c6d9 --- /dev/null +++ b/title.txt @@ -0,0 +1,6 @@ +--- +title: Dungeons and Dragons SRD 5.1 +author: Wizards of the Coast +rights: CC-BY-4.0 +language: en-US +---