Addons updated to new doc format
[io.git] / tools / io / DocsExtractor.io
blob90083276fe0e21ab0090cbbed6852508de10dc46
2 File do(
3 docSlicesFor := method(name,
4 contents slicesBetween("//" .. name .. " ", "\n") map(strip) map(s,
5 i := s findSeq(" ") + 1
6 i1 := s findSeq("(", i)
7 i2 := s findSeq(" ", i)
8 if(i1 and i1 < i2, i2 := s findSeq(")", i))
9 if(i2, s atInsertSeq(i2 + 1, "\n"))
10 ) appendSeq(contents slicesBetween("/*" .. name .. " ", "*/"))
13 docSlices := method(
14 contents slicesBetween("//doc ", "\n") map(strip) map(s,
15 i := s findSeq(" ") + 1
16 i1 := s findSeq("(", i)
17 i2 := s findSeq(" ", i)
18 if(i1 and i1 < i2, i2 := s findSeq(")", i))
19 if(i2, s atInsertSeq(i2 + 1, "\n"))
20 ) appendSeq(contents slicesBetween("/*doc ", "*/"))
23 metadocSlices := method(
24 contents slicesBetween("/*metadoc ", "*/") appendSeq(contents slicesBetween("//metadoc ", "\n"))
28 DocsExtractor := Object clone do(
29 init := method(
30 self folder := Directory clone
31 self outFile := File clone
34 setPath := method(path,
35 folder setPath(path) createSubdirectory("docs")
36 outFile setPath(Path with(path, "docs/docs.txt"))
39 clean := method(
40 outFile remove
43 extract := method(
44 writeln("extracting io comment code from:")
45 outFile remove open
46 sourceFiles foreach(file,
47 writeln(" ", file name, " ")
48 file docSlices foreach(d,
50 header := d beforeSeq("\n") strip
51 protoName := header beforeSeq(" ")
52 slotName := header afterSeq(" ")
53 comment := d afterSeq("\n")
55 outFile write("doc ", d strip, "\n------\n")
58 file metadocSlices foreach(d,
59 outFile write("metadoc ", d strip, "\n------\n")
62 outFile close
65 sourceFiles := method(cFiles appendSeq(ioFiles))
66 //sourceFiles := method(ioFiles)
68 cFiles := method(
69 folder folderNamed("source") files select(file,
70 file name beginsWithSeq("Io") and(
71 file name containsSeq("Init") not) and(
72 file name pathExtension == "c")
76 ioFiles := method(folder folderNamed("io") filesWithExtension("io"))
79 de := DocsExtractor clone
80 de setPath(System args at(1))
81 if(System args at(3) == "clean", de clean, de extract)