mirror of
https://github.com/TiddlyWiki/TiddlyWiki5.git
synced 2026-05-01 03:46:56 +00:00
Conditional Shortcut Syntax (#7710)
* Initial Commit
* Update docs
* Add support for elseif blocks
* Another test
* WIP
* Change from `{%if%}` to `<%if%>`
See discussion here - https://talk.tiddlywiki.org/t/proposed-if-widget/7882/64
* Don't use the widget body as the template if a list-empty widget is present
See discussion here - https://github.com/Jermolene/TiddlyWiki5/pull/7710#issuecomment-1717193296
* List widget should search recursively for list-template and list-empty
* Allow block mode content within an if/then/else clause
* Update docs
* Add from-version tag to docs
This commit is contained in:
26
editions/test/tiddlers/tests/data/conditionals/Basic.tid
Normal file
26
editions/test/tiddlers/tests/data/conditionals/Basic.tid
Normal file
@@ -0,0 +1,26 @@
|
||||
title: Conditionals/Basic
|
||||
description: Basic conditional shortcut syntax
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Text
|
||||
|
||||
This is a <% if [<something>match[one]] %>Elephant<% endif %>, I think.
|
||||
+
|
||||
title: Output
|
||||
|
||||
<$let something="one">
|
||||
{{Text}}
|
||||
</$let>
|
||||
|
||||
<$let something="two">
|
||||
{{Text}}
|
||||
</$let>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>
|
||||
This is a Elephant, I think.
|
||||
</p><p>
|
||||
This is a , I think.
|
||||
</p>
|
||||
37
editions/test/tiddlers/tests/data/conditionals/BlockMode.tid
Normal file
37
editions/test/tiddlers/tests/data/conditionals/BlockMode.tid
Normal file
@@ -0,0 +1,37 @@
|
||||
title: Conditionals/BlockMode
|
||||
description: Basic conditional shortcut syntax in block mode
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Output
|
||||
|
||||
\procedure test(animal)
|
||||
<% if [<animal>match[Elephant]] %>
|
||||
|
||||
! It is an elephant
|
||||
|
||||
<% else %>
|
||||
|
||||
<% if [<animal>match[Giraffe]] %>
|
||||
|
||||
! It is a giraffe
|
||||
|
||||
<% else %>
|
||||
|
||||
! It is completely unknown
|
||||
|
||||
<% endif %>
|
||||
|
||||
<% endif %>
|
||||
|
||||
\end
|
||||
|
||||
<<test "Giraffe">>
|
||||
|
||||
<<test "Elephant">>
|
||||
|
||||
<<test "Antelope">>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<h1 class="">It is a giraffe</h1><h1 class="">It is an elephant</h1><h1 class="">It is completely unknown</h1>
|
||||
26
editions/test/tiddlers/tests/data/conditionals/Else.tid
Normal file
26
editions/test/tiddlers/tests/data/conditionals/Else.tid
Normal file
@@ -0,0 +1,26 @@
|
||||
title: Conditionals/Else
|
||||
description: Else conditional shortcut syntax
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Text
|
||||
|
||||
This is a <% if [<something>match[one]] %>Elephant<% else %>Crocodile<% endif %>, I think.
|
||||
+
|
||||
title: Output
|
||||
|
||||
<$let something="one">
|
||||
{{Text}}
|
||||
</$let>
|
||||
|
||||
<$let something="two">
|
||||
{{Text}}
|
||||
</$let>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>
|
||||
This is a Elephant, I think.
|
||||
</p><p>
|
||||
This is a Crocodile, I think.
|
||||
</p>
|
||||
32
editions/test/tiddlers/tests/data/conditionals/Elseif.tid
Normal file
32
editions/test/tiddlers/tests/data/conditionals/Elseif.tid
Normal file
@@ -0,0 +1,32 @@
|
||||
title: Conditionals/Elseif
|
||||
description: Elseif conditional shortcut syntax
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Text
|
||||
|
||||
This is a <% if [<something>match[one]] %>Elephant<% elseif [<something>match[two]] %>Antelope<% else %>Crocodile<% endif %>, I think.
|
||||
+
|
||||
title: Output
|
||||
|
||||
<$let something="one">
|
||||
{{Text}}
|
||||
</$let>
|
||||
|
||||
<$let something="two">
|
||||
{{Text}}
|
||||
</$let>
|
||||
|
||||
<$let something="three">
|
||||
{{Text}}
|
||||
</$let>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>
|
||||
This is a Elephant, I think.
|
||||
</p><p>
|
||||
This is a Antelope, I think.
|
||||
</p><p>
|
||||
This is a Crocodile, I think.
|
||||
</p>
|
||||
@@ -0,0 +1,26 @@
|
||||
title: Conditionals/MissingEndif
|
||||
description: Conditional shortcut syntax with missing endif
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Text
|
||||
|
||||
This is a <% if [<something>match[one]] %>Elephant
|
||||
+
|
||||
title: Output
|
||||
|
||||
<$let something="one">
|
||||
{{Text}}
|
||||
</$let>
|
||||
|
||||
<$let something="two">
|
||||
{{Text}}
|
||||
</$let>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>
|
||||
This is a Elephant
|
||||
</p><p>
|
||||
This is a
|
||||
</p>
|
||||
@@ -0,0 +1,12 @@
|
||||
title: Conditionals/MultipleResults
|
||||
description: Check that multiple results from the filter are ignored
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Output
|
||||
|
||||
This is a <% if 1 2 3 4 5 6 %>Elephant<% endif %>, I think.
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>This is a Elephant, I think.</p>
|
||||
38
editions/test/tiddlers/tests/data/conditionals/Nested.tid
Normal file
38
editions/test/tiddlers/tests/data/conditionals/Nested.tid
Normal file
@@ -0,0 +1,38 @@
|
||||
title: Conditionals/Nested
|
||||
description: Nested conditional shortcut syntax
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Output
|
||||
|
||||
\procedure test(animal)
|
||||
<% if [<animal>match[Elephant]] %>
|
||||
It is an elephant
|
||||
<% else %>
|
||||
<% if [<animal>match[Giraffe]] %>
|
||||
It is a giraffe
|
||||
<% else %>
|
||||
It is completely unknown
|
||||
<% endif %>
|
||||
<% endif %>
|
||||
\end
|
||||
|
||||
<<test "Giraffe">>
|
||||
|
||||
<<test "Elephant">>
|
||||
|
||||
<<test "Antelope">>
|
||||
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
|
||||
|
||||
It is a giraffe
|
||||
|
||||
|
||||
It is an elephant
|
||||
|
||||
|
||||
It is completely unknown
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
title: Conditionals/NestedElseif
|
||||
description: Nested elseif conditional shortcut syntax
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Text
|
||||
|
||||
\whitespace trim
|
||||
This is a 
|
||||
<% if [<something>match[one]] %>
|
||||
<% if [<another>match[one]] %>
|
||||
Indian
|
||||
<% elseif [<another>match[two]] %>
|
||||
African
|
||||
<% else %>
|
||||
Unknown
|
||||
<% endif %>
|
||||
 Elephant
|
||||
<% elseif [<something>match[two]] %>
|
||||
Antelope
|
||||
<% else %>
|
||||
Crocodile
|
||||
<% endif %>
|
||||
, I think.
|
||||
+
|
||||
title: Output
|
||||
|
||||
<$let something="one" another="one">
|
||||
{{Text}}
|
||||
</$let>
|
||||
|
||||
<$let something="one" another="two">
|
||||
{{Text}}
|
||||
</$let>
|
||||
|
||||
<$let something="one" another="three">
|
||||
{{Text}}
|
||||
</$let>
|
||||
|
||||
<$let something="two">
|
||||
{{Text}}
|
||||
</$let>
|
||||
|
||||
<$let something="three">
|
||||
{{Text}}
|
||||
</$let>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p>
|
||||
This is a Indian Elephant, I think.
|
||||
</p><p>
|
||||
This is a African Elephant, I think.
|
||||
</p><p>
|
||||
This is a Unknown Elephant, I think.
|
||||
</p><p>
|
||||
This is a Antelope, I think.
|
||||
</p><p>
|
||||
This is a Crocodile, I think.
|
||||
</p>
|
||||
Reference in New Issue
Block a user