1.1 --- a/tests/test_parser.py Mon Aug 13 22:54:01 2018 +0200
1.2 +++ b/tests/test_parser.py Tue Aug 14 22:33:30 2018 +0200
1.3 @@ -17,17 +17,20 @@
1.4
1.5 # Import specific objects.
1.6
1.7 -from moinformat import make_input, make_output, make_parser, make_serialiser, parse, serialise
1.8 +from moinformat import Metadata, make_input, make_output, make_parser, \
1.9 + make_serialiser, parse, serialise
1.10 from moinformat.tree.moin import Container
1.11
1.12 def test_input(d, s):
1.13
1.14 "Compare serialised output from 'd' with its original form 's'."
1.15
1.16 - output = make_output("standalone")
1.17 + metadata = Metadata()
1.18 +
1.19 + output = make_output(metadata)
1.20 expected = output.encode(s)
1.21
1.22 - result = serialise(d, make_serialiser("moin", output))
1.23 + result = serialise(d, make_serialiser(metadata))
1.24 identical = result == expected
1.25
1.26 if quiet:
1.27 @@ -45,8 +48,9 @@
1.28
1.29 # Show HTML serialisation.
1.30
1.31 - output = make_output("standalone")
1.32 - print serialise(d, make_serialiser("html", output))
1.33 + metadata.set("output_format", "html")
1.34 +
1.35 + print serialise(d, make_serialiser(metadata))
1.36 print "-" * 60
1.37 print
1.38
1.39 @@ -171,6 +175,20 @@
1.40
1.41 return branches[0]
1.42
1.43 +def get_filename(filename):
1.44 +
1.45 + "Using 'filename', return the core text filename and any encoding."
1.46 +
1.47 + t = filename.split(".")
1.48 + if len(t) > 2:
1.49 + text_filename = ".".join(t[:2])
1.50 + encoding = t[2]
1.51 + else:
1.52 + text_filename = filename
1.53 + encoding = None
1.54 +
1.55 + return text_filename, encoding
1.56 +
1.57 def get_tree(input, tree_filename):
1.58
1.59 "Using 'input', return (text, tree) for 'tree_filename'."
1.60 @@ -188,9 +206,14 @@
1.61 if quiet:
1.62 del args[args.index("-q")]
1.63
1.64 + metadata = Metadata({
1.65 + "input_context" : "directory",
1.66 + "input_filename" : dirname,
1.67 + })
1.68 +
1.69 # Make an input context.
1.70
1.71 - input = make_input("directory", {"filename" : dirname})
1.72 + input = make_input(metadata)
1.73
1.74 # Obtain input filenames.
1.75
1.76 @@ -200,16 +223,9 @@
1.77 # Process each filename, obtaining a corresponding tree definition.
1.78
1.79 for filename in filenames:
1.80 -
1.81 - # Test for an explicit encoding suffix.
1.82 + text_filename, encoding = get_filename(filename)
1.83
1.84 - t = filename.split(".")
1.85 - if len(t) > 2:
1.86 - text_filename = ".".join(t[:2])
1.87 - encoding = t[2]
1.88 - else:
1.89 - text_filename = filename
1.90 - encoding = None
1.91 + # Identify any tree-related filenames.
1.92
1.93 basename = text_filename.rsplit(".", 1)[0]
1.94 tree_filename = "%s.tree" % basename
1.95 @@ -218,7 +234,7 @@
1.96 # Read and parse the input.
1.97
1.98 s = input.readfile(text_filename, encoding)
1.99 - p = make_parser()
1.100 + p = make_parser(metadata)
1.101 d = parse(s, p)
1.102
1.103 # Read and parse any tree definitions.