tiddlywiki 5.3.1 → 5.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/.github/workflows/ci.yml +9 -2
  2. package/bin/build-site.sh +25 -5
  3. package/bin/ci-test.sh +16 -0
  4. package/boot/boot.js +12 -0
  5. package/core/language/en-GB/Exporters.multids +1 -1
  6. package/core/language/en-GB/Help/commands.tid +1 -1
  7. package/core/language/en-GB/Help/savewikifolder.tid +2 -2
  8. package/core/language/en-GB/Help/server.tid +1 -1
  9. package/core/language/en-GB/Types/image_svg_xml.tid +1 -1
  10. package/core/language/en-GB/Types/image_x-icon.tid +1 -1
  11. package/core/modules/commands/savetiddlers.js +1 -1
  12. package/core/modules/editor/engines/framed.js +1 -1
  13. package/core/modules/editor/engines/simple.js +1 -1
  14. package/core/modules/filters/all.js +5 -5
  15. package/core/modules/filters/encodings.js +6 -2
  16. package/core/modules/filters/json-ops.js +95 -1
  17. package/core/modules/filters/listops.js +1 -0
  18. package/core/modules/parsers/textparser.js +5 -4
  19. package/core/modules/parsers/wikiparser/rules/conditional.js +120 -0
  20. package/core/modules/parsers/wikiparser/wikiparser.js +31 -8
  21. package/core/modules/savers/github.js +1 -1
  22. package/core/modules/startup/windows.js +2 -1
  23. package/core/modules/syncer.js +160 -122
  24. package/core/modules/utils/dom/dom.js +3 -3
  25. package/core/modules/utils/dom/http.js +1 -1
  26. package/core/modules/utils/fakedom.js +5 -1
  27. package/core/modules/utils/utils.js +27 -4
  28. package/core/modules/widgets/browse.js +10 -0
  29. package/core/modules/widgets/button.js +15 -3
  30. package/core/modules/widgets/checkbox.js +11 -0
  31. package/core/modules/widgets/draggable.js +16 -5
  32. package/core/modules/widgets/droppable.js +14 -2
  33. package/core/modules/widgets/image.js +19 -14
  34. package/core/modules/widgets/link.js +12 -2
  35. package/core/modules/widgets/list.js +176 -19
  36. package/core/modules/widgets/radio.js +4 -0
  37. package/core/modules/widgets/range.js +4 -0
  38. package/core/modules/widgets/scrollable.js +66 -1
  39. package/core/modules/widgets/select.js +34 -26
  40. package/core/modules/widgets/transclude.js +19 -6
  41. package/core/modules/widgets/widget.js +35 -19
  42. package/core/modules/wiki.js +2 -2
  43. package/core/templates/html-json-skinny-tiddler.tid +0 -1
  44. package/core/templates/html-json-tiddler.tid +1 -1
  45. package/core/templates/store.area.template.html.tid +4 -4
  46. package/core/ui/ControlPanel/Basics.tid +2 -2
  47. package/core/ui/EditTemplate/body/default.tid +12 -8
  48. package/core/ui/EditTemplate/fields.tid +2 -2
  49. package/core/ui/EditTemplate/type.tid +1 -1
  50. package/core/ui/EditorToolbar/preview.tid +6 -0
  51. package/core/ui/PageTemplate.tid +1 -1
  52. package/core/ui/ViewTemplate/subtitle.tid +2 -5
  53. package/core/wiki/config/OfficialPluginLibrary.tid +1 -1
  54. package/core/wiki/macros/colour-picker.tid +6 -6
  55. package/core/wiki/macros/image-picker.tid +5 -5
  56. package/core/wiki/macros/list.tid +95 -78
  57. package/core/wiki/macros/tabs.tid +9 -1
  58. package/core/wiki/macros/tag-picker.tid +2 -2
  59. package/core/wiki/macros/tag.tid +2 -1
  60. package/core/wiki/macros/toc.tid +2 -2
  61. package/editions/de-AT/tiddlers/HelloThere.tid +2 -2
  62. package/editions/de-AT/tiddlers/community/Fur_Entwickler.tid +1 -1
  63. package/editions/de-AT-server/tiddlers/system/favicon.png +0 -0
  64. package/editions/{es-ES-server/tiddlers/system/favicon.ico.meta → de-AT-server/tiddlers/system/favicon.png.meta} +1 -1
  65. package/editions/dev/tiddlers/images/favicon.png +0 -0
  66. package/editions/{de-AT-server/tiddlers/system/favicon.ico.meta → dev/tiddlers/images/favicon.png.meta} +1 -1
  67. package/editions/dev/tiddlers/new/HookMechanism.tid +28 -3
  68. package/editions/empty/tiddlywiki.info +5 -2
  69. package/editions/es-ES/tiddlers/Forums.tid +4 -5
  70. package/editions/es-ES/tiddlers/HelloThere.tid +2 -2
  71. package/editions/es-ES/tiddlers/Typography.tid +1 -1
  72. package/editions/es-ES/tiddlers/images/favicon.png +0 -0
  73. package/editions/{dev/tiddlers/images/favicon.ico.meta → es-ES/tiddlers/images/favicon.png.meta} +1 -1
  74. package/editions/es-ES/tiddlers/images/green_favicon.png +0 -0
  75. package/editions/es-ES/tiddlers/images/{green_favicon.ico.meta → green_favicon.png.meta} +1 -1
  76. package/editions/es-ES-server/tiddlers/system/favicon.png +0 -0
  77. package/editions/{es-ES/tiddlers/images/favicon.ico.meta → es-ES-server/tiddlers/system/favicon.png.meta} +1 -1
  78. package/editions/fr-FR/tiddlers/images/favicon.png +0 -0
  79. package/editions/fr-FR/tiddlers/images/favicon.png.meta +2 -0
  80. package/editions/fr-FR/tiddlers/images/green_favicon.png +0 -0
  81. package/editions/fr-FR/tiddlers/images/{green_favicon.ico.meta → green_favicon.png.meta} +1 -1
  82. package/editions/fr-FR-server/tiddlers/system/favicon.png +0 -0
  83. package/editions/fr-FR-server/tiddlers/system/favicon.png.meta +2 -0
  84. package/editions/highlightdemo/tiddlywiki.info +1 -1
  85. package/editions/ja-JP/tiddlers/images/favicon.png +0 -0
  86. package/editions/ja-JP/tiddlers/images/favicon.png.meta +2 -0
  87. package/editions/ja-JP/tiddlers/images/green_favicon.png +0 -0
  88. package/editions/ja-JP/tiddlers/images/{green_favicon.ico.meta → green_favicon.png.meta} +1 -1
  89. package/editions/katexdemo/tiddlywiki.info +1 -1
  90. package/editions/ko-KR/tiddlers/images/favicon.png +0 -0
  91. package/editions/ko-KR/tiddlers/images/favicon.png.meta +2 -0
  92. package/editions/ko-KR/tiddlers/images/green_favicon.png +0 -0
  93. package/editions/ko-KR/tiddlers/images/{green_favicon.ico.meta → green_favicon.png.meta} +1 -1
  94. package/editions/ko-KR-server/tiddlers/system/favicon.png +0 -0
  95. package/editions/ko-KR-server/tiddlers/system/favicon.png.meta +2 -0
  96. package/editions/pluginlibrary/tiddlywiki.info +2 -2
  97. package/editions/prerelease/tiddlers/{Release 5.3.2.tid → Release 5.3.3.tid } +23 -25
  98. package/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid +1 -1
  99. package/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +1 -1
  100. package/editions/prerelease/tiddlers/system/favicon.png +0 -0
  101. package/editions/prerelease/tiddlers/system/favicon.png.meta +2 -0
  102. package/editions/prerelease/tiddlers/system/temp-my-scroll-position.tid +3 -0
  103. package/editions/resumebuilder/tiddlywiki.info +1 -1
  104. package/editions/server/tiddlywiki.info +1 -1
  105. package/editions/server-external-js/tiddlywiki.info +1 -1
  106. package/editions/test/playwright.spec.js +25 -0
  107. package/editions/test/tiddlers/tests/data/conditionals/Basic.tid +26 -0
  108. package/editions/test/tiddlers/tests/data/conditionals/BlockMode.tid +37 -0
  109. package/editions/test/tiddlers/tests/data/conditionals/Else.tid +26 -0
  110. package/editions/test/tiddlers/tests/data/conditionals/Elseif.tid +32 -0
  111. package/editions/test/tiddlers/tests/data/conditionals/MissingEndIf.tid +26 -0
  112. package/editions/test/tiddlers/tests/data/conditionals/MultipleResults.tid +12 -0
  113. package/editions/test/tiddlers/tests/data/conditionals/Nested.tid +38 -0
  114. package/editions/test/tiddlers/tests/data/conditionals/NestedElseif.tid +60 -0
  115. package/editions/test/tiddlers/tests/data/list-widget/WithExplicitTemplates.tid +29 -0
  116. package/editions/test/tiddlers/tests/data/list-widget/WithExplicitTemplatesInBlockMode.tid +32 -0
  117. package/editions/test/tiddlers/tests/data/list-widget/WithExplicitTemplatesOverriddenByAttributes.tid +33 -0
  118. package/editions/test/tiddlers/tests/data/list-widget/WithJoinTemplate.tid +30 -0
  119. package/editions/test/tiddlers/tests/data/list-widget/WithJoinTemplateInBlockMode.tid +32 -0
  120. package/editions/test/tiddlers/tests/data/list-widget/WithLimit.tid +25 -0
  121. package/editions/test/tiddlers/tests/data/list-widget/WithMissingTemplate.tid +26 -0
  122. package/editions/test/tiddlers/tests/data/transclude/CustomWidget-CodeblockOverride-TextParser.tid +20 -0
  123. package/editions/test/tiddlers/tests/data/transclude/Variable-Refreshing.tid +27 -0
  124. package/editions/test/tiddlers/tests/data/transclude/Variable-Static.tid +15 -0
  125. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/ButtonWidget-DataAttributes.tid +27 -0
  126. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/CheckboxWidget-DataAttributes.tid +22 -0
  127. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/DraggableWidget-DataAttributes.tid +27 -0
  128. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/DroppableWidget-DataAttributes.tid +27 -0
  129. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/LinkWidget-DataAttributes.tid +27 -0
  130. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/OrderedStyleAttributes.tid +15 -0
  131. package/editions/test/tiddlers/tests/data/widgets/DataAttributes/SelectWidget-DataAttributes.tid +27 -0
  132. package/editions/test/tiddlers/tests/data/widgets/ElementWidgetEventAttributes.tid +15 -0
  133. package/editions/test/tiddlers/tests/data/widgets/ElementWidgetStyleAttributes.tid +15 -0
  134. package/editions/test/tiddlers/tests/test-filters.js +1 -0
  135. package/editions/test/tiddlers/tests/test-json-filters.js +40 -0
  136. package/editions/test/tiddlers/tests/test-utils.js +23 -0
  137. package/editions/test/tiddlers/tests/test-widget.js +62 -0
  138. package/editions/tw.org/tiddlers/$__favicon.ico.png +0 -0
  139. package/editions/tw.org/tiddlywiki.info +1 -1
  140. package/editions/tw5.com/tiddlers/_tw_shared/favicons/classic.tiddlywiki.com.png +0 -0
  141. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{classic.tiddlywiki.com.ico.meta → classic.tiddlywiki.com.png.meta} +1 -1
  142. package/editions/tw5.com/tiddlers/_tw_shared/favicons/links.tiddlywiki.org.png +0 -0
  143. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{links.tiddlywiki.org.ico.meta → links.tiddlywiki.org.png.meta} +1 -1
  144. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.dev.png +0 -0
  145. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.com.dev.ico.meta → tiddlywiki.com.dev.png.meta} +1 -1
  146. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.png +0 -0
  147. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.com.ico.meta → tiddlywiki.com.png.meta} +1 -1
  148. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.prerelease.png +0 -0
  149. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.com.prerelease.ico.meta → tiddlywiki.com.prerelease.png.meta} +1 -1
  150. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.upgrade.png +0 -0
  151. package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.com.upgrade.ico.meta → tiddlywiki.com.upgrade.png.meta} +1 -1
  152. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.org.png +0 -0
  153. package/editions/tw5.com/tiddlers/about/Archive.tid +82 -0
  154. package/editions/tw5.com/tiddlers/community/Chinese Community.tid +20 -0
  155. package/editions/tw5.com/tiddlers/community/editions/Tidme by oflg.tid +16 -0
  156. package/editions/tw5.com/tiddlers/community/plugins/FSRS4TW by oflg.tid +10 -0
  157. package/editions/tw5.com/tiddlers/community/resources/_Timimi_ Extension and executable by Riz.tid +3 -1
  158. package/editions/tw5.com/tiddlers/concepts/Macros.tid +7 -3
  159. package/editions/tw5.com/tiddlers/concepts/Title List.tid +5 -1
  160. package/editions/tw5.com/tiddlers/filters/decodebase64 Operator.tid +6 -1
  161. package/editions/tw5.com/tiddlers/filters/encodebase64 Operator.tid +6 -1
  162. package/editions/tw5.com/tiddlers/filters/examples/jsonset.tid +59 -0
  163. package/editions/tw5.com/tiddlers/filters/examples/jsonstringify Operator (Examples).tid +7 -5
  164. package/editions/tw5.com/tiddlers/filters/examples/stringify_Operator_(Examples).tid +5 -3
  165. package/editions/tw5.com/tiddlers/filters/jsonextract.tid +8 -0
  166. package/editions/tw5.com/tiddlers/filters/jsonget.tid +8 -0
  167. package/editions/tw5.com/tiddlers/filters/jsonset.tid +64 -0
  168. package/editions/tw5.com/tiddlers/filters/jsonstringify Operator.tid +14 -15
  169. package/editions/tw5.com/tiddlers/filters/jsontype.tid +8 -0
  170. package/editions/tw5.com/tiddlers/filters/stringify_Operator.tid +12 -15
  171. package/editions/tw5.com/tiddlers/filters/syntax/Filter Expression.tid +1 -1
  172. package/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +6 -1
  173. package/editions/tw5.com/tiddlers/howtos/Constructing JSON tiddlers.tid +3 -3
  174. package/editions/tw5.com/tiddlers/images/Favicon template.svg +296 -0
  175. package/editions/tw5.com/tiddlers/images/Favicon template.svg.meta +3 -0
  176. package/editions/tw5.com/tiddlers/images/New Release Banner.png +0 -0
  177. package/editions/tw5.com/tiddlers/images/favicon.png +0 -0
  178. package/editions/tw5.com/tiddlers/images/favicon.png.meta +2 -0
  179. package/editions/tw5.com/tiddlers/images/green_favicon.png +0 -0
  180. package/editions/tw5.com/tiddlers/images/green_favicon.png.meta +2 -0
  181. package/editions/tw5.com/tiddlers/macros/CoreMacros.tid +1 -1
  182. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid +12 -5
  183. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-permalink.tid +1 -1
  184. package/editions/tw5.com/tiddlers/pragmas/Pragma_ _whitespace.tid +7 -3
  185. package/editions/tw5.com/tiddlers/procedures/Procedure Definitions.tid +3 -1
  186. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.0.tid +1 -0
  187. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.1.tid +1 -0
  188. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.10.tid +1 -0
  189. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.11.tid +1 -0
  190. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.12.tid +1 -0
  191. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.13.tid +1 -0
  192. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.14.tid +1 -0
  193. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.15.tid +1 -0
  194. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.16.tid +1 -0
  195. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.17.tid +1 -0
  196. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.18.tid +1 -0
  197. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.19.tid +1 -0
  198. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.2.tid +1 -0
  199. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.20.tid +1 -0
  200. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid +1 -0
  201. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.22.tid +1 -0
  202. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.23.tid +1 -0
  203. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.3.tid +1 -0
  204. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.4.tid +1 -0
  205. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.5.tid +1 -0
  206. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.6.tid +1 -0
  207. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.7.tid +1 -0
  208. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.8.tid +1 -0
  209. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.9.tid +1 -0
  210. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.0.tid +1 -0
  211. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.1.tid +1 -0
  212. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.2.tid +1 -0
  213. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.3.tid +1 -0
  214. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.4.tid +1 -0
  215. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.5.tid +1 -0
  216. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.6.tid +1 -0
  217. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.7.tid +1 -0
  218. package/editions/tw5.com/tiddlers/releasenotes/Release 5.3.0.tid +1 -0
  219. package/editions/tw5.com/tiddlers/releasenotes/Release 5.3.1.tid +8 -1
  220. package/editions/tw5.com/tiddlers/releasenotes/Release 5.3.2.tid +184 -0
  221. package/editions/tw5.com/tiddlers/releasenotes/Releases.tid +3 -1
  222. package/editions/tw5.com/tiddlers/system/tw5.com-styles.tid +5 -0
  223. package/editions/tw5.com/tiddlers/widgets/BrowseWidget.tid +3 -1
  224. package/editions/tw5.com/tiddlers/widgets/ButtonWidget.tid +3 -1
  225. package/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +3 -1
  226. package/editions/tw5.com/tiddlers/widgets/Custom Widgets.tid +3 -1
  227. package/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +3 -2
  228. package/editions/tw5.com/tiddlers/widgets/DroppableWidget.tid +3 -1
  229. package/editions/tw5.com/tiddlers/widgets/GenesisWidget.tid +1 -1
  230. package/editions/tw5.com/tiddlers/widgets/ImageWidget.tid +2 -1
  231. package/editions/tw5.com/tiddlers/widgets/LinkWidget.tid +3 -1
  232. package/editions/tw5.com/tiddlers/widgets/ListWidget.tid +25 -2
  233. package/editions/tw5.com/tiddlers/widgets/RadioWidget.tid +3 -1
  234. package/editions/tw5.com/tiddlers/widgets/RangeWidget.tid +3 -1
  235. package/editions/tw5.com/tiddlers/widgets/ScrollableWidget.tid +27 -2
  236. package/editions/tw5.com/tiddlers/widgets/SelectWidget.tid +4 -1
  237. package/editions/tw5.com/tiddlers/widgets/SetWidget.tid +17 -1
  238. package/editions/tw5.com/tiddlers/widgets/TranscludeWidget.tid +2 -2
  239. package/editions/tw5.com/tiddlers/wikitext/Conditional Shortcut Syntax.tid +62 -0
  240. package/editions/tw5.com/tiddlers/wikitext/Transclusion and Substitution.tid +3 -3
  241. package/editions/tw5.com/tiddlywiki.info +9 -3
  242. package/editions/tw5.com-server/tiddlers/system/tiddlywiki.com.server.png +0 -0
  243. package/editions/tw5.com-server/tiddlers/system/tiddlywiki.com.server.png.meta +2 -0
  244. package/editions/zh-Hans/tiddlers/images/favicon.png +0 -0
  245. package/editions/zh-Hans/tiddlers/images/favicon.png.meta +2 -0
  246. package/editions/zh-Hans/tiddlers/images/green_favicon.png +0 -0
  247. package/editions/zh-Hans/tiddlers/images/green_favicon.png.meta +2 -0
  248. package/editions/zh-Hant/tiddlers/images/favicon.png +0 -0
  249. package/editions/zh-Hant/tiddlers/images/favicon.png.meta +2 -0
  250. package/editions/zh-Hant/tiddlers/images/green_favicon.png +0 -0
  251. package/editions/zh-Hant/tiddlers/images/green_favicon.png.meta +2 -0
  252. package/languages/de-DE/Exporters.multids +1 -1
  253. package/languages/de-DE/Help/commands.tid +2 -2
  254. package/languages/de-DE/Help/server.tid +1 -1
  255. package/languages/de-DE/Types/image_x-icon.tid +1 -1
  256. package/languages/es-ES/Buttons.multids +2 -0
  257. package/languages/es-ES/Fields.multids +4 -0
  258. package/languages/es-ES/Help/listen.tid +1 -1
  259. package/languages/es-ES/Help/savewikifolder.tid +16 -1
  260. package/languages/es-ES/Help/server.tid +1 -1
  261. package/languages/es-ES/Misc.multids +3 -0
  262. package/languages/es-ES/SiteTitle.tid +1 -1
  263. package/languages/pl-PL/Exporters.multids +1 -1
  264. package/languages/pl-PL/Help/commands.tid +1 -1
  265. package/languages/pl-PL/Help/savewikifolder.tid +3 -1
  266. package/languages/pl-PL/Help/server.tid +1 -1
  267. package/languages/zh-Hans/Exporters.multids +1 -1
  268. package/languages/zh-Hans/Help/commands.tid +1 -1
  269. package/languages/zh-Hans/Help/server.tid +1 -1
  270. package/languages/zh-Hans/Types/image_svg_xml.tid +1 -1
  271. package/languages/zh-Hans/Types/image_x-icon.tid +1 -1
  272. package/languages/zh-Hant/Exporters.multids +1 -1
  273. package/languages/zh-Hant/Help/commands.tid +1 -1
  274. package/languages/zh-Hant/Help/server.tid +1 -1
  275. package/languages/zh-Hant/Types/image_svg_xml.tid +1 -1
  276. package/languages/zh-Hant/Types/image_x-icon.tid +1 -1
  277. package/licenses/cla-individual.md +10 -0
  278. package/package.json +4 -1
  279. package/playwright.config.js +46 -0
  280. package/plugins/tiddlywiki/codemirror/styles.tid +5 -0
  281. package/plugins/tiddlywiki/comments/styles.tid +8 -8
  282. package/plugins/tiddlywiki/dynannotate/docs/readme.tid +1 -0
  283. package/plugins/tiddlywiki/dynannotate/modules/dynannotate.js +28 -27
  284. package/plugins/tiddlywiki/evernote/modules/enex-deserializer.js +82 -23
  285. package/plugins/tiddlywiki/evernote/readme.tid +1 -0
  286. package/plugins/tiddlywiki/evernote/samples/sample-enex-with-image.xml.enex +2 -2
  287. package/plugins/tiddlywiki/jasmine/run-wiki-based-tests.js +1 -1
  288. package/plugins/tiddlywiki/qrcode/barcodereader.js +90 -0
  289. package/plugins/tiddlywiki/qrcode/docs/barcodereader.tid +44 -0
  290. package/plugins/tiddlywiki/qrcode/{doc/usage.tid → docs/makeqr.tid} +4 -4
  291. package/plugins/tiddlywiki/qrcode/docs.tid +3 -0
  292. package/plugins/tiddlywiki/qrcode/{MakeContactQR.tid → examples/make/MakeContactQR.tid} +1 -1
  293. package/plugins/tiddlywiki/qrcode/{MakeGenericQR.tid → examples/make/MakeGenericQR.tid} +1 -1
  294. package/plugins/tiddlywiki/qrcode/{MakeWifiQR.tid → examples/make/MakeWifiQR.tid} +1 -1
  295. package/plugins/tiddlywiki/qrcode/examples/make/make.tid +5 -0
  296. package/plugins/tiddlywiki/qrcode/examples/read/BarCodeReader.tid +17 -0
  297. package/plugins/tiddlywiki/qrcode/examples/read/read.tid +5 -0
  298. package/plugins/tiddlywiki/qrcode/examples.tid +3 -0
  299. package/plugins/tiddlywiki/qrcode/files/html5-qrcode/LICENSE +201 -0
  300. package/plugins/tiddlywiki/qrcode/files/html5-qrcode/README.md +398 -0
  301. package/plugins/tiddlywiki/qrcode/files/html5-qrcode/html5-qrcode.min.js +1 -0
  302. package/plugins/tiddlywiki/qrcode/files/tiddlywiki.files +20 -4
  303. package/plugins/tiddlywiki/qrcode/makeqr.js +1 -1
  304. package/plugins/tiddlywiki/qrcode/plugin.info +1 -1
  305. package/plugins/tiddlywiki/qrcode/readme.tid +15 -0
  306. package/plugins/tiddlywiki/tiddlyweb/html-json-skinny-tiddler.tid +0 -1
  307. package/plugins/tiddlywiki/tiddlyweb/html-json-tiddler.tid +1 -2
  308. package/plugins/tiddlywiki/upgrade/UpgradeWizard.tid +2 -2
  309. package/plugins/tiddlywiki/upgrade/favicon.png +0 -0
  310. package/plugins/tiddlywiki/upgrade/favicon.png.meta +2 -0
  311. package/readme.md +1 -1
  312. package/themes/tiddlywiki/vanilla/base.tid +37 -7
  313. package/themes/tiddlywiki/vanilla/settings.multids +1 -1
  314. package/editions/de-AT-server/tiddlers/system/favicon.ico +0 -0
  315. package/editions/dev/tiddlers/images/favicon.ico +0 -0
  316. package/editions/es-ES/tiddlers/images/favicon.ico +0 -0
  317. package/editions/es-ES/tiddlers/images/green_favicon.ico +0 -0
  318. package/editions/es-ES-server/tiddlers/system/favicon.ico +0 -0
  319. package/editions/fr-FR/tiddlers/images/favicon.ico +0 -0
  320. package/editions/fr-FR/tiddlers/images/favicon.ico.meta +0 -2
  321. package/editions/fr-FR/tiddlers/images/green_favicon.ico +0 -0
  322. package/editions/fr-FR-server/tiddlers/system/favicon.ico +0 -0
  323. package/editions/fr-FR-server/tiddlers/system/favicon.ico.meta +0 -2
  324. package/editions/ja-JP/tiddlers/images/favicon.ico +0 -0
  325. package/editions/ja-JP/tiddlers/images/favicon.ico.meta +0 -2
  326. package/editions/ja-JP/tiddlers/images/green_favicon.ico +0 -0
  327. package/editions/ko-KR/tiddlers/images/favicon.ico +0 -0
  328. package/editions/ko-KR/tiddlers/images/favicon.ico.meta +0 -2
  329. package/editions/ko-KR/tiddlers/images/green_favicon.ico +0 -0
  330. package/editions/ko-KR-server/tiddlers/system/favicon.ico +0 -0
  331. package/editions/ko-KR-server/tiddlers/system/favicon.ico.meta +0 -2
  332. package/editions/prerelease/tiddlers/system/favicon.ico +0 -0
  333. package/editions/prerelease/tiddlers/system/favicon.ico.meta +0 -2
  334. package/editions/tw5.com/tiddlers/_tw_shared/favicons/classic.tiddlywiki.com.ico +0 -0
  335. package/editions/tw5.com/tiddlers/_tw_shared/favicons/links.tiddlywiki.org.ico +0 -0
  336. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.dev.ico +0 -0
  337. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.ico +0 -0
  338. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.prerelease.ico +0 -0
  339. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.com.upgrade.ico +0 -0
  340. package/editions/tw5.com/tiddlers/_tw_shared/favicons/tiddlywiki.org.ico +0 -0
  341. package/editions/tw5.com/tiddlers/community/editions/TiddlyMemo by oflg.tid +0 -16
  342. package/editions/tw5.com/tiddlers/community/tutorials/Install and run TiddlyWiki on a CentOS 6 VPS using Nginx.tid +0 -16
  343. package/editions/tw5.com/tiddlers/images/favicon.ico +0 -0
  344. package/editions/tw5.com/tiddlers/images/favicon.ico.meta +0 -2
  345. package/editions/tw5.com/tiddlers/images/green_favicon.ico +0 -0
  346. package/editions/tw5.com/tiddlers/images/green_favicon.ico.meta +0 -2
  347. package/editions/tw5.com-server/tiddlers/system/favicon.ico +0 -0
  348. package/editions/tw5.com-server/tiddlers/system/favicon.ico.meta +0 -2
  349. package/editions/zh-Hans/tiddlers/images/favicon.ico +0 -0
  350. package/editions/zh-Hans/tiddlers/images/favicon.ico.meta +0 -2
  351. package/editions/zh-Hans/tiddlers/images/green_favicon.ico +0 -0
  352. package/editions/zh-Hans/tiddlers/images/green_favicon.ico.meta +0 -2
  353. package/editions/zh-Hant/tiddlers/images/favicon.ico +0 -0
  354. package/editions/zh-Hant/tiddlers/images/favicon.ico.meta +0 -2
  355. package/editions/zh-Hant/tiddlers/images/green_favicon.ico +0 -0
  356. package/editions/zh-Hant/tiddlers/images/green_favicon.ico.meta +0 -2
  357. package/plugins/tiddlywiki/qrcode/doc/examples.tid +0 -3
  358. package/plugins/tiddlywiki/qrcode/doc/readme.tid +0 -13
  359. package/plugins/tiddlywiki/upgrade/favicon.ico +0 -0
  360. package/plugins/tiddlywiki/upgrade/favicon.ico.meta +0 -2
  361. /package/editions/tw5.com/tiddlers/_tw_shared/favicons/{tiddlywiki.org.ico.meta → tiddlywiki.org.png.meta} +0 -0
  362. /package/plugins/tiddlywiki/qrcode/files/{LICENSE → qrcode/LICENSE} +0 -0
  363. /package/plugins/tiddlywiki/qrcode/files/{README.md → qrcode/README.md} +0 -0
  364. /package/plugins/tiddlywiki/qrcode/files/{qrcode.js → qrcode/qrcode.js} +0 -0
