aboutsummaryrefslogtreecommitdiffstats
path: root/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin
diff options
context:
space:
mode:
Diffstat (limited to 'stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin')
-rwxr-xr-xstylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/dbtoepub76
-rwxr-xr-xstylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/lib/docbook.rb227
-rw-r--r--stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/xslt/obfuscate.xsl12
3 files changed, 0 insertions, 315 deletions
diff --git a/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/dbtoepub b/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/dbtoepub
deleted file mode 100755
index 9976f816a..000000000
--- a/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/dbtoepub
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/env ruby
-# This program converts DocBook documents into .epub files.
-#
-# Usage: dbtoepub [OPTIONS] [DocBook Files]
-#
-# .epub is defined by the IDPF at www.idpf.org and is made up of 3 standards:
-# - Open Publication Structure (OPS)
-# - Open Packaging Format (OPF)
-# - Open Container Format (OCF)
-#
-# Specific options:
-# -c, --css [FILE] Use FILE for CSS on generated XHTML.
-# -d, --debug Show debugging output.
-# -f, --font [OTF FILE] Embed OTF FILE in .epub.
-# -h, --help Display usage info.
-# -s, --stylesheet [XSL FILE] Use XSL FILE as a customization
-# layer (imports epub/docbook.xsl).
-# -v, --verbose Make output verbose.
-
-lib = File.expand_path(File.join(File.dirname(__FILE__), 'lib'))
-$LOAD_PATH.unshift(lib) if File.exist?(lib)
-
-require 'fileutils'
-require 'optparse'
-require 'tmpdir'
-
-require 'docbook'
-
-verbose = false
-debug = false
-css_file = nil
-otf_files = []
-customization_layer = nil
-output_file = nil
-
-#$DEBUG=true
-
-# Set up the OptionParser
-opts = OptionParser.new
-opts.banner = "Usage: #{File.basename($0)} [OPTIONS] [DocBook Files]
-
-#{File.basename($0)} converts DocBook <book> and <article>s into to .epub files.
-
-.epub is defined by the IDPF at www.idpf.org and is made up of 3 standards:
-- Open Publication Structure (OPS)
-- Open Packaging Format (OPF)
-- Open Container Format (OCF)
-
-Specific options:"
-opts.on("-c", "--css [FILE]", "Use FILE for CSS on generated XHTML.") {|f| css_file = f}
-opts.on("-d", "--debug", "Show debugging output.") {debug = true; verbose = true}
-opts.on("-f", "--font [OTF FILE]", "Embed OTF FILE in .epub.") {|f| otf_files << f}
-opts.on("-h", "--help", "Display usage info.") {puts opts.to_s; exit 0}
-opts.on("-o", "--output [OUTPUT FILE]", "Output ePub file as OUTPUT FILE.") {|f| output_file = f}
-opts.on("-s", "--stylesheet [XSL FILE]", "Use XSL FILE as a customization layer (imports epub/docbook.xsl).") {|f| customization_layer = f}
-opts.on("-v", "--verbose", "Make output verbose.") {verbose = true}
-
-db_files = opts.parse(ARGV)
-if db_files.size == 0
- puts opts.to_s
- exit 0
-end
-
-db_files.each {|docbook_file|
- dir = File.expand_path(File.join(Dir.tmpdir, ".epubtmp#{Time.now.to_f.to_s}"))
- FileUtils.mkdir_p(dir)
- e = DocBook::Epub.new(docbook_file, dir, css_file, customization_layer, otf_files)
-
- if output_file
- epub_file = output_file
- else
- epub_file = File.basename(docbook_file, ".xml") + ".epub"
- end
- puts "Rendering DocBook file #{docbook_file} to #{epub_file}" if verbose
- e.render_to_file(epub_file)
-}
diff --git a/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/lib/docbook.rb b/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/lib/docbook.rb
deleted file mode 100755
index 14110d60b..000000000
--- a/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/lib/docbook.rb
+++ /dev/null
@@ -1,227 +0,0 @@
-require 'fileutils'
-require 'rexml/parsers/pullparser'
-
-module DocBook
-
- class Epub
- CHECKER = "epubcheck"
- STYLESHEET = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', "docbook.xsl"))
- CALLOUT_PATH = File.join('images', 'callouts')
- CALLOUT_FULL_PATH = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', CALLOUT_PATH))
- CALLOUT_LIMIT = 15
- CALLOUT_EXT = ".png"
- XSLT_PROCESSOR = "xsltproc"
- OUTPUT_DIR = ".epubtmp#{Time.now.to_f.to_s}"
- MIMETYPE = "application/epub+zip"
- META_DIR = "META-INF"
- OEBPS_DIR = "OEBPS"
- ZIPPER = "zip"
-
- attr_reader :output_dir
-
- def initialize(docbook_file, output_dir=OUTPUT_DIR, css_file=nil, customization_layer=nil, embedded_fonts=[])
- @docbook_file = docbook_file
- @output_dir = output_dir
- @meta_dir = File.join(@output_dir, META_DIR)
- @oebps_dir = File.join(@output_dir, OEBPS_DIR)
- @css_file = css_file ? File.expand_path(css_file) : css_file
- @embedded_fonts = embedded_fonts
- @to_delete = []
-
- if customization_layer
- @stylesheet = File.expand_path(customization_layer)
- else
- @stylesheet = STYLESHEET
- end
-
- unless File.exist?(@docbook_file)
- raise ArgumentError.new("File #{@docbook_file} does not exist")
- end
- end
-
- def render_to_file(output_file, verbose=false)
- render_to_epub(output_file, verbose)
- bundle_epub(output_file, verbose)
- cleanup_files(@to_delete)
- end
-
- def self.invalid?(file)
- # Obnoxiously, we can't just check for a non-zero output...
- cmd = %Q(#{CHECKER} "#{file}")
- output = `#{cmd} 2>&1`
-
- if $?.to_i == 0
- return false
- else
- STDERR.puts output if $DEBUG
- return output
- end
- end
-
- private
- def render_to_epub(output_file, verbose)
- @collapsed_docbook_file = collapse_docbook()
-
- chunk_quietly = "--stringparam chunk.quietly " + (verbose ? '0' : '1')
- callout_path = "--stringparam callout.graphics.path #{CALLOUT_PATH}/"
- callout_limit = "--stringparam callout.graphics.number.limit #{CALLOUT_LIMIT}"
- callout_ext = "--stringparam callout.graphics.extension #{CALLOUT_EXT}"
- html_stylesheet = "--stringparam html.stylesheet #{File.basename(@css_file)}" if @css_file
- base = "--stringparam base.dir #{OEBPS_DIR}/"
- unless @embedded_fonts.empty?
- embedded_fonts = @embedded_fonts.map {|f| File.basename(f)}.join(',')
- font = "--stringparam epub.embedded.fonts \"#{embedded_fonts}\""
- end
- meta = "--stringparam epub.metainf.dir #{META_DIR}/"
- oebps = "--stringparam epub.oebps.dir #{OEBPS_DIR}/"
- options = [chunk_quietly,
- callout_path,
- callout_limit,
- callout_ext,
- base,
- font,
- meta,
- oebps,
- html_stylesheet,
- ].join(" ")
- # Double-quote stylesheet & file to help Windows cmd.exe
- db2epub_cmd = %Q(cd "#{@output_dir}" && #{XSLT_PROCESSOR} #{options} "#{@stylesheet}" "#{@collapsed_docbook_file}")
- STDERR.puts db2epub_cmd if $DEBUG
- success = system(db2epub_cmd)
- raise "Could not render as .epub to #{output_file} (#{db2epub_cmd})" unless success
- @to_delete << Dir["#{@meta_dir}/*"]
- @to_delete << Dir["#{@oebps_dir}/*"]
- end
-
- def bundle_epub(output_file, verbose)
-
- quiet = verbose ? "" : "-q"
- mimetype_filename = write_mimetype()
- meta = File.basename(@meta_dir)
- oebps = File.basename(@oebps_dir)
- images = copy_images()
- csses = copy_csses()
- fonts = copy_fonts()
- callouts = copy_callouts()
- # zip -X -r ../book.epub mimetype META-INF OEBPS
- # Double-quote stylesheet & file to help Windows cmd.exe
- zip_cmd = %Q(cd "#{@output_dir}" && #{ZIPPER} #{quiet} -X -r "#{File.expand_path(output_file)}" "#{mimetype_filename}" "#{meta}" "#{oebps}")
- puts zip_cmd if $DEBUG
- success = system(zip_cmd)
- raise "Could not bundle into .epub file to #{output_file}" unless success
- end
-
- # Input must be collapsed because REXML couldn't find figures in files that
- # were XIncluded or added by ENTITY
- # http://sourceforge.net/tracker/?func=detail&aid=2750442&group_id=21935&atid=373747
- def collapse_docbook
- # Double-quote stylesheet & file to help Windows cmd.exe
- collapsed_file = File.join(File.expand_path(File.dirname(@docbook_file)),
- '.collapsed.' + File.basename(@docbook_file))
- entity_collapse_command = %Q(xmllint --loaddtd --noent -o "#{collapsed_file}" "#{@docbook_file}")
- entity_success = system(entity_collapse_command)
- raise "Could not collapse named entites in #{@docbook_file}" unless entity_success
-
- xinclude_collapse_command = %Q(xmllint --xinclude -o "#{collapsed_file}" "#{collapsed_file}")
- xinclude_success = system(xinclude_collapse_command)
- raise "Could not collapse XIncludes in #{@docbook_file}" unless xinclude_success
-
- @to_delete << collapsed_file
- return collapsed_file
- end
-
- def copy_callouts
- new_callout_images = []
- if has_callouts?
- calloutglob = "#{CALLOUT_FULL_PATH}/*#{CALLOUT_EXT}"
- Dir.glob(calloutglob).each {|img|
- img_new_filename = File.join(@oebps_dir, CALLOUT_PATH, File.basename(img))
-
- # TODO: What to rescue for these two?
- FileUtils.mkdir_p(File.dirname(img_new_filename))
- FileUtils.cp(img, img_new_filename)
- @to_delete << img_new_filename
- new_callout_images << img
- }
- end
- return new_callout_images
- end
-
- def copy_fonts
- new_fonts = []
- @embedded_fonts.each {|font_file|
- font_new_filename = File.join(@oebps_dir, File.basename(font_file))
- FileUtils.cp(font_file, font_new_filename)
- new_fonts << font_file
- }
- return new_fonts
- end
-
- def copy_csses
- if @css_file
- css_new_filename = File.join(@oebps_dir, File.basename(@css_file))
- FileUtils.cp(@css_file, css_new_filename)
- end
- end
-
- def copy_images
- image_references = get_image_refs()
- new_images = []
- image_references.each {|img|
- # TODO: It'd be cooler if we had a filetype lookup rather than just
- # extension
- if img =~ /\.(svg|png|gif|jpe?g|xml)/i
- img_new_filename = File.join(@oebps_dir, img)
- img_full = File.join(File.expand_path(File.dirname(@docbook_file)), img)
-
- # TODO: What to rescue for these two?
- FileUtils.mkdir_p(File.dirname(img_new_filename))
- puts(img_full + ": " + img_new_filename) if $DEBUG
- FileUtils.cp(img_full, img_new_filename)
- @to_delete << img_new_filename
- new_images << img_full
- end
- }
- return new_images
- end
-
- def write_mimetype
- mimetype_filename = File.join(@output_dir, "mimetype")
- File.open(mimetype_filename, "w") {|f| f.print MIMETYPE}
- @to_delete << mimetype_filename
- return File.basename(mimetype_filename)
- end
-
- def cleanup_files(file_list)
- file_list.flatten.each {|f|
- # Yikes
- FileUtils.rm_r(f, :force => true )
- }
- end
-
- # Returns an Array of all of the (image) @filerefs in a document
- def get_image_refs
- parser = REXML::Parsers::PullParser.new(File.new(@collapsed_docbook_file))
- image_refs = []
- while parser.has_next?
- el = parser.pull
- if el.start_element? and (el[0] == "imagedata" or el[0] == "graphic")
- image_refs << el[1]['fileref']
- end
- end
- return image_refs.uniq
- end
-
- # Returns true if the document has code callouts
- def has_callouts?
- parser = REXML::Parsers::PullParser.new(File.new(@collapsed_docbook_file))
- while parser.has_next?
- el = parser.pull
- if el.start_element? and (el[0] == "calloutlist" or el[0] == "co")
- return true
- end
- end
- return false
- end
- end
-end
diff --git a/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/xslt/obfuscate.xsl b/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/xslt/obfuscate.xsl
deleted file mode 100644
index 4ea4cd557..000000000
--- a/stylesheets/lfs-xsl/docbook-xsl-1.78.1/epub/bin/xslt/obfuscate.xsl
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
- <xsl:output method="xml" omit-xml-declaration="no" doctype-public="-//OASIS//DTD DocBook XML V4.4//EN" doctype-system="http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" indent="no"/>
- <xsl:template match="@*|*|comment()|processing-instruction()">
- <xsl:copy>
- <xsl:apply-templates select="@*|node()"/>
- </xsl:copy>
- </xsl:template>
- <xsl:template match="text()">
- <xsl:value-of select="replace(replace(., '[a-z]', 'x'), '[0-9]', 'd')"/>
- </xsl:template>
-</xsl:stylesheet>