1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-12-28 02:50:27 +00:00

Lots of documentation updates

More to come...
This commit is contained in:
Jeremy Ruston 2012-06-10 13:40:53 +01:00
parent 4e0528e3dd
commit f838d6e3c1
16 changed files with 232 additions and 116 deletions

View File

@ -24,15 +24,5 @@ renderer.rerender(node,changes,tiddler,store,renderStep);</pre><p>The parameters
|renderStep |See below |</p><p>Currently, the only macro that supports rerendering is the <code>&lt;&lt;story&gt;&gt;</code> macro; all other macros are rerendered by calling the ordinary <code>render()</code> method again. The reason that the <code>&lt;&lt;story&gt;&gt;</code> macro goes to the trouble of having a <code>rerender()</code> method is so that it can be carefully selective about not disturbing tiddlers in the DOM that aren't affected by the change. If there were, for instance, a video playing in one of the open tiddlers it would be reset to the beginning if the tiddler were rerendered.
</p></div><h1>Plugin Mechanism</h1><div class='tw-tiddler-frame' data-tiddler-target='PluginMechanism' data-tiddler-template='PluginMechanism'><h1>Introduction</h1><p><a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='TiddlyWiki5'>TiddlyWiki5</a> is based on a 500 line boot kernel that runs on node.js or in the browser, and everything else is plugins.</p><p>The kernel boots just enough of the <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-resolves' href='TiddlyWiki'>TiddlyWiki</a> environment to allow it to load tiddlers as plugins and execute them (a barebones tiddler class, a barebones wiki store class, some utilities etc.). Plugin modules are written like <code>node.js</code> modules; you can use <code>require()</code> to invoke sub components and to control load order.</p><p>There are several different types of plugins: parsers, serializers, deserializers, macros etc. It goes much further than you might expect. For example, individual tiddler fields are plugins, too: there's a plugin that knows how to handle the <code>tags</code> field, and another that knows how to handle the special behaviour of
the <code>modified</code> and <code>created</code> fields.</p><p>Some plugins have further sub-plugins: the wikitext parser, for instance, accepts rules as individual plugins.</p><h1>Plugins and Modules</h1><p>In <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='TiddlyWiki5'>TiddlyWiki5</a>, a plugin is a bundle of related tiddlers that are distributed together as a single unit. Plugins can include tiddlers which are <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='JavaScript'>JavaScript</a> modules. </p><p>The file <code>core/boot.js</code> is a barebones <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-resolves' href='TiddlyWiki'>TiddlyWiki</a> kernel that is just sufficient to load the core plugin modules and trigger a startup plugin module to load up the rest of the application.</p><p>The kernel includes:</p><ul><li> Eight short shared utility functions</li><li> Three methods implementing the plugin module mechanism</li><li> The <code>$tw.Tiddler</code> class (and three field definition plugins)</li><li> The <code>$tw.Wiki</code> class (and three tiddler deserialization methods)</li><li> Code for the browser to load tiddlers from the HTML DOM</li><li> Code for the server to load tiddlers from the file system</li></ul><p>Each module is an ordinary <code>node.js</code>-style module, using the <code>require()</code> function to access other modules and the <code>exports</code> global to return <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='JavaScript'>JavaScript</a> values. The boot kernel smooths over the differences between <code>node.js</code> and the browser, allowing the same plugin modules to execute in both environments.</p><p>In the browser, <code>core/boot.js</code> is packed into a template HTML file that contains the following elements in order:</p><ul><li> Ordinary and shadow tiddlers, packed as HTML <code>&lt;DIV&gt;</code> elements</li><li> <code>core/bootprefix.js</code>, containing a few lines to set up the plugin environment</li><li> Plugin <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='JavaScript'>JavaScript</a> modules, packed as HTML <code>&lt;SCRIPT&gt;</code> blocks</li><li> <code>core/boot.js</code>, containing the boot kernel</li></ul><p>On the server, <code>core/boot.js</code> is executed directly. It uses the <code>node.js</code> local file API to load plugins directly from the file system in the <code>core/modules</code> directory. The code loading is performed synchronously for brevity (and because the system is in any case inherently blocked until plugins are loaded).</p><p>The boot kernel sets up the <code>$tw</code> global variable that is used to store all the state data of the system.</p><h1>Core </h1><p>The 'core' is the boot kernel plus the set of plugin modules that it loads. It contains plugins of the following types:</p><ul><li> <code>tiddlerfield</code> - defines the characteristics of tiddler fields of a particular name</li><li> <code>tiddlerdeserializer</code> - methods to extract tiddlers from text representations or the DOM</li><li> <code>startup</code> - functions to be called by the kernel after booting</li><li> <code>global</code> - members of the <code>$tw</code> global</li><li> <code>config</code> - values to be merged over the <code>$tw.config</code> global</li><li> <code>utils</code> - general purpose utility functions residing in <code>$tw.utils</code></li><li> <code>tiddlermethod</code> - additional methods for the <code>$tw.Tiddler</code> class</li><li> <code>wikimethod</code> - additional methods for the <code>$tw.Wiki</code> class</li><li> <code>treeutils</code> - static utility methods for parser tree nodes </li><li> <code>treenode</code> - classes of parser tree nodes</li><li> <code>macro</code> - macro definitions</li><li> <code>editor</code> - interactive editors for different types of content</li><li> <code>parser</code> - parsers for different types of content</li><li> <code>wikitextrule</code> - individual rules for the wikitext parser</li><li> <code>command</code> - individual commands for the <code>$tw.Commander</code> class</li></ul><p><a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='TiddlyWiki5'>TiddlyWiki5</a> makes extensive use of <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='JavaScript'>JavaScript</a> inheritance:</p><ul><li> Tree nodes defined in <code>$:/core/treenodes/</code> all inherit from <code>$:/core/treenodes/node.js</code></li><li> Macros defined in <code>$:/core/macros/</code> all inherit from <code>$:/core/treenodes/macro.js</code></li></ul><p><code>tiddlywiki.plugin</code> files
</p></div><h1>Planned <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='WikiText'>WikiText</a> Features</h1><div class='tw-tiddler-frame' data-tiddler-target='NewWikiTextFeatures' data-tiddler-template='NewWikiTextFeatures'><p>It is proposed to extend the existing <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-resolves' href='TiddlyWiki'>TiddlyWiki</a> <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='WikiText'>WikiText</a> syntax with the following extensions</p><ol><li> Addition of <code>**bold**</code> character formatting</li><li> Addition of <code>`backtick for code`</code> character formatting</li><li> Addition of <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='WikiCreole-style'>WikiCreole-style</a> forced line break, e.g. <code>force\\linebreak</code></li><li> Addition of <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='WikiCreole-style'>WikiCreole-style</a> headings, e.g. <code>==Heading</code></li><li> Addition of <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='WikiCreole-style'>WikiCreole-style</a> headings in tables, e.g. <code>|=|=table|=header|</code></li><li> Addition of white-listed HTML and SVG tags intermixed with wikitext</li><li> Addition of <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='WikiCreole-style'>WikiCreole-style</a> pretty links, e.g. <code>[[description -&gt; link]]</code></li><li> Addition of multiline macros, e.g.</li></ol><pre>&lt;&lt;myMacro
param1: Parameter value
param2: value
&quot;unnamed parameter&quot;
param4: ((
A multiline parameter that can go on for as long as it likes
and contain linebreaks.
))
&gt;&gt;</pre><ol><li> Addition of typed text blocks, e.g.</li></ol><pre> $$$.js
return &quot;This will have syntax highlighting applied&quot;
$$$</pre></div><p><em>This <code>readme</code> file was automatically generated by <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='TiddlyWiki5'>TiddlyWiki5</a></em>
</p></div><h1>Planned <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-resolves' href='WikiText'>WikiText</a> Features</h1><div class='tw-tiddler-frame tw-tiddler-missing' data-tiddler-target='NewWikiTextFeatures' data-tiddler-template='NewWikiTextFeatures'></div><p><em>This <code>readme</code> file was automatically generated by <a class='tw-tiddlylink tw-tiddlylink-internal tw-tiddlylink-missing' href='TiddlyWiki5'>TiddlyWiki5</a></em>
</p>

