#! /usr/bin/env python
import sys;
import os;
class Reader():
def __init__(self, suffix):
self.suffix = suffix;
#
def checkOk(self, pathname):
for suffix in self.suffix:
if pathname.endswith(suffix):
return True;
return False;
def read(self, pathname):
f = open(pathname, 'r');
input_string = f.read();
f.close();
return self.getOutputString(input_string);
def getOutputString(self, input_string):
return ''
#
class AsciidocReader(Reader):
def __init__(self):
Reader.__init__(self, ['.asciidoc',
'.adoc',
'.ascii',
]);
def getOutputString(self, input_string):
return input_string;
#
class InReader(Reader):
def __init__(self, suffix, start_string, end_string):
Reader.__init__(self, suffix);
self.start_string = start_string;
self. end_string = end_string;
def getOutputString(self, input_string):
start_index = 0;
ret = ''
while True:
start = input_string.find(self.start_string, start_index);
if start == -1:
break;
end = input_string.find(self.end_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;
while index < len(ret):
if index == 0 or ret[index - 1] == "\n":
if ret[index] == ' ' or ret == "\t":
ret = ret[:index] + ret[index + 1:];
else:
index += 1;
else:
index += 1;
return ret;
#
class CppReader(InReader):
def __init__(self):
InReader.__init__(self,
['.c', '.cpp', '.h', '.hpp'],
'@asciidoc',
'@asciidoc-');
#
readers = [AsciidocReader(),
CppReader(),
];
if len(sys.argv) <= 1: readme = 'README.asciidoc';
else : readme = sys.argv[1];
readme_f = open(readme, 'w');
for (root, sub_folders, files) in os.walk('./'):
for reader in readers:
deleted = []
for filename in files:
path = os.path.join(root, filename);
if path == './' + readme:
continue;
if reader.checkOk(filename):
print 'Get asciidoc from ' + path;
readme_f.write(reader.read(path));
deleted.append(filename);
for filename in deleted:
files.remove(filename);
readme_f.close();