@@ -0,0 +1,10 @@
1
+ created: 20220417010615742
2
+ modified: 20231005060241771
3
+ tags: [[Community Plugins]]
4
+ title: Free Spaced Repetition Scheduler for TiddlyWiki by oflg
5
+ type: text/vnd.tiddlywiki
6
+ url: https://github.com/open-spaced-repetition/fsrs4tw
7
+
8
+ TiddlyWiki-based memory programme using advanced FSRS algorithm
9
+
10
+ {{!!url}}
@@ -13,6 +13,8 @@ url: https://ibnishak.github.io/Timimi/
13
13
 
14
14
  Timimi is a web-extension accompanied by a native host that allows you to save and backup your standalone HTML tiddlywiki files ''anywhere in your hard-drive''. Once installed, you can save the tiddlywiki files without any extra steps, like the original Tiddlyfox addon.
15
15
 
16
+ * The native host requires a component installed on the host computer, outside the browser.
17
+
16
18
  {{!!url}}
17
19
 
18
20
  As of version 2.1, Timimi supports the following browsers
@@ -29,4 +31,4 @@ Timimi also provides users with 4 backup strategies, viz:
29
31
  * Create a backup Every n^^th^^ save
30
32
  * Create a backup every n^^th^^ minute
31
33
  * Customised Tower of Hanoi
