From 3a41da299f82c073ba50510c82851bb78b3a6d6c Mon Sep 17 00:00:00 2001 From: Bruce Eckel Date: Fri, 15 May 2015 22:36:55 -0700 Subject: [PATCH] For multi-computer development --- Ant-Clean.xml | 1 + tools/Examples.py | 37 +++++++++++++++++++++++++++++++++++-- tools/Validate.py | 6 +++--- tools/e.bat | 1 + 4 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 tools/e.bat diff --git a/Ant-Clean.xml b/Ant-Clean.xml index e695fa91..ebcf3977 100644 --- a/Ant-Clean.xml +++ b/Ant-Clean.xml @@ -15,6 +15,7 @@ + diff --git a/tools/Examples.py b/tools/Examples.py index 10ee03e3..6f29eec9 100644 --- a/tools/Examples.py +++ b/tools/Examples.py @@ -1,6 +1,5 @@ #! py -3 """ -TODO: Make sure there's a newline at the end of the extracted files Extract code examples from TIJ4 Refreshed. Extracts from plain text file. Creates Ant build.xml file for each subdirectory. """ @@ -11,7 +10,8 @@ import shutil import pprint import difflib from sortedcontainers import SortedSet -from betools import CmdLine +from collections import defaultdict +from betools import CmdLine, visitDir, ruler, head maindef = re.compile("public\s+static\s+void\s+main") @@ -368,4 +368,37 @@ def checkAntClean(): # pprint.pprint([f for f in others if "test" in f or "Test" in f]) +tagRE = re.compile("{.*?}", re.DOTALL) + +def findTags(lines): + topblock = [] + for line in lines: + if line.startswith("//"): + topblock.append(line) + else: + break + topblock = [line[2:].strip() for line in topblock] + tags = tagRE.findall(" ".join(topblock)) + return tags + + + +@CmdLine('t', "findAllCommentTags" ) +def findAllCommentTags(): + "Find all '{}' comment tags in Java files" + tagdict = defaultdict(list) + examples = Path(r"C:\Users\Bruce\Dropbox\__TIJ4-ebook\ExtractedExamples") + for jf in [f for f in examples.rglob("*.java")]: + with jf.open() as code: + lines = code.readlines() + tags = findTags(lines) + if tags: + # head(jf.name) + # print("\n".join(tags)) + for t in tags: + tagdict[t].append(jf.name) + pprint.pprint(tagdict) + + + if __name__ == '__main__': CmdLine.run() diff --git a/tools/Validate.py b/tools/Validate.py index 81072a91..6659edc6 100644 --- a/tools/Validate.py +++ b/tools/Validate.py @@ -301,8 +301,7 @@ class Result: jf.write(result) return result else: - print("{} already has Output: tags:".format(self.javaFilePath)) - print(self.output_tags) + print("{} already has Output!".format(self.javaFilePath)) sys.exit() @@ -314,7 +313,8 @@ def discoverOutputTags(): results = [r for r in [Result.create(jfp) for jfp in RunFiles.base.rglob("*.java")] if r] assert len(results), "Must run runall.ps1 first" tagd = defaultdict(list) - for tagged in [r for r in [Result.create(jfp) for jfp in RunFiles.base.rglob("*.java")] if r and r.output_tags]: + for tagged in [r for r in [Result.create(jfp) for jfp in RunFiles.base.rglob("*.java")] + if r and r.output_tags]: for tag in tagged.output_tags: tagd[tag].append(str(tagged.javaFilePath)) pprint.pprint(tagd) diff --git a/tools/e.bat b/tools/e.bat new file mode 100644 index 00000000..ebcb65fa --- /dev/null +++ b/tools/e.bat @@ -0,0 +1 @@ +python C:\Users\Bruce\Dropbox\__TIJ4-ebook\Examples.py %*