hi, this is the start for the puredocumentation wiki. for all who didn't follow the discussions during the pdconv, here is the latest: some people agreed on building a media wiki for all documentation beyond the pd help patches. some time ago there was the puredatabase, but that is quite dead now. so the idea is, to reanimate something similar, but with the possibility for everyone to commit to it. maybe not everyone but if 5-10% of users help contributing, then I think the project will be successful. one of the reasons why this should be done, is that very often pd users look for a certain feature or object, but don't know the name exactly and need a good search engine. so... the puredocumentation (in planning state) will cover externals and "stable" abstractions. (abstractions that are maintained kind of like externals) additionally to the "wiki for objects" there will be the section for the tutorials, manuals and faq, and hopefully you will be able to type in your search string after "How do I: " and get the right objects, examples and tutorials. My estimation is, that there are more than 3000 objects atm. so for the beginning the tricky part is to build all the basic object pages from the existing documentation (mainly help patches). here is, what I think should be the content of every object page: *objectname* the string name (for example "plus" for "+") of the object/external *opt other name* = abbreviation, +,.. *helpfilename* (can be different than object name), *description* = short description *libraryinfo* purepd,GEM,cyclone... + author + licence *arguments* *inlets/outlets* *examples* what this object is for... that's where you can be creative! *see also* / similar objects *tags* like audio/dsp, math, MIDI, something like a categorization. I want to use python to extract as much information as possible from the help-patches into one big textfile (csv style) from which we can create the wikipages. I hope to get the developers involved in correcting the cvs-textfile before the basic pages are created). this has to be done per library, and I am still trying to figure out, how to do this in detail. for example some help patches have some description in the top letmost corner. so a python script should be able to find that information and put it into the "description" field. there will be an irc session on sep 11 with all the people working on the project. so maybe if you want to join or have suggestions on how to get this done, feel free to respond. addtitional documentation work that probably will also be done: improving help patches by switching to a nice pddp format. creating online video tutorials, or recordings of workshops. one last point: If you know of a school/university or teaching center that would like to get involved (for example by putting pd classes on their schedule or paying people do some documentation work) that would also help the project to be successful... so far. thanks for reading through that all! marius.
# this file will look slightly different for every library # write everything into a database like format... (NOT YET!!!) # OBJECTNAME | OPT OTHER NAME | HELPFILE-NAME | DESCRIPTION | TAGS | LIBRARYINFO | ARGUMENTS | INLETS/OUTLETS | EXAMPLES | SEE ALSO # objectname is the string name (for example "plus" for "+") # opt other name = abbreviation, +, # helpfilename (can be different than object name), # description = short description # libraryinfo: purepd or GEM + author + licence # arguments # inlets/outlets # examples : what this object is for... # see also/similar objects # junk # # use X coordinate to sort comments???
import re import os
print 'searching all files for comments'
searchPattern = "#X text \d+ \d+ " # search for comments replacePattern = searchPattern # what can be deleted of the comments deleteNLPattern = r'\r' # delete cr fileExtension = ".*[.]pd$" # files to look for separator = "|" # separate colomns separator2 = "___" # separate junk fileTo = "test_to.txt"
p = re.compile(searchPattern)
rep = re.compile(replacePattern)
nldel = re.compile(deleteNLPattern)
fe = re.compile(fileExtension)
f2 = open(fileTo, "w")
for fileName in os.listdir("."): m = fe.search(fileName) if m: # only if is it a pd-file f = open(fileName, "r") first = 1 # suppose the first entry is the description for line in f: m = p.search(line) # search in line for pd-comment pattern if m: line = nldel.sub("",line) if first == 1: # help needed! how to sort other than by appearance? write to array? f2.write("\n" + fileName + separator) #need \n for every file but the first. newText = rep.sub("",line) # this should delete the trailing pattern f2.write(newText[:-1]) # this writes without closing nl f2.write(separator) first = 0 else: newText = rep.sub("",line) f2.write(newText[:-1]) f2.write(separator2) f.close() f2.close()
#done...