32
- * First in First Out
34
+ * First in First Out
@@ -1,9 +1,15 @@
1
1
  created: 20140211171341271
2
- modified: 20230419103154328
2
+ modified: 20230922094937115
3
3
  tags: Concepts Reference
4
4
  title: Macros
5
5
  type: text/vnd.tiddlywiki
6
6
 
7
+ !! Important
8
+
9
+ <<.from-version "5.3.0">> Macros have been [[superseded|Macro Pitfalls]] by [[Procedures]], [[Functions]] and [[Custom Widgets]] which together provide more robust and flexible ways to encapsulate and re-use code.
10
+
11
+ For text substitutions it is now recommended to use: [[Substituted Attribute Values]], [[substitute Operator]] and [[Transclusion and Substitution]]
12
+
7
13
  !! Introduction
8
14
 
9
15
  A <<.def macro>> is a named snippet of text. They are typically defined with the [[Pragma: \define]]:
@@ -26,8 +32,6 @@ The parameters that are specified in the macro call are substituted for special
26
32
  * `$parameter-name$` is replaced with the value of the named parameter
27
33
  * `$(variable-name)$` is replaced with the value of the named [[variable|Variables]]).
28
34
 
29
- <<.from-version "5.3.0">> Macros have been [[superseded|Macro Pitfalls]] by [[Procedures]], [[Custom Widgets]] and [[Functions]] which together provide more robust and flexible ways to encapsulate and re-use code. It is now recommended to only use macros when textual substitution is specifically required.
30
-
31
35
  !! How Macros Work
