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...