Skip to content

Commit

Permalink
This repo is now out-dated since it has been moved to SuperCollider g…
Browse files Browse the repository at this point in the history
…it repo!
  • Loading branch information
lijon committed Mar 17, 2011
1 parent 5874824 commit 9932d31
Showing 1 changed file with 2 additions and 148 deletions.
150 changes: 2 additions & 148 deletions README
Original file line number Diff line number Diff line change
@@ -1,150 +1,4 @@
SuperCollider documentation system
==================================
SCDoc is now part of the SuperCollider git repo.

INSTALLATION
------------
All SCDoc classes are in the subfolder "SCDoc",
copy or symlink this folder to your SuperCollider Extensions folder.

USAGE
-----
To render and generate all docs:

SCDoc.helpSourceDir = "/path/to/HelpSource";
SCDoc.updateAll;

This may take a couple of minutes the first time.

If you want to run it without the GUI progress window:

SCDoc.updateAll(gui:false);

After this, all rendered HTML help will be in SCDoc.helpTargetDir,
which defaults to "~/share/SuperCollider/Help" on Linux
and "~/Application Support/SuperCollider/Help" on OSX.

This folder is automagically created for you.

See these generated helpfiles for more info about ScDoc:

- Help/Reference/SCDocSyntax.html
- Help/Guides/WritingHelp.html
- Help/Classes/SCDoc.html
- Help/Classes/SCDocParser.html
- Help/Classes/SCDocRenderer.html



TODO
----

integration with frontends / main sc distro
===========================================
* HelpSource should be installed in thisProcess.platform.systemAppSupportDir, or next to classLibraryDir on OSX ?
easier to always use (thisProcess.platform.classLibraryDir +/+ "../HelpSource").standardizePath for all platforms..

* ship pre-rendered help with the binary package (render after building supercollider)
just use the pre-rendered help until the users need to update help, which would first copy or hard-link the pre-rendered
files into helpTargetDir and then run SCDoc.updateAll. let SCDoc.helpClientDir return helpTargetDir if existent, else the system-wide location ((thisProcess.platform.classLibraryDir +/+ "../Help").standardizePath);

* the class-source links for classes in classLibraryDir won't work on OSX since the SuperCollider folder can be put anywhere..
fix: keep a softlink in helpTargetDir/SCClassLibrary pointing to the correct location. The pre-rendered docs would sit in the same folder as the app, so we would then have SCClassLibrary -> ../SCClassLibrary and it would work wherever the user puts the SuperCollider folder. When the user makes a change that triggers an update of the docs, SCDoc would copy/hardlink the pre-rendered docs into user-location and rewrite this link to point to the current value of thisProcess.platform.classLibraryDir.

* fix (adjust for SCDoc) or deprecate all old help classes and methods

-------------------------------------------

- redirect classes doesn't show up in methods search, of course.. it would be nice if they did!
let the class renderer add [(Meta_)thisClassName, methodName] to a special list that we append in SCDoc.collectAllMethods.
Also we need to archive this to file somehow, and handle deletion/additions etc.. not a simple task :/
Or, just maintain a dictionary of redirected classes -> redirecting class?
in method search and index: if class is in this dict, replace with (or add) redirecting class.
Or/and, let redirected classes have a link to the redirecting class?

Also, if a class has implemented *doesNotUnderstand then maybe we should ignore if method was not found in renderer?
for stuff like Scale..

- make a SCDoc.makeClassTemplate(class,outputfile) that fills in the title, categories if existing, method and argument names, etc..

- this doesn't work as it should:

modalrangetag:: blah blah blah
blah blah blah blah blah
blah blah ::

- this doesn't work as it should:

hello

soft::there::

- tags after each other doesn't work, like returns::link::hello::
perhaps hard to fix without taking into account if the tag needs closing or not?
for example, what does this mean: code::foo::link::bar::

- using \::. doesn't work, needs a space: \:: .
also sometimes non-letters after :: doesn't work correctly, like "(link::hello::)"

- we need to distinguish between class and instance method anchors since some classes have both named the same,
something like #cmethod:name and #imethod:name perhaps? or #*classmethodname and #instancemethodname ?

- in methods overview, print '*' before classes implementing the method as classmethod?

- check for system-wide pre-rendered docs in ScDoc.findClassOrMethod and similar functions..
also make a ScDoc.findHelp(subdir,name,anchor) which would return the path to the helpfile. examples:
ScDoc.findHelp("Classes","SinOsc")
ScDoc.findHelp("Overviews","Methods","play")
ScDoc.findHelp("","Search","^asString$"), etc...

- instead of showing "(extension)" only for classes, do it for any document that was located in an extension directory.
pass a flag to recurseHelpSource call in findExtHelp, and let updateFile return the doc map entry so we can set installed=\extension,
or pass the flag to updateFile and then to addToDocMap?
also add a check and warning for when a class file location and doc location is not the same in regards of extension or not?

- currently all auto-generated docs are not included in the docMap, we could add these manually to HelpSystem,
or put them (and Help.html) in a tag named Help?
add them to docmap *before* we generate the overviews that are using categories.

- description for categories? HelpSource/category_descriptions, example:
Server>Abstractions: Client-side classes representing server-side stuff
show in header and category browser/overview..
extensions should be able to add such descriptions too, but not overwrite existing descriptions?

- handle formula:: tag. generate a hash hexstring for use as filename, HelpSource/formulas/xxxxxxxx.png
The renderer would render formula:: by displaying that image if it exists, if not and if LaTeX is installed, convert formula to image first. if LaTeX not installed and image don't exist, show the latex code. (use img alt text?)

- comments (* like this? *)

- can setters have more than one arg? if so, we should fix rendering of setters.

- cross-platform: check all uses of systemCmd. move to Platform class?

- add argument:: for all args on methods even if the author didn't document it? at least check that argument names and order are correct.

- shortcuts for links to class:method? methodlink::Node#set:: renders as Node:set

- better error handling in parser on bogus input, etc..

- render binary op methods differently? like ArrayedCollections ++
we don't want it to display as "++ (aCollection)" do we? rather "++ aCollection" or "this ++ that" or something..
binary ops only uses chars from this list: !@%&*-+=|<>?/

- Handle methods added by extensions
Documenting added methods could be done in files named +ClassName.schelp
before we render each class, we need to find all +ClassName.schelp files and merge their parsed node tree with the current class.
We should probably find these files first and keep their full paths in a dictionary with classname as key.
note that they should *add* to classmethods and instancemethods instead of creating new sections for these..

- validation pass:

* Some tags should only be allowed once. like class, title, related, categories, summary, description, examples..
Also, they should only occur in the root node.

* private:: should come before any other method

* force class reference filename to be equal to class name

* check method argument names (and order?). it's ok to skip arguments though..

* make sure ## and || only happens inside lists/tables
This repository is out-dated and will not be updated!

0 comments on commit 9932d31

Please sign in to comment.