I want to make new TextFormattingRules
for my very own ServletBasedWiki
As far as my experience with WikiWikiWeb
go, I've seen two - the TextFormattingRules
here and ZopeApplicationServer
. There are many variations of the former out and about, and I know Zope is working on the next generation of StructuredText
Here are my thoughts on the goals:
- It must encourage WikiZen, or editing without thinking about the mechanics of text formatting. This in itself has sub-goals:
- It must be learned quickly and easily.
- Where possible, constructs must mimic what someone would do if they were trying to achieve an effect in plain text.
- It must be easy to type (non-shifted keys help here). -- RogerBrowne
- It must emphasize ContentOverForm.
- It must be non-ambiguous - I desperately want to avoid the SixSingleQuotes phenomenon.
- I'd like to avoid tabs. It's sad that browsers can't handle tabs in their textareas.
Technically, I would like to achieve all this in the space of a parser like AntlrTranslatorGenerator
I've identified the following items as needing to be addressed by my rules:
- Bulleted and numbered lists
- Code fragments
- Definition lists
- Delineating lines (i.e. horizontal lines)
- Block quotes
- Bold, italic, underline(?) [Underline should not be an inline level text format like e.g. bold. It is reserved for hyperlinks in a webby world. -- MaxScheugl Underlining is a convention, it is not reserved. Not allowing underlining would force you to either make a hyperlink for all book title's or not use proper grammar rules for formatting.]
- May I suggest overstrike/strikethrough in addition? There are those moments when you want the original word to remain, but indicate that it's been superseded. It's also handy for dramatic effect.
- Footnote links
- Inline code (typewriter font, plus ignoring any wiki markup)
Any other ideas?
- strike-thru, as an assist to editors/refactorers
- named targets for #links
- suggestion: use [#nameoflink<space> text of link] to link to [@nameoflink], being based on the [url text] model.
- of course, you'd might also want to be able to refer to SomePage#nameoflink...
Sometimes you really do need a table. There are several WikiClones
around (including Ward's own QuickiWiki
) that can do nice WikiTables
without resorting to HTML. -- RogerBrowne
I like them done with pipes such as:
So what if you really need to use a pipe within a table cell?
- | a1 | b1 | c1 |
- | a2 | b2 | c2 |
Some sort of escape mechanism (e.g. '||' in a table cell is output as '|').
It must be non-ambiguous - I desperately want to avoid the SixSingleQuotes phenomenon.
for a possible alternative. Not claiming it's Great; just an idea. (Kindof a kludge that seemed acceptable.) -- BillKelly
uses double-pipes, and I used that notation for MoinMoin
. Another precondition I used is that a line with table markup has to start and end with a table cell marker (||). Pretty non-ambiguous. -- JuergenHermann
Until you want to put some C code into a table cell, for example...
How about an XmlBasedWiki
? (Just kidding.) -- AnonymousDonor Sure, if you can give me a client-side XML editor flowing with WikiZen.
Write a parser module for MoinMoin
that takes XML input. :) -- JuergenHermann
Have you considered TextileFormat
)? I use it for my weblogs and it seems to handle basic formatting quite well, is reasonably intuitive (especially for old USENET types), does tables and free links. The only missing functionality is definition lists, which I notice the lack of as well. There's a newer version in the works with things like footnotes and more powerful paragraph and table formatting.
InstikiWiki (www.instiki.org) is a WikiClone that uses Textile (by default - alternatives are Markdown and RDoc) for its markup language. While not without its flaws, I far prefer it to any other Wiki markup so far. Instiki is so powerful and easy to run locally to boot, so it's a good all-round package.
Bullets and numbered list to essentially work as-is but ignore leading spaces (yes, this would mean giving up sub-lists).
solves this without giving up sublists: <space>*<space> begins a bulleted list. Additional spaces before the asterisk make sublevels. This is darn intuitive, I think.
I prefer using the * without a preceding space for the first level and ** for the second level, etc.