Merge branch 'tiddlywiki-com'

This commit is contained in:
Jeremy Ruston 2024-03-16 22:05:51 +00:00
commit 62a5fc075b
10 changed files with 209 additions and 71 deletions

View File

@ -1,9 +1,13 @@
created: 20150221105732000 created: 20150221105732000
modified: 20150221222352000 modified: 20150221222352000
tags: [[Macro Syntax]] tags: [[Macro Syntax]] $:/deprecated
title: Macro Call Syntax title: Macro Call Syntax
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<<.deprecated-since "5.3.0" "Procedure Call Syntax">>
----------
<<.preamble """What follows is a formal presentation of the syntax of the WikiText syntax for macro calls, using [[railroad diagrams|Railroad Diagrams]]. A [[simpler overview|Macro Calls in WikiText]] is also available.""">> <<.preamble """What follows is a formal presentation of the syntax of the WikiText syntax for macro calls, using [[railroad diagrams|Railroad Diagrams]]. A [[simpler overview|Macro Calls in WikiText]] is also available.""">>
<$railroad text=""" <$railroad text="""

View File

@ -1,9 +1,13 @@
created: 20150220200255000 created: 20150220200255000
modified: 20150221222349000 modified: 20150221222349000
tags: [[Macro Syntax]] tags: [[Macro Syntax]] $:/deprecated
title: Macro Definition Syntax title: Macro Definition Syntax
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<<.deprecated-since "5.3.0" "Procedure Definition Syntax">>
----------
<<.preamble """What follows is a formal presentation of the syntax of the `\define` pragma, using [[railroad diagrams|Railroad Diagrams]]. A [[simpler overview|Macro Definitions in WikiText]] is also available.""">> <<.preamble """What follows is a formal presentation of the syntax of the `\define` pragma, using [[railroad diagrams|Railroad Diagrams]]. A [[simpler overview|Macro Definitions in WikiText]] is also available.""">>
<$railroad text=""" <$railroad text="""

View File