32
36
 
33
37
  Macros 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.
@@ -1,5 +1,5 @@
1
1
  created: 20150117152418000
2
- modified: 20220523075540462
2
+ modified: 20231019155036098
3
3
  tags: Concepts
4
4
  title: Title List
5
5
  type: text/vnd.tiddlywiki
@@ -15,3 +15,7 @@ Title lists are used in various places, including PermaLinks and the ListField.
15
15
  They are in fact the simplest case of a [[filter|Filters]], and are thus a way of expressing a [[selection of titles|Title Selection]].
16
16
 
17
17
  <<.warning """The [[Title List]] format cannot reliably represent items that contain certain specific character sequences such as `]] `. Thus it should not be used where there is a possibility of such sequences occurring.""">>
18
+
19
+ See also:
20
+
21
+ * The [[format Operator]] with the 'titlelist' suffix conditionally wraps double square brackets around a string if it contains whitespace
@@ -1,6 +1,7 @@
1
1
  caption: decodebase64
2
2
  op-input: a [[selection of titles|Title Selection]]
3
3
  op-output: the input with base 64 decoding applied
4
+ op-suffix: optional: `binary` to produce binary output, `urlsafe` for URL-safe input
4
5
  op-parameter:
5
6
  op-parameter-name:
6
7
  op-purpose: apply base 64 decoding to a string
