Mercurial > dottes
comparison abctemplate.py @ 732:c81a1ed21877
Move prev/next field reading into abctemplate.py.
Fishing all that stuff out in makeWeb.sh was a bit ugly.
| author | Jim Hague <jim.hague@acm.org> |
|---|---|
| date | Thu, 12 Oct 2017 11:21:48 +0100 |
| parents | 833e6185b6a2 |
| children |
comparison
equal
deleted
inserted
replaced
| 731:bb4aa5799d91 | 732:c81a1ed21877 |
|---|---|
| 38 import pathlib | 38 import pathlib |
| 39 import string | 39 import string |
| 40 | 40 |
| 41 from abcfield import getFieldDisplayText, getFullTitle | 41 from abcfield import getFieldDisplayText, getFullTitle |
| 42 | 42 |
| 43 def getFileData(f, latex): | |
| 44 res = {} | |
| 45 input_path = pathlib.Path(args.input.name) | |
| 46 res["name"] = input_path.stem | |
| 47 fdir = input_path.parent | |
| 48 | |
| 49 lines = f.readlines() | |
| 50 res["title"] = getFieldDisplayText(lines, fdir, "T", latex=latex) | |
| 51 res["subtitle"] = getFieldDisplayText(lines, fdir, "T", n=2, latex=latex) | |
| 52 res["fulltitle"] = getFullTitle(lines, fdir, latex=latex) | |
| 53 res["tradition"] = getFieldDisplayText(lines, fdir, "A", latex=latex) | |
| 54 res["composer"] = getFieldDisplayText(lines, fdir, "C", latex=latex) | |
| 55 res["key"] = getFieldDisplayText(lines, fdir, "K", latex=latex) | |
| 56 res["parts"] = getFieldDisplayText(lines, fdir, "P", latex=latex) | |
| 57 res["notes"] = getFieldDisplayText(lines, fdir, "N", starts="Dottes:", latex=latex) | |
| 58 res["history"] = getFieldDisplayText(lines, fdir, "H", starts="Dottes:", latex=latex) | |
| 59 return res | |
| 60 | |
| 43 if __name__ == "__main__": | 61 if __name__ == "__main__": |
| 44 parser = argparse.ArgumentParser(description='Substitute values from ABC file into template.') | 62 parser = argparse.ArgumentParser(description='Substitute values from ABC file into template.') |
| 45 parser.add_argument('-l', '--latex', dest='latex', | 63 parser.add_argument('-l', '--latex', dest='latex', |
| 46 action='store_true', | 64 action='store_true', |
| 47 help='output LaTeX formatted values (default is HTML)') | 65 help='output LaTeX formatted values (default is HTML)') |
| 49 type=argparse.FileType('r'), | 67 type=argparse.FileType('r'), |
| 50 required=True, | 68 required=True, |
| 51 help='template file') | 69 help='template file') |
| 52 parser.add_argument('-v', '--value', dest='values', action="append", | 70 parser.add_argument('-v', '--value', dest='values', action="append", |
| 53 default=[], help='define var=value items for templater') | 71 default=[], help='define var=value items for templater') |
| 72 parser.add_argument('-n', '--next', dest='nextfile', | |
| 73 type=argparse.FileType('r'), | |
| 74 help='next tune file') | |
| 75 parser.add_argument('-p', '--prev', dest='prevfile', | |
| 76 type=argparse.FileType('r'), | |
| 77 help='previous tune file') | |
| 54 parser.add_argument('input', type=argparse.FileType('r'), | 78 parser.add_argument('input', type=argparse.FileType('r'), |
| 55 help='input ABC file') | 79 help='input ABC file') |
| 56 args = parser.parse_args() | 80 args = parser.parse_args() |
| 57 | 81 |
| 58 with args.input as f: | 82 fields = getFileData(args.input, args.latex) |
| 59 lines = f.readlines() | |
| 60 | 83 |
| 61 input_path = pathlib.Path(args.input.name) | 84 vars = {} |
| 62 fname = input_path.stem | |
| 63 fdir = input_path.parent | |
| 64 | |
| 65 vars = dict() | |
| 66 vars["notesvisibility"] = "no" | 85 vars["notesvisibility"] = "no" |
| 67 vars["historyvisibility"] = "no" | 86 vars["historyvisibility"] = "no" |
| 68 | 87 |
| 69 vars["name"] = fname | 88 for name in ["name", "title", "subtitle", "fulltitle", "tradition", |
| 70 vars["title"] = getFieldDisplayText(lines, fdir, "T", latex=args.latex) | 89 "composer", "key", "parts", "notes", "history"]: |
| 71 vars["subtitle"] = getFieldDisplayText(lines, fdir, "T", n=2, latex=args.latex) | 90 vars[name] = fields[name] |
| 72 vars["fulltitle"] = getFullTitle(lines, fdir, latex=args.latex) | 91 |
| 73 vars["tradition"] = getFieldDisplayText(lines, fdir, "A", latex=args.latex) | |
| 74 vars["composer"] = getFieldDisplayText(lines, fdir, "C", latex=args.latex) | |
| 75 vars["key"] = getFieldDisplayText(lines, fdir, "K", latex=args.latex) | |
| 76 vars["parts"] = getFieldDisplayText(lines, fdir, "P", latex=args.latex) | |
| 77 vars["notes"] = getFieldDisplayText(lines, fdir, "N", starts="Dottes:", latex=args.latex) | |
| 78 if vars["notes"]: | 92 if vars["notes"]: |
| 79 vars["notesvisibility"] = "yes" | 93 vars["notesvisibility"] = "yes" |
| 80 vars["history"] = getFieldDisplayText(lines, fdir, "H", starts="Dottes:", latex=args.latex) | |
| 81 if vars["history"]: | 94 if vars["history"]: |
| 82 vars["historyvisibility"] = "yes" | 95 vars["historyvisibility"] = "yes" |
| 96 | |
| 97 if args.nextfile: | |
| 98 fields = getFileData(args.nextfile, args.latex) | |
| 99 for name in ["name", "title", "subtitle", "fulltitle"]: | |
| 100 vars["next" + name] = fields[name] if args.nextfile else "" | |
| 101 | |
| 102 if args.prevfile: | |
| 103 fields = getFileData(args.prevfile, args.latex) | |
| 104 for name in ["name", "title", "subtitle", "fulltitle"]: | |
| 105 vars["prev" + name] = fields[name] if args.prevfile else "" | |
| 83 | 106 |
| 84 for val in args.values: | 107 for val in args.values: |
| 85 keyval = val.partition("=") | 108 keyval = val.partition("=") |
| 86 vars[keyval[0]] = keyval[2] | 109 vars[keyval[0]] = keyval[2] |
| 87 | 110 |
