diff options
| author | Remko Tronçon <git@el-tramo.be> | 2010-03-28 19:43:32 (GMT) | 
|---|---|---|
| committer | Remko Tronçon <git@el-tramo.be> | 2010-03-28 19:44:49 (GMT) | 
| commit | 3afa4f741c26360245dc313bc368f508b26a6b96 (patch) | |
| tree | 4fc9fedac990a099010fed8a4ee09ddc51c21cc5 /DocBook/SCons/FO.py | |
| parent | 7548dabae7d10e48816142e508be651ada9f7bc3 (diff) | |
| download | swift-3afa4f741c26360245dc313bc368f508b26a6b96.zip swift-3afa4f741c26360245dc313bc368f508b26a6b96.tar.bz2  | |
Added DocBook infrastructure.
Imported most of "DocBook kit".
Added placeholder for Swiften developers guide.
Diffstat (limited to 'DocBook/SCons/FO.py')
| -rw-r--r-- | DocBook/SCons/FO.py | 45 | 
1 files changed, 45 insertions, 0 deletions
diff --git a/DocBook/SCons/FO.py b/DocBook/SCons/FO.py new file mode 100644 index 0000000..c7596d6 --- /dev/null +++ b/DocBook/SCons/FO.py @@ -0,0 +1,45 @@ +import SCons.Util +import xml.dom.minidom, re + +################################################################################ +# XSL-FO builder +################################################################################ + +def generate(env) : +  def generate_actions(source, target, env, for_signature) : +    if len(env["FOCFG"]) > 0 : +      cmd = "$FO -c $FOCFG $FOFLAGS $SOURCE $TARGET" +    else : +      cmd = "$FO $FOFLAGS $SOURCE $TARGET" +    return SCons.Action.Action(cmd, cmdstr = "$FOCOMSTR") + +  def modify_sources(target, source, env) : +    if len(env["FOCFG"]) > 0 : +      source.append(env["FOCFG"]) +    return target, source + +  def scan_fo(node, env, path) : +    dependencies = set() +    try : +      document = xml.dom.minidom.parseString(node.get_contents()) +    except xml.parsers.expat.ExpatError: +      return [] +    for include in document.getElementsByTagNameNS("http://www.w3.org/1999/XSL/Format", "external-graphic") : +      m = re.match("url\((.*)\)", include.getAttribute("src")) +      if m : +        dependencies.add(m.group(1)) +    return list(dependencies) + +  env["FO"] = "fop" +  env["FOFLAGS"] = "" +  env["FOCFG"] = "" +  env["BUILDERS"]["FO"] = SCons.Builder.Builder( +        generator = generate_actions, +        emitter = modify_sources, +        source_scanner = SCons.Scanner.Scanner(function = scan_fo, skeys = [".fo"]), +        suffix = ".pdf", +        src_suffix = ".fo" +      ) + +def exists(env) : +  return True  | 
 Swift