@@ -11,6 +12,10 @@ from-version: 5.2.6
11
12
 
12
13
  See Mozilla Developer Network for details of [[base 64 encoding|https://developer.mozilla.org/en-US/docs/Glossary/Base64]]. TiddlyWiki uses [[library code from @nijikokun|https://gist.github.com/Nijikokun/5192472]] to handle the conversion.
13
14
 
14
- The input strings must be base64 encoded. The output strings are binary data.
15
+ The input strings must be base64 encoded. The output strings are the text (or binary data) decoded from base64 format.
16
+
17
+ The optional `binary` suffix, if present, changes how the input is processed. The input is normally assumed to be [[UTF-8|https://developer.mozilla.org/en-US/docs/Glossary/UTF-8]] text encoded in base64 form (such as what the <<.op "encodebase64">> operator produces), so only certain byte sequences in the input are valid. If the input is binary data encoded in base64 format (such as an image, audio file, video file, etc.), then use the optional `binary` suffix, which will allow all byte sequences. Note that the output will then be binary, ''not'' text, and should probably not be passed into further filter operators.
18
+
19
+ The optional `urlsafe` suffix, if present, causes the decoder to assume that the base64 input uses `-` and `_` instead of `+` and `/` for the 62nd and 63rd characters of the base64 "alphabet", which is usually referred to as "URL-safe base64" or "bae64url".
15
20
 
16
21
  <<.operator-examples "decodebase64">>
@@ -1,6 +1,7 @@
1
1
  caption: encodebase64
2
2
  op-input: a [[selection of titles|Title Selection]]
3
3
  op-output: the input with base 64 encoding applied
4
+ op-suffix: optional: `binary` to treat input as binary data, `urlsafe` for URL-safe output
4
5
  op-parameter:
5
6
  op-parameter-name:
6
7
  op-purpose: apply base 64 encoding to a string
@@ -11,6 +12,10 @@ from-version: 5.2.6
11
12
 
12
13
  See Mozilla Developer Network for details of [[base 64 encoding|https://developer.mozilla.org/en-US/docs/Glossary/Base64]]. TiddlyWiki uses [[library code from @nijikokun|https://gist.github.com/Nijikokun/5192472]] to handle the conversion.
13
14
 
14
- The input strings are interpreted as binary data. The output strings are base64 encoded.
15
+ The input strings are interpreted as [[UTF-8 encoded|https://developer.mozilla.org/en-US/docs/Glossary/UTF-8]] text (or binary data instead if the `binary` suffix is present). The output strings are base64 encoded.
16
+
17
+ The optional `binary` suffix, if present, causes the input string to be interpreted as binary data instead of text. Normally, an extra UTF-8 encoding step will be added before the base64 output is produced, so that emojis and other Unicode characters will be encoded correctly. If the input is binary data, such as an image, audio file, video, etc., then the UTF-8 encoding step would produce incorrect results, so using the `binary` suffix causes the UTF-8 encoding step to be skipped.
18
+
19
+ The optional `urlsafe` suffix, if present, will use the alternate "URL-safe" base64 encoding, where `-` and `_` are used instead of `+` and `/` respectively, allowing the result to be used in URL query parameters or filenames.
15
20
 
16
21
  <<.operator-examples "encodebase64">>
@@ -0,0 +1,59 @@
1
+ created: 20231204112944341
2
+ modified: 20231204115056732
3
+ tags: [[Operator Examples]] [[jsonset Operator]]
4
+ title: jsonset Operator (Examples)
5
+
6
+ <$let object-a="""{
7
+ "a": "one",
8
+ "b": "",
9
+ "c": "three",
10
+ "d": {
11
+ "e": "four",
12
+ "f": [
13
+ "five",
14
+ "six",
15
+ true,
16
+ false,
17
+ null
18
+ ],
19
+ "g": {
20
+ "x": "max",
21
+ "y": "may",
22
+ "z": "maize"
23
+ }
24
+ }
25
+ }
26
+ """
27
+ object-b="""{"a":"one","b":"","c":1.618,"d":{"e":"four","f":["five","six",true,false,null]}}""">
28
+
29
+ The examples below assume the following JSON object is contained in the variable `object-a`:
30
+
31
+ <pre><<object-a>></pre>
32
+
33
+ <<.operator-example 1 "[<object-a>jsonset[d],[Jaguar]]">>
34
+ <<.operator-example 2 "[<object-a>jsonset[d],[f],[Panther]]">>
35
+ <<.operator-example 3 "[<object-a>jsonset[d],[f],[-1],[Elephant]]">>
36
+ <<.operator-example 4 "[<object-a>jsonset[d],[f],[-2],[Elephant]]">>
37
+ <<.operator-example 5 "[<object-a>jsonset[d],[f],[-4],[Elephant]]">>
38
+ <<.operator-example 6 "[<object-a>jsonset[Panther]]" "If only a single parameter is specified, it replaces the entire JSON object">>
39
+ <<.operator-example 7 "[<object-a>jsonset[]]" "If only a single blank parameter is specified, no changes are made to the JSON object">>
40
+
41
+
42
+ The examples below assume the following JSON object is contained in the variable `object-b`:
43
+
44
+ <pre><<object-b>></pre>
45
+
46
+ <<.operator-example 8 "[<object-b>jsonset[]]" "If only a single blank parameter is specified, no changes are made to the JSON object">>
47
+ <<.operator-example 9 "[<object-b>jsonset[],[Antelope]]" "If the property to be set is blank, the entire JSON object is replaced">>
48
+ <<.operator-example 10 "[<object-b>jsonset:number[],[not a number]]" "invalid numbers are interpreted as zero">>
49
+ <<.operator-example 11 "[<object-b>jsonset[id],[Antelope]]" "nonexistent top level properties are added to the object">>
50
+ <<.operator-example 19 "[<object-b>jsonset[missing],[id],[Antelope]]" "nonexistent nested properties are are ignored">>
51
+ <<.operator-example 12 "[<object-b>jsonset:notatype[id],[Antelope]]" "invalid type suffix is interpreted as the default string type">>
52
+ <<.operator-example 13 "[<object-b>jsonset:boolean[id],[false]]">>
53
+ <<.operator-example 14 "[<object-b>jsonset:boolean[id],[Antelope]]" "invalid boolean value causes no assignment to be made">>
54
+ <<.operator-example 15 "[<object-b>jsonset:number[id],[42]]">>
55
+ <<.operator-example 16 "[<object-b>jsonset:null[id]]">>
56
+ <<.operator-example 17 "[<object-b>jsonset:array[d],[f],[5]]">>
57
+ <<.operator-example 18 "[<object-b>jsonset:object[d],[f],[5]]">>
58
+
59
+ <<.operator-example 20 "[<object-a>] [<object-b>] :and[jsonset[b],[two]]" "If the input consists of multiple JSON objects with matching properties, the value is set for all of them">>
@@ -1,9 +1,11 @@
1
- created: 20171029155046637
2
- modified: 20171029155227382
3
- tags: [[Operator Examples]] [[stringify Operator]]
1
+ created: 20230922121858167
2
+ modified: 20230922122333325
3
+ tags: [[Operator Examples]] [[jsonstringify Operator]]
4
4
  title: jsonstringify Operator (Examples)
5
5
  type: text/vnd.tiddlywiki
6
6
 
7
- <<.operator-example 1 """[[Title with "double quotes" and single ' and \backslash]] +[jsonstringify[]]""">>
7
+ Compare the encoding of quotes and control characters in the first example with the analogue [[example for the stringify operator|stringify Operator (Examples)]].
8
+ <<.operator-example 1 """[[Backslash \, double quote ", single quote ', tab , line feed
9
+ ]] +[jsonstringify[]]""">>
8
10
  <<.operator-example 2 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 without suffix]] +[jsonstringify[]]""">>
9
- <<.operator-example 3 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 with rawunicode suffix]] +[jsonstringify:rawunicode[]]""">>
11
+ <<.operator-example 3 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 with rawunicode suffix]] +[jsonstringify:rawunicode[]]""">>
@@ -1,9 +1,11 @@
1
1
  created: 20161017154944352
2
- modified: 20171029155233487
2
+ modified: 20230922122319674
3
3
  tags: [[Operator Examples]] [[stringify Operator]]
4
4
  title: stringify Operator (Examples)
5
5
  type: text/vnd.tiddlywiki
6
6
 
7
- <<.operator-example 1 """[[Title with "double quotes" and single ' and \backslash]] +[stringify[]]""">>
7
+ Compare the encoding of quotes and control characters in the first example with the analogue [[example for the jsonstringify operator|jsonstringify Operator (Examples)]].
8
+ <<.operator-example 1 """[[Backslash \, double quote ", single quote ', tab , line feed
9
+ ]] +[stringify[]]""">>
8
10
  <<.operator-example 2 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 without suffix]] +[stringify[]]""">>
9
- <<.operator-example 3 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 with rawunicode suffix]] +[stringify:rawunicode[]]""">>
11
+ <<.operator-example 3 """[[Accents and emojis -> äñøßπ ⌛🎄🍪🍓 with rawunicode suffix]] +[stringify:rawunicode[]]""">>
@@ -53,6 +53,14 @@ The <<.op jsonextract>> operator uses multiple operands to specify the indexes o
53
53
  [<jsondata>jsonextract[d],[g]] --> {"x":"max","y":"may","z":"maize"}
54
54
  ```
55
55
 
56
+ <<.from-version "5.3.2">> Negative indexes into an array are counted from the end, so -1 means the last item, -2 the next-to-last item, and so on:
57
+
58
+ ```
59
+ [<jsondata>jsonextract[d],[f],[-1]] --> null
60
+ [<jsondata>jsonextract[d],[f],[-2]] --> false
61
+ [<jsondata>jsonextract[d],[f],[-4]] --> "six"
62
+ ```
63
+
56
64
  Indexes can be dynamically composed from variables and transclusions:
57
65
 
58
66
  ```
@@ -51,6 +51,14 @@ The <<.op jsonget>> operator uses multiple operands to specify the indexes of th
51
51
  [<jsondata>jsonget[d],[f],[0]] --> "five"
52
52
  ```
53
53
 
54
+ <<.from-version "5.3.2">> Negative indexes into an array are counted from the end, so -1 means the last item, -2 the next-to-last item, and so on:
55
+
56
+ ```
57
+ [<jsondata>jsonget[d],[f],[-1]] --> null
58
+ [<jsondata>jsonget[d],[f],[-2]] --> false
59
+ [<jsondata>jsonget[d],[f],[-4]] --> "six"
60
+ ```
61
+
54
62
  Indexes can be dynamically composed from variables and transclusions:
55
63
 
56
64
  ```
@@ -0,0 +1,64 @@
1
+ caption: jsonset
2
+ created: 20230915121010948
3
+ modified: 20231204115203428
4
+ op-input: a selection of JSON objects
5
+ op-output: the JSON objects with the specified value assigned to the specified property
6
+ op-parameter: one or more indexes of the property to modify, if applicable followed by the value to be assigned
7
+ op-purpose: set the value of a property in JSON objects
8
+ op-suffix: data type of the value to be assigned to the property
9
+ tags: [[Filter Operators]] [[JSON Operators]]
10
+ title: jsonset Operator
11
+
12
+ <<.from-version "5.3.2">> The <<.op jsonset>> operator is used to set a property value in JSON strings. See [[JSON in TiddlyWiki]] for background. See also the following related operators:
13
+
14
+ * <<.olink jsonget>> to retrieve the values of a property in JSON data
15
+ * <<.olink jsontype>> to retrieve the type of a JSON value
16
+ * <<.olink jsonindexes>> to retrieve the names of the fields of a JSON object, or the indexes of a JSON array
17
+ * <<.olink jsonextract>> to retrieve a JSON value as a string of JSON
18
+
19
+ The type of the value to be assigned to the property can be optionally specified with a suffix:
20
+
21
+ * ''string'': default, the string is specified as the final operand
22
+ * ''boolean'': the boolean value is true if the final operand is the string "true" and false if the final operand is the string "false", any other value for the final string results prevents the property from being assigned
23
+ * ''number'': the numeric value is taken from the final operand, invalid numbers are interpreted as zero
24
+ * ''json'': the JSON string value is taken from the final operand, invalid JSON prevents the property from being assigned
25
+ * ''object'': an empty object is assigned to the property, the final operand is ignored
26
+ * ''array'': an empty array is assigned to the property, the final operand is ignored
27
+ * ''null'': the special value null is assigned to the property, the final operand is ignored
28
+
29
+ Properties within a JSON object are identified by a sequence of indexes. In the following example, the value at `[a]` is `one`, and the value at `[d][f][0]` is `five`.
30
+
31
+ ```
32
+ {
33
+ "a": "one",
34
+ "b": "",
35
+ "c": "three",
36
+ "d": {
37
+ "e": "four",
38
+ "f": [
39
+ "five",
40
+ "six",
41
+ true,
42
+ false,
43
+ null
44
+ ],
45
+ "g": {
46
+ "x": "max",
47
+ "y": "may",
48
+ "z": "maize"
49
+ }
50
+ }
51
+ }
52
+ ```
53
+
54
+ The <<.op jsonset>> operator uses multiple parameters to specify the indexes of the property to set. When used to assign strings (default behaviour if no suffix is specified) the final operand is interpreted as the value to assign.
55
+
56
+ Negative indexes are counted from the end, so -1 means the last item, -2 the next-to-last item, and so on.
57
+
58
+ Indexes can be dynamically composed from variables and transclusions, e.g. `[<jsondata>jsonset<variable>,{!!field},[0],{CurrentResult}]`.
59
+
60
+ In the special case where only a single parameter is defined, the operator replaces the entire input object with the the value of that parameter. If the single parameter is blank, the operation is ignored and no assignment takes place.
61
+
62
+ If the input consists of multiple JSON objects with matching properties, the value is set for all of them.
63
+
64
+ <<.operator-examples "jsonset">>
@@ -1,12 +1,12 @@
1
1
  caption: jsonstringify
2
2
  created: 20171029155051467
3
3
  from-version: 5.1.14
4
- modified: 20171029155143797
4
+ modified: 20230922121404577
5
5
  op-input: a [[selection of titles|Title Selection]]
6
6
  op-output: the input with JSON string encodings applied
7
7
  op-parameter:
8
8
  op-parameter-name:
9
- op-purpose: apply JSON string encoding to a string
9
+ op-purpose: apply JSON string encoding to a string, see also the similar <<.olink stringify>>
10
10
  op-suffix: <<.from-version "5.1.23">> optionally, the keyword `rawunicode`
11
11
  op-suffix-name: R
12
12
  tags: [[Filter Operators]] [[String Operators]]
@@ -18,19 +18,18 @@ The following substitutions are made:
18
18
  |!Character |!Replacement |!Condition |
19
19
  |`\` |`\\` |Always |
20
20
  |`"` |`\"` |Always |
21
- |Carriage return (0x0d) |`\\r` |Always |
22
- |Line feed (0x0a) |`\\n` |Always |
23
- |Backspace (0x08) |`\\b` |Always |
24
- |Form field (0x0c) |`\\f` |Always |
25
- |Tab (0x09) |`\\t` |Always |
26
- |Characters from 0x00 to 0x1f |`\\u####` where #### is four hex digits |Always |
27
- |Characters from 0x80 to 0xffff|`\\u####` where #### is four hex digits |If `rawunicode` suffix is not present (default) |
28
- |Characters from 0x80 to 0xffff|Unchanged |If `rawunicode` suffix is present <<.from-version "5.1.23">> |
21
+ |Carriage return (0x0d) |`\r` |Always |
22
+ |Line feed (0x0a) |`\n` |Always |
23
+ |Backspace (0x08) |`\b` |Always |
24
+ |Form field (0x0c) |`\f` |Always |
25
+ |Tab (0x09) |`\t` |Always|
26
+ |Characters from 0x00 to 0x1f, except listed above |`\u####` where #### is four hex digits |Always |
27
+ |Characters from from 0x80 to 0xffff|`\u####` where #### is four hex digits |If `rawunicode` suffix is not present (default) |
28
+ |Characters from 0x80 to 0xffff|<<.from-version "5.1.23">> Unchanged |If `rawunicode` suffix is present |
29
29
 
30
- <<.from-version "5.1.23">> If the suffix `rawunicode` is present, Unicode characters above 0x80 (such as ß, ä, ñ or 🎄) will be passed through unchanged. Without the suffix, they will be substituted with `\\u` codes, which was the default behavior before 5.1.23.
30
+ <<.from-version "5.1.23">> If the suffix `rawunicode` is present, Unicode characters above 0x80 (such as ß, ä, ñ or 🎄) will be passed through unchanged. Without the suffix, they will be substituted with `\u` codes, which was the default behavior before 5.1.23. Characters outside the Basic Multilingual Plane, such as 🎄 and other emojis, will be encoded as a UTF-16 surrogate pair, i.e. with two `\u` sequences.
31
31
 
32
- <<.note """Technical note: Characters outside the Basic Multilingual Plane, such as 🎄 and other emojis, will be encoded as a UTF-16 surrogate pair, i.e. with two `\u` sequences.""">>
32
+ <<.note """Mind the differences compared to <<.olink stringify>> in encoding of single quotes and control characters (0x00 to 0x1f).
33
+ """>>
33
34
 
34
- Also see the [[stringify Operator]].
35
-
36
- <<.operator-examples "jsonstringify">>
35
+ <<.operator-examples "jsonstringify">>
@@ -61,6 +61,14 @@ The <<.op jsontype>> operator uses multiple operands to specify the indexes of t
61
61
  [<jsondata>jsontype[d],[f],[2]] --> "boolean"
62
62
  ```
63
63
 
64
+ <<.from-version "5.3.2">> Negative indexes into an array are counted from the end, so -1 means the last item, -2 the next-to-last item, and so on:
65
+
66
+ ```
67
+ [<jsondata>jsontype[d],[f],[-1]] --> "null"
68
+ [<jsondata>jsontype[d],[f],[-2]] --> "boolean"
69
+ [<jsondata>jsontype[d],[f],[-4]] --> "string"
70
+ ```
71
+
64
72
  Indexes can be dynamically composed from variables and transclusions:
65
73
 
66
74
  ```
@@ -1,36 +1,33 @@
1
1
  caption: stringify
2
2
  created: 20161017153038029
3
- modified: 20171029155143797
3
+ from-version: 5.1.14
4
+ modified: 20230922121406947
4
5
  op-input: a [[selection of titles|Title Selection]]
5
6
  op-output: the input with ~JavaScript string encodings applied
6
7
  op-parameter:
7
8
  op-parameter-name:
8
- op-purpose: apply ~JavaScript string encoding to a string
9
+ op-purpose: apply ~JavaScript string encoding to a string, see also the similar <<.olink jsonstringify>>
9
10
  op-suffix: <<.from-version "5.1.23">> optionally, the keyword `rawunicode`
10
11
  op-suffix-name: R
11
12
  tags: [[Filter Operators]] [[String Operators]]
12
13
  title: stringify Operator
13
14
  type: text/vnd.tiddlywiki
14
- from-version: 5.1.14
15
15
 
16
16
  The following substitutions are made:
17
17
 
18
18
  |!Character |!Replacement |!Condition |
19
19
  |`\` |`\\` |Always |
20
20
  |`"` |`\"` |Always |
21
- |Carriage return (0x0d) |`\\r` |Always |
22
- |Line feed (0x0a) |`\\n` |Always |
23
- |Backspace (0x08) |`\\b` |Always |
24
- |Form field (0x0c) |`\\f` |Always |
25
- |Tab (0x09) |`\\t` |Always |
26
- |Characters from 0x00 to 0x1f |`\\x##` where ## is two hex digits |Always |
27
- |Characters from 0x80 to 0xffff|`\\u####` where #### is four hex digits |If `rawunicode` suffix is not present (default) |
21
+ |`'` |`\'` |Always |
22
+ |Line feed (0x0a) |`\n` |Always |
23
+ |Carriage return (0x0d) |`\r` |Always |
24
+ |Characters from 0x00 to 0x1f, except listed above |`\x##` where ## is two hex digits |Always |
25
+ |Characters from 0x80 to 0xffff|`\u####` where #### is four hex digits |If `rawunicode` suffix is not present (default) |
28
26
  |Characters from 0x80 to 0xffff|<<.from-version "5.1.23">> Unchanged |If `rawunicode` suffix is present |
29
27
 
30
- <<.from-version "5.1.23">> If the suffix `rawunicode` is present, Unicode characters above 0x80 (such as ß, ä, ñ or 🎄) will be passed through unchanged. Without the suffix, they will be substituted with `\\u` codes, which was the default behavior before 5.1.23.
31
-
32
- <<.note """Technical note: Characters outside the Basic Multilingual Plane, such as 🎄 and other emojis, will be encoded as a UTF-16 surrogate pair, i.e. with two `\u` sequences.""">>
28
+ <<.from-version "5.1.23">> If the suffix `rawunicode` is present, Unicode characters above 0x80 (such as ß, ä, ñ or 🎄) will be passed through unchanged. Without the suffix, they will be substituted with `\u` codes, which was the default behavior before 5.1.23. Characters outside the Basic Multilingual Plane, such as 🎄 and other emojis, will be encoded as a UTF-16 surrogate pair, i.e. with two `\u` sequences.
33
29
 
34
- Also see the [[jsonstringify Operator]].
30
+ <<.note """Mind the differences compared to <<.olink jsonstringify>> in encoding of single quotes and control characters (0x00 to 0x1f).
31
+ """>>
35
32
 
36
- <<.operator-examples "stringify">>
33
+ <<.operator-examples "stringify">>
@@ -50,7 +50,7 @@ In technical / logical terms:
50
50
  |`~run` |`:else[run]` |else |... ELSE run |
51
51
  ||`:intersection`|intersection of sets||
52
52
 
53
- For the difference between `+` and `:intersection`, see [[Filter Run Prefix (Examples)]].
53
+ For the difference between `+` and `:intersection`, see [[Intersection Filter Run Prefix (Examples)]].
54
54
 
55
55
  The input of a run is normally a list of all the non-[[shadow|ShadowTiddlers]] tiddler titles in the wiki (in no particular order). But the `+` prefix can change this:
56
56
 
@@ -1,6 +1,6 @@
1
1
  created: 20130822170200000
2
2
  list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]]
3
- modified: 20230820112855583
3
+ modified: 20231213080637781
4
4
  tags: TableOfContents
5
5
  title: HelloThere
6
6
  type: text/vnd.tiddlywiki
@@ -18,6 +18,11 @@ TiddlyWiki lets you choose where to keep your data, guaranteeing that in the dec
18
18
  <$macrocall $name="flex-card" bordercolor={{!!color}} textcolor={{!!text-color}} backgroundcolor={{!!background-color}} captionField="caption" descriptionField="text"/>
19
19
  </$list>
20
20
  </div>
21
+ <div class="tc-cards tc-small">
22
+ <$link to="中文社区 - Chinese Community" class="tc-btn-big-green tc-card">
23
+ 中文社区<br/>Chinese Community
24
+ </$link>
25
+ </div>
21
26
 
22
27
  !! ''Find Out More''
23
28
 
@@ -1,7 +1,7 @@
1
- title: Constructing JSON tiddlers
2
- tags: [[JSON in TiddlyWiki]] [[Learning]]
3
1
  created: 20220427174702859
4
- modified: 20220427174702859
2
+ modified: 20230922122551197
3
+ tags: [[JSON in TiddlyWiki]] Learning
4
+ title: Constructing JSON tiddlers
5
5
 
6
6
  See [[JSON in TiddlyWiki]] for an overview of using JSON in TiddlyWiki.
7
7