142
tw5.com/tiddlers/Docs.tid Normal file
View File

@ -0,0 +1,142 @@
title: Docs
tags: docs
! Guides
* [[Getting started with TiddlyWiki in the browser]]
* [[Getting started with TiddlyWiki under node.js]]
* [[Getting involved in TiddlyWiki development]]
! Concepts
* [[Tiddler]]
* [[Wiki]]
* TiddlyWiki
* WikiText
* [[Filters]]
* TiddlerFields
* ShadowTiddlers
* TiddlerModules
! Wiki Text Rules
* ClassBlockWikiText
* CodeBlockWikiText
* CodeRunWikiText
* DashWikiText
* EmphasisWikiText
* EntityWikiText
* ExternalLinkWikiText
* HeadingWikiText
* HtmlWikiText
* ImageWikiText
* ListWikiText
* MacroWikiText
* PrettyLinkWikiText
* RuleWikiText
* TypedBlockWikiText
* WikiLinkWikiText
! Macros
* ViewMacro
* EditMacro
* StoryMacro
* TiddlerMacro
* ButtonMacro
* CommentMacro
* DownloadMacro
* EchoMacro
* ImageMacro
* IncludeMacro
* LinkMacro
* ListMacro
* VideoMacro
* SliderMacro
* ZoomerMacro
* ChooserMacro
! Commands
* DumpCommand
* LoadCommand
* SaveTiddlerCommand
* ServerCommand
* VerboseCommand
* VersionCommand
* WikiTestCommand
! Internal Mechanisms
* BootMechanism
* PluginMechanism
* ParsingMechanism
* RenderingMechanism
* DependencyMechanism
* RefreshMechanism
* MacroMechanism
* StoryMechanism
* EditingMechanism
* SavingMechanism
* SyncMechanism
* CommandMechanism
* ConfigMechanism
! Data Model
* TiddlerObject
* WikiObject
! Plugin Module Types
* CommandPlugins
* ConfigPlugins
* EditorPlugins
* GlobalPlugins
* LibraryPlugins
* MacroPlugins
* ModulePlugins
* ParserPlugins
* StartupPlugins
* StoryViewPlugins
* TiddlerDeserializerPlugins
* TiddlerFieldPlugins
* TiddlerMethodPlugins
* TiddlerSerializerPlugins
* TreeNodePlugins
* TreeUtilsPlugins
* UtilsPlugins
* WikiMethodPlugins
* WikiTextRulePlugins
! Tree Nodes
* TreeNode
* ElementNode
* EntityNode
* MacroNode
* RawNode
* TextNode
! Other Parsers
* OldWikiTextParser
* JsonParser
* ImageParser
* PlainTextParser
* TiddlyTextParser
* JavaScriptParser
! Deserializers
* RecipeFiles
* TiddlerFiles
! Serializers
* TiddlyWikiFiles
! Miscellaneous
* [[Acknowledgements]]

