diff options
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/context/lua/mtx-epub.lua | 149 | ||||
-rw-r--r-- | scripts/context/lua/mtx-flac.lua | 4 |
2 files changed, 151 insertions, 2 deletions
diff --git a/scripts/context/lua/mtx-epub.lua b/scripts/context/lua/mtx-epub.lua new file mode 100644 index 000000000..5239028ba --- /dev/null +++ b/scripts/context/lua/mtx-epub.lua @@ -0,0 +1,149 @@ +if not modules then modules = { } end modules ['mtx-epub'] = { + version = 1.001, + comment = "companion to mtxrun.lua", + author = "Hans Hagen, PRAGMA-ADE, Hasselt NL", + copyright = "PRAGMA ADE / ConTeXt Development Team", + license = "see context related readme files" +} + +local format = string.format +local concat = table.concat + +local helpinfo = [[ +--make create epub zip file + +example: + +mtxrun --script epub --make mydocument +]] + +local application = logs.application { + name = "mtx-epub", + banner = "ConTeXt EPUB Helpers 0.10", + helpinfo = helpinfo, +} + +-- script code + +scripts = scripts or { } +scripts.epub = scripts.epub or { } + +local mimetype = "application/epub+zip" + +local container = [[ +<?xml version="1.0" encoding="UTF-8" ?> + +<container version="1.0" xmlns="urn:oasis:names:tc:opendocument:xmlns:container"> + <rootfiles> + <rootfile full-path="OPS/%s" media-type="application/oebps-package+xml"/> + </rootfiles> +</container> +]] + +local package = [[ +<?xml version="1.0"?> + +<package version="2.0" xmlns="http://www.idpf.org/2007/opf" unique-identifier="%s"> + + <metadata xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:opf="http://www.idpf.org/2007/opf"> + <dc:title>My Title</dc:title> + <dc:language>en</dc:language> + <dc:identifier id="%s" /> + <dc:creator opf:file-as="Self, My" opf:role="aut">MySelf</dc:creator> + </metadata> + + <manifest> + %s + </manifest> + + <spine toc="ncx"> + <itemref idref="%s" /> + </spine> + +</package> +]] + +local mimetypes = { + xhtml = "application/xhtml+xml", + css = "text/css", +} + +-- specification = { +-- name = "document", +-- identifier = "123", +-- root = "a.xhtml", +-- files = { +-- "a.xhtml", +-- "b.css", +-- "c.png", +-- } +-- } + +function scripts.epub.make() + + local filename = environment.files[1] + + if filename and filename ~= "" then + + filename = file.basename(filename) + local specfile = file.replacesuffix(filename,"specification") + local specification = lfs.isfile(specfile) and dofile(specfile) or { } + + inspect(specification) + + local name = specification.name or file.removesuffix(filename) + local identifier = specification.identifier or os.uuid() + local files = specification.files or { file.addsuffix(filename,"xhtml") } + local root = specification.root or files[1] + + local epubname = name + local epubpath = file.replacesuffix(name,"tree") + local epubfile = file.replacesuffix(name,"epub") + local epubroot = file.replacesuffix(name,"opf") + + local used = { } + + for i=1,#files do + local filename = files[i] + local suffix = file.suffix(filename) + local mime = mimetypes[suffix] + if mime then + file.copy(filename,file.join(epubpath,"OPS",filename)) + used[#used+1] = format("<item id='%s' href='%s' media-type='%s'/>",i,filename,mime) + end + end + + container = format(container,epubroot) + package = format(package,identifier,identifier,concat(used,"\n"),root) + + lfs.mkdir(epubpath) + lfs.mkdir(file.join(epubpath,"META-INF")) + lfs.mkdir(file.join(epubpath,"OPS")) + + io.savedata(file.join(epubpath,"mimetype"),mimetype) + io.savedata(file.join(epubpath,"META-INF","container.xml"),container) + io.savedata(file.join(epubpath,"OPS",epubroot),package) + + lfs.chdir(epubpath) + + os.remove(epubfile) + + os.execute(format("zip %s -0 %s",epubfile,"mimetype")) + os.execute(format("zip %s -r %s",epubfile,"META-INF")) + os.execute(format("zip %s -r %s",epubfile,"OPS")) + + lfs.chdir("..") + + application.report("epub archive: %s",file.join(epubpath,epubfile)) + + end + +end + +-- + +if environment.argument("make") then + scripts.epub.make() +else + application.help() +end diff --git a/scripts/context/lua/mtx-flac.lua b/scripts/context/lua/mtx-flac.lua index 0f517f3d4..37f985654 100644 --- a/scripts/context/lua/mtx-flac.lua +++ b/scripts/context/lua/mtx-flac.lua @@ -170,8 +170,8 @@ local helpinfo = [[ example: -mtxrun --collect somename.flac -mtxrun --collect --pattern="m:/music/**") +mtxrun --script flac --collect somename.flac +mtxrun --script flac --collect --pattern="m:/music/**") ]] local application = logs.application { |