blob: 6cebb7fbf56ef30dead204ef1a2de969229590e3 (
about) (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#!/usr/bin/python
# An example how to parse the KVIrc documentation with python.
# Do whatever you want with it :D
import re
import os
filelist = []
print "Step 1:"
print "Searching files ",
for root, dirs, files in os.walk("/src/pragma/kvirc-git/KVIrc/"):
for f in files:
r = re.compile("(.*)\.(h|cpp|c)$")
if r.match(f):
filelist.append(os.path.join(root, f))
print ".",
outfile = open("index.html","w")
print ""
print "Step 2:"
print "Extracting comments",
# compile regular expressions
regex_comment = re.compile("(\/\*.*?\@doc:[\t ]+(.*?)\n.*?\*\/)", re.M and re.S);
regex_category = re.compile("^[\t ]+\@(type|title|short|syntax|description|doc):(.*)$")
regex_line = re.compile("^[\t ]+(.*)$")
# loop through all files
for filename in filelist:
# first we go through the file
comments = {}
category = ""
# read file
data = open(filename).read();
# get all comments
comments_found = regex_comment.findall(data)
for match in comments_found:
print ".",
comment = {}
# we use @doc: to identify and save the comment
doc_name = match[1]
# if it already exists append our data
if comments.has_key(doc_name):
comment = comments[doc_name]
# go through the comment line by line
for m in match[0].splitlines():
line_result = regex_category.match(m)
if line_result:
category = line_result.group(1)
comment[category] = line_result.group(2)
else:
line_result = regex_line.match(m)
if line_result:
tmp = line_result.group(1)
tmp = tmp.replace("<","<")
tmp = tmp.replace(">",">")
if category != "":
if comment.has_key(category):
comment[category] = comment[category] + tmp
else:
comment[category] = tmp
# add the comment to our comments dict
comments[doc_name] = comment
# then we write all parsed comments to our file
# keeping all stuff in memory created weird result in the dictonaries
for key in comments:
outfile.write("<h1>" + key + "</h1>\n")
for subkey in comments[key]:
outfile.write("<div style=\"border: 1px dotted green\">\n")
outfile.write("<b><pre>" + subkey + "</pre></b>\n")
outfile.write("<pre>" + comments[key][subkey] + "</pre>\n")
outfile.write("</div><br>\n")
outfile.close()
|