summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xftt-codegen28
1 files changed, 17 insertions, 11 deletions
diff --git a/ftt-codegen b/ftt-codegen
index ed0b55b..dcf9ace 100755
--- a/ftt-codegen
+++ b/ftt-codegen
@@ -2,6 +2,7 @@
import copy
import json
+import os
import re
import sys
@@ -11,6 +12,7 @@ import yaml
hardcoded = '''
import fable, json, logging
+from %s import *
run = fable.Run()
'''
@@ -123,29 +125,33 @@ def codegen(f, step, bindings):
f.write(' logging.debug("calling {} with args %s", args)\n'.format(function))
f.write(' {}(run.get_context(), **args)\n\n'.format(function))
+
+def infer_basename(markdowns):
+ root, ext = os.path.splitext(markdowns[0])
+ if ext not in ['.md', '.mdwn']:
+ sys.exit('Input filenames must end in .md or .mdwn')
+ return root
+
+
def debug(msg):
if False:
sys.stderr.write('DEBUG: {}\n'.format(msg))
sys.stderr.flush()
-debug('reading bindings')
-bindings = yaml.safe_load(open(sys.argv[1]))
+markdowns = sys.argv[1:]
+basename = infer_basename(markdowns)
+text = ''.join(open(filename).read() for filename in markdowns)
-debug('reading prelude')
-prelude = open(sys.argv[2]).read()
-sys.stdout.write(hardcoded)
-sys.stdout.write(prelude)
-sys.stdout.write('\n')
+with open(basename + '.yaml') as f:
+ bindings = yaml.safe_load(f)
-debug('reading inputs')
-text = ''.join(open(filename).read() for filename in sys.argv[3:])
+funcs = os.path.basename(basename) # drop directories
+sys.stdout.write(hardcoded % funcs)
-debug('parse')
parser = CommonMark.DocParser()
ast = parser.parse(text)
-debug('output')
fable = Fable()
walk(ast, lambda o: collect(fable, o))