View File

@ -0,0 +1,26 @@
title: ImageMacro
tags: docs macro
The ImageMacro displays an image with an optional tooltip.
! Parameters
! Examples
{{{
<<tiddler [[Motovun Jack.jpg]]>>
}}}
Appears as:
<<tiddler [[Motovun Jack.jpg]]>>
{{{
<<image [[Motovun Jack.jpg]] text:"A kitten">>
}}}
Appears as:
<<image [[Motovun Jack.jpg]] text:"A kitten">>
(Hover over the image to see the tooltip).

View File

@ -1,60 +0,0 @@
title: ImageTests
tags: demo
This tiddler demonstrates different ways of displaying images
{{{
<<tiddler [[Motovun Jack.jpg]]>>
}}}
Appears as:
<<tiddler [[Motovun Jack.jpg]]>>
{{{
<<image [[Motovun Jack.jpg]] text:"A kitten">>
}}}
Appears as:
<<image [[Motovun Jack.jpg]] text:"A kitten">>
{{{
[img[Motovun Jack.jpg]]
}}}
Appears as:
[img[Motovun Jack.jpg]]
{{{
[img[tooltip|Motovun Jack.jpg]]
}}}
Appears as:
[img[tooltip|Motovun Jack.jpg]]
{{{
[img[tooltip|Motovun Jack.jpg][http://google.com/]]
}}}
Appears as:
[img[tooltip|Motovun Jack.jpg][http://google.com/]]
{{{
<<tiddler [[Tiddler Fishes.svg]]>>
}}}
Appears as:
<<tiddler [[Tiddler Fishes.svg]]>>
{{{
[img[Tiddler Fishes.svg]]
}}}
Appears as:
[img[Tiddler Fishes.svg]]

View File

@ -0,0 +1,45 @@
title: ImageWikiText
tags: docs wikitextrule
The WikiText markup for images provides a shortcut for the ImageMacro, with an optional link and tooltip:
{{{
[img[<tiddlertitle>]]
[img[<url>]]
[img[<tooltip>|<tiddlertitle>]]
[img[<tooltip>|<tiddlertitle>][<link>]]
}}}
! Examples
Simple usage:
{{{
[img[Motovun Jack.jpg]]
[img[Tiddler Fishes.svg]]
}}}
Appears as:
[img[Motovun Jack.jpg]]
[img[Tiddler Fishes.svg]]
With a tooltip:
{{{
[img[tooltip|Motovun Jack.jpg]]
}}}
Appears as:
[img[tooltip|Motovun Jack.jpg]]
With a tooltip and a link:
{{{
[img[tooltip|Motovun Jack.jpg][http://google.com/]]
}}}
Appears as:
[img[tooltip|Motovun Jack.jpg][http://google.com/]]

View File

@ -8,12 +8,12 @@ You can modify this wiki, and then download a copy by clicking this button:
You can download a static copy of the tiddlers that are currently displayed in this wiki by clicking this button: <<download title:"$:/core/static.template.html" filename:"Story.html" label:"Static Wiki">>
{{alert alert-error{
<div class="alert alert-error">
Try out the prototype touch features:
* The zooming chooser appears by swiping into the left edge of the screen (or hover the mouse over the extreme left edge of the browser window)
* The zooming navigator appears by swiping in from the right edge of the screen (not accessible by mouse)
}}}
</div>
Learning more about TiddlyWiki5:
@ -24,9 +24,8 @@ Some useful tiddlers for feature testing:
* HelloThere
* TestingNewWikiText shows off the embryonic new wiki text engine
* ImageTests showing different ways of embedding images
* SampleData showing how JSON tiddlers are handled
* SampleJavaScript and SampleJavaScriptWithError showing how JavaScript code is displayed
* SampleJsonTiddler showing how JSON tiddlers are handled
* SampleJavaScriptTiddler and SampleJavaScriptTiddlerWithError showing how JavaScript code is displayed
* VideoTests showing how different online video formats can be embedded
* SliderTests showing how sliders work
* TypedBlockTests showing how embedded typed text blocks work

View File

@ -1,4 +1,3 @@
title: JackSlider
modifier: JackBeNimble
closed

View File

@ -1,31 +0,0 @@
title: NewWikiTextFeatures
modifier: JeremyRuston
tags: feature
It is proposed to extend the existing TiddlyWiki WikiText syntax with the following extensions
# Addition of {{{**bold**}}} character formatting
# Addition of {{{`backtick for code`}}} character formatting
# Addition of WikiCreole-style forced line break, e.g. {{{force\\linebreak}}}
# Addition of WikiCreole-style headings, e.g. {{{==Heading}}}
# Addition of WikiCreole-style headings in tables, e.g. {{{|=|=table|=header|}}}
# Addition of white-listed HTML and SVG tags intermixed with wikitext
# Addition of WikiCreole-style pretty links, e.g. {{{[[description -> link]]}}}
# Addition of multiline macros, e.g.
{{{
<<myMacro
param1: Parameter value
param2: value
"unnamed parameter"
param4: ((
A multiline parameter that can go on for as long as it likes
and contain linebreaks.
))
>>
}}}
# Addition of typed text blocks, e.g.
{{{
$$$.js
return "This will have syntax highlighting applied"
$$$
}}}

View File

@ -1,5 +1,5 @@
title: PluginMechanism
tags: internals
tags: docs mechanism
!Introduction

View File

@ -1,4 +1,4 @@
title: SampleJavaScript
title: SampleJavaScriptTiddler
type: application/javascript
tags: demo

View File

@ -1,4 +1,4 @@
title: SampleJavaScriptWithError
title: SampleJavaScriptTiddlerWithError
type: application/javascript
tags: demo

View File

@ -1,4 +1,4 @@
title: SampleData
title: SampleJsonTiddler
type: application/json
tags: demo

View File

@ -1,3 +1,4 @@
title: ShadowTiddlers
tags: docs concepts
<<list shadowed>>

View File

@ -1,5 +1,5 @@
title: SliderTests
tags: demo
title: SliderMacro
tags: docs macro
The status of this slider is stored in the tiddler JackSlider:

View File

@ -1,5 +1,10 @@
title: TestingNewWikiText
title: WikiText
type: text/x-tiddlywiki
tags: concepts
WikiText is a concise, expressive way of typing a wide range of text formatting and hypertext features. Operations like linking become part of the punctuation of your writing.
The key feature of wikitext is the ability to include one tiddler within another (usually referred to as //transclusion//). For example, one could have a tiddler called //Disclaimer// that contains the boilerplate of a legal disclaimer, and then include it within lots of different tiddlers with the macro call `<<tiddler Disclaimer>>`.
! This is a heading

View File

@ -5,6 +5,6 @@ type: application/json
"tiddlers": [
{"title": "HelloThere", "template": "$:/templates/ViewTemplate"},
{"title": "Introduction", "template": "$:/templates/ViewTemplate"},
{"title": "NewWikiTextFeatures", "template": "$:/templates/ViewTemplate"}
{"title": "Docs", "template": "$:/templates/ViewTemplate"}
]
}