@ -0,0 +1,33 @@
created: 20240310165023000
modified: 20240310172648116
tags: [[Procedure Syntax]]
title: Procedure Call Syntax
type: text/vnd.tiddlywiki
<<.preamble """What follows is a formal presentation of the syntax of the WikiText syntax for procedure calls, using [[railroad diagrams|Railroad Diagrams]].""">>
!! procedure-name
<$railroad text="""
"<<" [[ procedure-name |Procedures]] [: [[whitespace|"Filter Whitespace"]] [:{param-value}] ]">>"
"""/>
* The [[procedure's|Procedures]] <<.place procedure-name>> is a sequence of non-whitespace characters other than `(` or `>`.
* <<.place whitespace>> denotes a sequence of [[whitespace characters|Filter Whitespace]].
!!! param-value
Each ''individual'' <<.place param-value>> has the following syntax:
<$railroad text="""
\start none
\end none
[: param-name [:[[whitespace|"Filter Whitespace"]]] ":" [:[[whitespace|"Filter Whitespace"]]] ] value [: [[whitespace|"Filter Whitespace"]] ]
"""/>
* The <<.place param-name>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits (`0`--`9`), hyphens (`-`) and underscores (`_`).
* The <<.place value>> is specified as follows:
<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/>

View File

@ -0,0 +1,93 @@
created: 20240310165023000
modified: 20240310175033730
tags: [[Procedure Syntax]]
title: Procedure Definition Syntax
type: text/vnd.tiddlywiki
<<.preamble """What follows is a formal presentation of the syntax of the [[Pragma: \procedure]], using [[railroad diagrams|Railroad Diagrams]]. """>>
! \procedure
There are 2 types of procedure definitions
* Single line definitions
* Multi line definitions
!! Single Line
Single line definitions should only be used for very short bodies, where the procedure name, params and the body fit into 1 line terminated with a line-feed.
<$railroad text="""
"\procedure"
[[<"space">|"Filter Whitespace"]]
"procedure-name"
<"(params)">
[:[[<"space">|"Filter Whitespace"]]]
"body"
"lf"
"""/>
!! Multi Line
The majority of procedure definitions will have a body, that spans over several lines of wikitext. Those procedure definitions are terminated using the "\end" pragma
<$railroad text="""
"\procedure"
[[<"space">|"Filter Whitespace"]]
"procedure-name"
<"(params)">
[:[[<"space">|"Filter Whitespace"]]]
body
"\end"
"""/>
The [[procedure-name|Procedures]] is a sequence of non-whitespace characters other than `(` or `>`.
* <<.place procedure-name>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits (`0`--`9`), hyphens (`-`) and underscores (`_`)
* <<.place body>> is wikitext including [[nested procedures|Pragma: \procedure]]
* <<.place space>> denotes a sequence of [[whitespace characters|Filter Whitespace]]
!! params
The parameter declaration list <<.place (params)>> has the following syntax:
<$railroad text="""
\start none
\end none
"(" [:"sep"] [:{ parameter "sep" }] ")"
"""/>
* <<.place sep>> is any sequence of characters that does not match a <<.place param-name>>. <br>Among other things, this includes commas, spaces and linefeeds.
Each ''individual'' <<.place parameter>> has the following syntax:
<$railroad text="""
\start none
\end none
"param-name" [: [:[[<"space">|"Filter Whitespace"]]] ":" [:[[<"space">|"Filter Whitespace"]]] default ]
"""/>
* <<.place param-name>> is a sequence of letters (`A`--`Z`, `a`--`z`), digits (`0`--`9`), hyphens (`-`) and underscores (`_`).
* <<.place default>> is an optional value of a parameter is specified as follows:
<$railroad text={{$:/editions/tw5.com/railroad/macro-parameter-value}}/>
!! body
The <<.place body>> of the definition has the following syntax:
<$railroad text="""
\start none
\end none
{[[<"wikitext">|WikiText]] "lf"}
"""/>
* <<.place wikitext>> is any sequence of characters that doesn't terminate the macro definition.
** If [[nested procedures|Pragma: \procedure]] are used they need to be at the start of the wikitext. There are the same rules as if the wikitext would be in a tiddler.
** Pragmas need to be before standard wikitext.
* <<.place lf>> denotes a linefeed.

View File

@ -0,0 +1,11 @@
created: 20240310165023000
modified: 20240310173318213
tags: Procedures
title: Procedure Syntax
type: text/vnd.tiddlywiki
Plain text description can be found at [[Procedures]]
<<list-links filter:"[tag[Procedure Syntax]]">>
<<.tip "The railroad boxes in the linked tiddlers can be used to navigate.">>

View File

@ -1,5 +1,5 @@
created: 20221007124007426 created: 20221007124007426
modified: 20230419103154329 modified: 20240310173130052
tags: Concepts Reference tags: Concepts Reference
title: Procedures title: Procedures
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@ -18,11 +18,13 @@ The name wrapped in double angled [[brackets|Brackets]] is used a shorthand way
``` ```
<<my-procedure>> <<my-procedure>>
<<my-procedure "The parameter">> <<my-procedure parameter:"The parameter">>
``` ```
The parameters that are specified in the procedure call are made available as variables. The parameters that are specified in the procedure call are made available as variables.
<<.tip """If a procedure has more than 1 parameter, it is highly encouraged to use "named parameters", as shown in the second example above. Even if it is more to type, it will pay off in the long run.""">>
!! How Procedures Work !! How Procedures Work
Procedures are implemented as a special kind of [[variable|Variables]]. The only thing that distinguishes them from ordinary variables is the way that the parameters are handled. Procedures are implemented as a special kind of [[variable|Variables]]. The only thing that distinguishes them from ordinary variables is the way that the parameters are handled.
@ -32,4 +34,4 @@ Procedures are implemented as a special kind of [[variable|Variables]]. The only
* [[Procedure Definitions]] describes how to create procedures * [[Procedure Definitions]] describes how to create procedures
* [[Procedure Calls]] describes how to use procedures * [[Procedure Calls]] describes how to use procedures
* [[Procedure Parameter Handling]] describes how procedure parameters work * [[Procedure Parameter Handling]] describes how procedure parameters work
* [[Procedure Syntax]] is a formal syntax description using railroad diagrams

View File

@ -7,6 +7,6 @@ Deprecated features of TiddlyWiki are those that have been superseded by newer,
Deprecated features will still work, but are not recommended for new content. Deprecated features will still work, but are not recommended for new content.
Tiddlers tagged $:/deprecated: ''Tiddlers tagged'' $:/deprecated:
<<list-links filter:"[tag[$:/deprecated]]">> <<list-links filter:"[tag[$:/deprecated]]">>

View File

@ -7,6 +7,3 @@ type: text/vnd.tiddlywiki
Deprecated features are marked with a special warning button. See: [[How to apply custom styles by tag]] for an example. Deprecated features are marked with a special warning button. See: [[How to apply custom styles by tag]] for an example.
''Tiddlers tagged `$:/deprecated`''
><<list-links "[tag[$:/deprecated]]">>

View File

@ -1,104 +1,96 @@
code-body: yes code-body: yes
created: 20150117184156000 created: 20150117184156000
modified: 20220617122915793 modified: 20240315144208842
tags: $:/tags/Macro tags: $:/tags/Macro
title: $:/editions/tw5.com/wikitext-macros title: $:/editions/tw5.com/wikitext-macros
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
\define activatePluginTab() \whitespace trim
\procedure activatePluginTab()
<$action-setfield $tiddler="$:/state/tab-1749438307" text="$:/core/ui/ControlPanel/Plugins"/> <$action-setfield $tiddler="$:/state/tab-1749438307" text="$:/core/ui/ControlPanel/Plugins"/>
<$action-navigate $to="$:/ControlPanel"/> <$action-navigate $to="$:/ControlPanel"/>
\end \end
\define activateTiddlerWindow() \procedure activateTiddlerWindow()
<$action-sendmessage $message="tm-open-window" <$action-sendmessage $message="tm-open-window" $param=<<currentTiddler>> windowTitle="Side by Side View" width="800" height="600" />
$param=<<currentTiddler>> windowTitle="Side by Side View"
width="800" height="600" />
\end \end
\define controlPanel-plugin-link() \procedure controlPanel-plugin-link()
<$button actions=<<activatePluginTab>> class="tc-btn-invisible tc-tiddlylink"> <$button actions=<<activatePluginTab>> class="tc-btn-invisible tc-tiddlylink">
{{$:/core/images/options-button}} ~ControlPanel {{$:/core/images/options-button}} ~ControlPanel
</$button> </$button>
\end \end
\define open-tiddler-in-window() \procedure open-tiddler-in-window()
\whitespace notrim
<$button actions=<<activateTiddlerWindow>> class="tc-btn-invisible tc-tiddlylink"> <$button actions=<<activateTiddlerWindow>> class="tc-btn-invisible tc-tiddlylink">
open ''this'' tiddler in a new window open ''this'' tiddler in a new window
</$button> </$button>
\end \end
\define activateEditionWindow(url) \procedure activateEditionWindow(url)
<$action-sendmessage $message="tm-open-external-window" <$action-sendmessage $message="tm-open-external-window" $param=<<url>> windowName="_edition" windowFeatures="width=800 height=600" />
$param="""$url$""" windowName="_edition"
windowFeatures="width=800 height=600" />
\end \end
\define open-external-window(url) \procedure open-external-window(url)
<$button actions=<<activateEditionWindow """$url$""">> class="tc-btn-invisible tc-tiddlylink"> \whitespace notrim
open the ''example edition'' in a new window <$button actions=<<activateEditionWindow <<url>> class="tc-btn-invisible tc-tiddlylink">
open the ''example edition'' in a new window
</$button> </$button>
\end \end
\define wikitext-example(src) \procedure wikitext-example(src)
<div class="doc-example"> <div class="doc-example">
<$macrocall $name="copy-to-clipboard-above-right" src=<<src>>/>
<$macrocall $name="copy-to-clipboard-above-right" src=<<__src__>>/> <$codeblock code=<<src>>/>
<p>
<$codeblock code=<<__src__>>/> That renders as:
</p>
That renders as: <$transclude $variable="src" $mode="block"/>
<p>
<$macrocall $name="__src__"/> ... and the underlying HTML is:
</p>
... and the underlying HTML is: <$wikify name="html" text=<<src>> output="html">
<$codeblock code=<<html>>/>
<$wikify name="html" text=<<__src__>> output="html"> </$wikify>
<$codeblock code=<<html>>/>
</$wikify>
</div> </div>
\end \end
\define wikitext-example-without-html(src) \procedure wikitext-example-without-html(src)
<div class="doc-example"> <div class="doc-example">
<$macrocall $name="copy-to-clipboard-above-right" src=<<src>>/>
<$macrocall $name="copy-to-clipboard-above-right" src=<<__src__>>/> <$codeblock code=<<src>>/>
<p>
<$codeblock code=<<__src__>>/> That renders as:
</p>
That renders as: <$transclude $variable="src" $mode="block"/>
<$macrocall $name="__src__"/>
</div> </div>
\end \end
\define wikitext-example-table-header() <thead><tr><th/><th>wiki text</th><th>renders as</th></tr></thead> \procedure wikitext-example-table-header() <thead><tr><th/><th>wiki text</th><th>renders as</th></tr></thead>
\define wikitext-example-table-row(id, code) \procedure wikitext-example-table-row(id, code)
<tr> <tr>
<th><<__id__>></th><td><$codeblock code=<<__code__>>/></td><td> <th><<id>></th>
<td><$codeblock code=<<code>>/></td>
<<__code__>> <td><<code>></td>
</td>
</tr> </tr>
\end \end
\define tw-code(tiddler) \procedure tw-code(tiddler)
<$codeblock language={{$tiddler$!!type}} code={{$tiddler$}}/> <$codeblock language={{$tiddler$!!type}} code={{$tiddler$}}/>
\end \end
\define tw-code-link(tiddler) \procedure tw-code-link(tiddler)
[[$tiddler$]]: [[$tiddler$]]:
<<tw-code $tiddler$>> <<tw-code $tiddler$>>
\end \end
\define flex-card(class,bordercolor:"",backgroundcolor:"",textcolor:"",imageField:"image",captionField:"caption",subtitle:"",descriptionField:"description",linkField:"link") \procedure flex-card(class,bordercolor:"",backgroundcolor:"",textcolor:"",imageField:"image",captionField:"caption",subtitle:"",descriptionField:"description",linkField:"link")
\whitespace trim <$link class={{{ [<class>addprefix[tc-card ]] }}} to={{{ [<currentTiddler>get<linkField>else<currentTiddler>] }}}>
<$link class={{{ [<__class__>addprefix[tc-card ]] }}} to={{{ [<currentTiddler>get<__linkField__>else<currentTiddler>] }}}> <div class="tc-card-accent" style.borderTop={{{ [<bordercolor>!is[blank]addprefix[5px solid ]] }}} style.background={{!!background}} style.backgroundColor=<<backgroundcolor>> style.color=<<textcolor>> style.fill=<<textcolor>>>
<div class="tc-card-accent" style.borderTop={{{ [<__bordercolor__>!is[blank]addprefix[5px solid ]] }}} style.background={{!!background}} style.backgroundColor=<<__backgroundcolor__>> style.color=<<__textcolor__>> style.fill=<<__textcolor__>>>
<$list filter="[<currentTiddler>has[ribbon-text]]" variable="ignore"> <$list filter="[<currentTiddler>has[ribbon-text]]" variable="ignore">
<div class="tc-card-ribbon-wrapper"> <div class="tc-card-ribbon-wrapper">
<div class="tc-card-ribbon" style.backgroundColor={{{ [<currentTiddler>get[ribbon-color]else[red]] }}}> <div class="tc-card-ribbon" style.backgroundColor={{{ [<currentTiddler>get[ribbon-color]else[red]] }}}>
@ -108,21 +100,21 @@ That renders as:
</div> </div>
</div> </div>
</$list> </$list>
<$list filter="[<currentTiddler>has<__imageField__>]" variable="ignore"> <$list filter="[<currentTiddler>has<imageField>]" variable="ignore">
<div class="tc-card-image"> <div class="tc-card-image">
<$image source={{{ [<currentTiddler>get<__imageField__>] }}}/> <$image source={{{ [<currentTiddler>get<imageField>] }}}/>
</div> </div>
</$list> </$list>
<div class="tc-card-title"><$transclude field=<<__captionField__>>><$view field="title"/></$transclude></div> <div class="tc-card-title"><$transclude field=<<captionField>>><$view field="title"/></$transclude></div>
<$list filter="[<__subtitle__>!is[blank]]" variable="ignore"> <$list filter="[<subtitle>!is[blank]]" variable="ignore">
<div class="tc-card-subtitle"> <div class="tc-card-subtitle">
<$text text=<<__subtitle__>>/> <$text text=<<subtitle>>/>
</div> </div>
</$list> </$list>
<div class="tc-card-icon"><$transclude tiddler={{!!icon}}/></div> <div class="tc-card-icon"><$transclude tiddler={{!!icon}}/></div>
<div class="tc-card-body-wrapper"> <div class="tc-card-body-wrapper">
<div class="tc-card-body"> <div class="tc-card-body">
<$transclude field=<<__descriptionField__>> mode="block"/> <$transclude field=<<descriptionField>> mode="block"/>
</div> </div>
<div class="tc-card-body-clear"> <div class="tc-card-body-clear">
</div> </div>

View File

@ -561,3 +561,5 @@ Wang Ke, @Gk0Wk, 2023/10/17
John Long, @drevarr, 2023/12/12 John Long, @drevarr, 2023/12/12
Ed Holsinger, @eschlon, 2024/02/08 Ed Holsinger, @eschlon, 2024/02/08
Kim I. McKinley, @PotOfCoffee2Go, 2024/03/16