diff options
Diffstat (limited to 'readme_generate.py')
-rwxr-xr-x | readme_generate.py | 118 |
1 files changed, 64 insertions, 54 deletions
diff --git a/readme_generate.py b/readme_generate.py index 8d105bf..126d62e 100755 --- a/readme_generate.py +++ b/readme_generate.py @@ -35,58 +35,58 @@ class AsciidocReader(Reader): # class InReader(Reader): def __init__(self, suffix, start_string, end_string): - Reader.__init__(self, suffix, False); - self.start_string = start_string; - self. end_string = end_string; + Reader.__init__(self, suffix, False) + self.start_string = start_string + self. end_string = end_string def getOutputString(self, input_string): - start_index = 0; + start_index = 0 ret = '' while True: - start = input_string.find(self.start_string, start_index); + start = input_string.find(self.start_string, start_index) if start == -1: - break; + break end = input_string.find(self.end_string, - start + len(self.start_string)); + start + len(self.start_string)) if end == -1: - break; - start_index = end + len(self.end_string); - ret += input_string[start + len(self.start_string) : end]; - index = 0; + break + start_index = end + len(self.end_string) + ret += input_string[start + len(self.start_string) : end] + index = 0 while index < len(ret): if index == 0 or ret[index - 1] == "\n": if ret[index] == ' ' or ret == "\t": - ret = ret[:index] + ret[index + 1:]; + ret = ret[:index] + ret[index + 1:] else: - index += 1; + index += 1 else: - index += 1; - return ret; + index += 1 + return ret # class InLineReader(Reader): def __init__(self, suffix, prefix): - Reader.__init__(self, suffix, False); - self.prefix = prefix; + Reader.__init__(self, suffix, False) + self.prefix = prefix def getOutputString(self, input_string): - ret = ''; - line_begin = 0; + ret = '' + line_begin = 0 while line_begin < len(input_string): - line_end = line_begin; + line_end = line_begin for line_end in range(line_begin, len(input_string) + 1): if input_string[line_end] == "\n": - break; - ok = False; + break + ok = False for i in range(line_begin, line_end - len(self.prefix) + 1): if input_string[i : i + len(self.prefix)] == self.prefix: - ok = True; - break; + ok = True + break if ok: - start = i + len(self.prefix); + start = i + len(self.prefix) while start < line_end: if input_string[start]!=' ' and input_string[start]!="\t": - break; - start += 1; - ret += input_string[start: line_end].replace('\\', " +\n")+"\n"; - line_begin = line_end + 1; + break + start += 1 + ret += input_string[start: line_end].replace('\\', " +\n")+"\n" + line_begin = line_end + 1 return ret; # class CppReader(InReader): @@ -94,17 +94,15 @@ class CppReader(InReader): InReader.__init__(self, ['.c', '.cpp', '.h', '.hpp'], '@asciidoc', - '@asciidoc-'); + '@asciidoc-') class CppLineReader(InLineReader): def __init__(self): - InLineReader.__init__(self, - ['.c', '.cpp', '.h', '.hpp'], - '//#'); + InLineReader.__init__(self, ['.c', '.cpp', '.h', '.hpp'], '//#'); # readers = [AsciidocReader(), CppReader(), CppLineReader(), - ]; + ]; if len(sys.argv) <= 1: readme = 'README.asciidoc'; else : readme = sys.argv[1]; @@ -115,42 +113,54 @@ footer_n = 'footer'; footer_lst = []; for (root, sub_folders, files) in os.walk('./'): + files.sort(); + sub_folders.sort(); for reader in readers: deleted = [] - tmp1 = []; - tmp2 = []; + tmp1 = [] + tmp2 = [] for filename in files: if filename.find(footer_n) == -1: - tmp1.append(filename); + tmp1.append(filename) else: if not os.path.join(root, filename) in footer_lst: - footer_lst.append(os.path.join(root, filename)); - files = tmp1; + footer_lst.append(os.path.join(root, filename)) + files = tmp1 for filename in files: - path = os.path.join(root, filename); + path = os.path.join(root, filename) if path == './' + readme: - continue; + continue if reader.checkOk(filename): - s = reader.read(path); + s = reader.read(path) if len(s) > 0: - print 'Get asciidoc from ' + path; - readme_f.write(s); + print 'Get asciidoc from ' + path + dir_name = '' + dirs_ct = 0 + for i in range(0, len(root)): + if root[i] == '/': + dirs_ct += 1 + dir_name = root[i + 1:] + '/' + if dir_name != '/': + readme_f.write('\n'); + readme_f.write('=' * (dirs_ct + 2) + ' ' + dir_name); + readme_f.write('\n'); + readme_f.write(s) if reader.stop(): - deleted.append(filename); + deleted.append(filename) for filename in deleted: - files.remove(filename); + files.remove(filename) for reader in readers: - deleted = []; + deleted = [] for path in footer_lst: if path == './' + readme: - continue; + continue if reader.checkOk(path): - s = reader.read(path); + s = reader.read(path) if len(s) > 0: - print 'Get asciidoc from ' + path; - readme_f.write(s); + print 'Get asciidoc from ' + path + readme_f.write(s) if reader.stop(): - deleted.append(path); + deleted.append(path) for filename in deleted: - footer_lst.remove(filename); -readme_f.close(); + footer_lst.remove(filename) +readme_f.close() |