tiddlywiki 5.2.1 → 5.2.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 (316) hide show
  1. package/.eslintignore +5 -12
  2. package/.eslintrc.yml +17 -1
  3. package/.github/workflows/ci.yml +3 -0
  4. package/bin/build-site.sh +1 -1
  5. package/bin/build-tw-org.sh +97 -0
  6. package/boot/boot.js +44 -17
  7. package/boot/bootprefix.js +1 -0
  8. package/contributing.md +1 -1
  9. package/core/copyright.tid +1 -1
  10. package/core/language/en-GB/ControlPanel.multids +3 -1
  11. package/core/language/en-GB/Fields.multids +4 -3
  12. package/core/language/en-GB/Misc.multids +1 -1
  13. package/core/modules/commands/init.js +1 -1
  14. package/core/modules/commands/savelibrarytiddlers.js +1 -1
  15. package/core/modules/commands/savewikifolder.js +1 -1
  16. package/core/modules/deserializers.js +7 -10
  17. package/core/modules/editor/operations/text/wrap-lines.js +5 -3
  18. package/core/modules/filters/crypto.js +27 -0
  19. package/core/modules/filters/insertbefore.js +1 -1
  20. package/core/modules/filters/is/draft.js +2 -2
  21. package/core/modules/filters/listops.js +2 -1
  22. package/core/modules/filters/lookup.js +29 -6
  23. package/core/modules/filters/prefix.js +30 -12
  24. package/core/modules/filters/removeprefix.js +16 -6
  25. package/core/modules/filters/removesuffix.js +20 -6
  26. package/core/modules/filters/search.js +1 -0
  27. package/core/modules/filters/suffix.js +32 -10
  28. package/core/modules/filters/untagged.js +1 -1
  29. package/core/modules/filters.js +4 -2
  30. package/core/modules/parsers/parseutils.js +2 -2
  31. package/core/modules/pluginswitcher.js +1 -1
  32. package/core/modules/savers/gitea.js +2 -2
  33. package/core/modules/savers/github.js +2 -2
  34. package/core/modules/savers/gitlab.js +2 -2
  35. package/core/modules/server/routes/put-tiddler.js +1 -1
  36. package/core/modules/server/server.js +37 -12
  37. package/core/modules/startup/browser-messaging.js +2 -2
  38. package/core/modules/startup/render.js +7 -2
  39. package/core/modules/startup/rootwidget.js +14 -0
  40. package/core/modules/startup/windows.js +22 -9
  41. package/core/modules/tiddler.js +3 -3
  42. package/core/modules/upgraders/plugins.js +1 -1
  43. package/core/modules/utils/crypto.js +2 -2
  44. package/core/modules/utils/dom/dragndrop.js +8 -6
  45. package/core/modules/utils/dom/scroller.js +11 -7
  46. package/core/modules/utils/edition-info.js +1 -5
  47. package/core/modules/utils/pluginmaker.js +2 -4
  48. package/core/modules/widgets/action-listops.js +2 -2
  49. package/core/modules/widgets/button.js +1 -1
  50. package/core/modules/widgets/draggable.js +16 -9
  51. package/core/modules/widgets/eventcatcher.js +34 -30
  52. package/core/modules/widgets/image.js +10 -0
  53. package/core/modules/widgets/importvariables.js +1 -1
  54. package/core/modules/widgets/list.js +3 -0
  55. package/core/modules/widgets/navigator.js +2 -17
  56. package/core/modules/widgets/radio.js +2 -2
  57. package/core/modules/widgets/scrollable.js +11 -9
  58. package/core/modules/widgets/widget.js +30 -14
  59. package/core/modules/wiki-bulkops.js +20 -15
  60. package/core/modules/wiki.js +39 -17
  61. package/core/templates/tiddlywiki5.html.tid +1 -1
  62. package/core/ui/ControlPanel/Cascades/FieldEditor.tid +9 -0
  63. package/core/ui/EditTemplate/body/default.tid +2 -2
  64. package/core/ui/EditTemplate/fieldEditor-default.tid +3 -0
  65. package/core/ui/EditTemplate/fields.tid +6 -4
  66. package/core/ui/EditTemplate/type.tid +1 -1
  67. package/core/ui/EditTemplate.tid +2 -2
  68. package/core/ui/MoreSideBar/plugins/Languages.tid +1 -1
  69. package/core/ui/MoreSideBar/plugins/Plugins.tid +1 -1
  70. package/core/ui/MoreSideBar/plugins/Theme.tid +1 -1
  71. package/core/ui/SideBar/Open.tid +2 -2
  72. package/core/wiki/allfields.tid +1 -1
  73. package/core/wiki/config/FieldEditorFilters.multids +4 -0
  74. package/core/wiki/config/OfficialPluginLibrary.tid +1 -1
  75. package/core/wiki/config/ViewTemplateBodyFilters.multids +2 -1
  76. package/core/wiki/macros/list.tid +2 -2
  77. package/core/wiki/tags/ViewTemplateBodyFilter.tid +1 -1
  78. package/editions/dev/tiddlers/from Heigele and Jurke/Syncadaptor.tid +2 -2
  79. package/editions/dynaviewdemo/tiddlers/SideBar-Open.tid +1 -1
  80. package/editions/fr-FR/output/images/Blurry%20Lawn.jpg +0 -0
  81. package/editions/fr-FR/output/images/Newnham%20Horizon.jpg +0 -0
  82. package/editions/fr-FR/output/index.html +5051 -0
  83. package/editions/fr-FR/output/text/Alice%20in%20Wonderland.tid +3709 -0
  84. package/editions/fr-FR/tiddlers/$ _config_ViewTemplateTitleFilters_fr-default.tid +7 -0
  85. package/editions/fr-FR/tiddlers/$ _core_ui_ViewTemplate_title_fr-default.tid +8 -0
  86. package/editions/fr-FR/tiddlers/$__deprecated.tid +9 -0
  87. package/editions/fr-FR/tiddlers/$__editions_fr-FR_util-macros.tid +1 -0
  88. package/editions/fr-FR/tiddlers/$__editions_tw5.com_doc-macros.tid +69 -5
  89. package/editions/fr-FR/tiddlers/$__editions_tw5.com_version-macros.tid +15 -0
  90. package/editions/fr-FR/tiddlers/$__editions_tw5.com_wikitext-macros.tid +2 -2
  91. package/editions/fr-FR/tiddlers/Block_Quotes_in_WikiText.tid +15 -8
  92. package/editions/fr-FR/tiddlers/CamelCase.tid +6 -3
  93. package/editions/fr-FR/tiddlers/Code Blocks in WikiText.tid +27 -16
  94. package/editions/fr-FR/tiddlers/Community Links Aggregator.tid +11 -0
  95. package/editions/fr-FR/tiddlers/Community.tid +6 -4
  96. package/editions/fr-FR/tiddlers/Creating and editing tiddlers.tid +11 -11
  97. package/editions/fr-FR/tiddlers/Deprecated - What does it mean.tid +17 -0
  98. package/editions/fr-FR/tiddlers/Developers.tid +10 -5
  99. package/editions/fr-FR/tiddlers/Federatial.tid +11 -0
  100. package/editions/fr-FR/tiddlers/Formatting in WikiText.tid +12 -12
  101. package/editions/fr-FR/tiddlers/Forums.tid +27 -13
  102. package/editions/fr-FR/tiddlers/GettingStarted.tid +16 -14
  103. package/editions/fr-FR/tiddlers/Glossaire en-GB -_ fr-FR.tid +3 -1
  104. package/editions/fr-FR/tiddlers/HTML in WikiText.tid +77 -28
  105. package/editions/fr-FR/tiddlers/Headings in WikiText.tid +2 -2
  106. package/editions/fr-FR/tiddlers/HelloThere.tid +15 -12
  107. package/editions/fr-FR/tiddlers/How to export tiddlers.tid +31 -0
  108. package/editions/fr-FR/tiddlers/ImageWidget.tid +33 -0
  109. package/editions/fr-FR/tiddlers/Images in WikiText.tid +69 -0
  110. package/editions/fr-FR/tiddlers/Importing Tiddlers.tid +26 -0
  111. package/editions/fr-FR/tiddlers/JeremyRuston.tid +9 -9
  112. package/editions/fr-FR/tiddlers/Linking in WikiText.tid +108 -19
  113. package/editions/fr-FR/tiddlers/ListField.tid +6 -6
  114. package/editions/fr-FR/tiddlers/Macros in WikiText.tid +5 -5
  115. package/editions/fr-FR/tiddlers/Macros.tid +17 -8
  116. package/editions/fr-FR/tiddlers/PermaLinks.tid +19 -19
  117. package/editions/fr-FR/tiddlers/Philosophy of Tiddlers.tid +2 -2
  118. package/editions/fr-FR/tiddlers/Saving.tid +63 -4
  119. package/editions/fr-FR/tiddlers/Share Plugin.tid +15 -0
  120. package/editions/fr-FR/tiddlers/{Sharing_a_TiddlyWiki_on_Dropbox.tid → Sharing a TiddlyWiki on Dropbox.tid } +12 -4
  121. package/editions/fr-FR/tiddlers/Sharing your tiddlers with others.tid +18 -0
  122. package/editions/fr-FR/tiddlers/Structuring TiddlyWiki.tid +6 -6
  123. package/editions/fr-FR/tiddlers/Styles and Classes in WikiText.tid +11 -10
  124. package/editions/fr-FR/tiddlers/Tagging.tid +24 -18
  125. package/editions/fr-FR/tiddlers/TaskManagementExample.tid +3 -1
  126. package/editions/fr-FR/tiddlers/TiddlerLinks.tid +5 -5
  127. package/editions/fr-FR/tiddlers/TiddlyFox Apocalypse.tid +46 -0
  128. package/editions/fr-FR/tiddlers/TiddlyFox.tid +6 -3
  129. package/editions/fr-FR/tiddlers/TiddlyWiki.tid +6 -4
  130. package/editions/fr-FR/tiddlers/_TiddlyWiki for Scholars_ by Alberto Molina.tid +2 -2
  131. package/editions/prerelease/tiddlers/{Release 5.2.2.tid → Release 5.2.3.tid } +15 -11
  132. package/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +1 -1
  133. package/editions/prerelease/tiddlers/system/download-empty.tid +1 -0
  134. package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-horizontal-all.tid +33 -0
  135. package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-horizontal.tid +43 -0
  136. package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-vertical.tid +43 -0
  137. package/editions/test/tiddlers/tests/test-action-widgets.js +55 -0
  138. package/editions/test/tiddlers/tests/test-filters.js +225 -64
  139. package/editions/test/tiddlers/tests/test-html-parser.js +15 -0
  140. package/editions/test/tiddlers/tests/test-prefixes-filter.js +5 -5
  141. package/editions/test/tiddlers/tests/test-tags.js +19 -0
  142. package/editions/test/tiddlers/tests/test-utils.js +10 -0
  143. package/editions/test/tiddlers/tests/test-wikitext-parser.js +14 -1
  144. package/editions/test/tiddlers/tests/test-wikitext-tabs-macro.js +86 -0
  145. package/editions/tw.org/tiddlers/$__DefaultTiddlers.tid +6 -0
  146. package/editions/tw.org/tiddlers/$__SiteSubtitle.tid +6 -0
  147. package/editions/tw.org/tiddlers/$__SiteTitle.tid +6 -0
  148. package/editions/tw.org/tiddlers/$__StoryList.tid +3 -0
  149. package/editions/tw.org/tiddlers/$__favicon.ico.png +0 -0
  150. package/editions/tw.org/tiddlers/$__favicon.ico.png.meta +4 -0
  151. package/editions/tw.org/tiddlers/$__palette.tid +6 -0
  152. package/editions/tw.org/tiddlers/$__palettes_BlueFlavour +165 -0
  153. package/editions/tw.org/tiddlers/$__palettes_BlueFlavour.meta +8 -0
  154. package/editions/tw.org/tiddlers/$__palettes_FlowingSun +165 -0
  155. package/editions/tw.org/tiddlers/$__palettes_FlowingSun.meta +8 -0
  156. package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_metrics_bodyfontsize.tid +6 -0
  157. package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_metrics_bodylineheight.tid +6 -0
  158. package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_metrics_sidebarwidth.tid +6 -0
  159. package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_options_sidebarlayout.tid +6 -0
  160. package/editions/tw.org/tiddlers/HelloThere.tid +14 -0
  161. package/editions/tw.org/tiddlers/Table of Contents.tid +11 -0
  162. package/editions/tw.org/tiddlers/TiddlyWiki.tid +8 -0
  163. package/editions/tw.org/tiddlywiki.info +30 -0
  164. package/editions/tw5.com/tiddlers/community/Contributor License Agreement.tid +3 -3
  165. package/editions/tw5.com/tiddlers/community/Forums.tid +16 -13
  166. package/editions/tw5.com/tiddlers/community/Signing the Contributor License Agreement.tid +2 -2
  167. package/editions/tw5.com/tiddlers/community/plugins/TiddlyClip by buggyjay.tid +3 -3
  168. package/editions/tw5.com/tiddlers/concepts/Cascades.tid +1 -0
  169. package/editions/tw5.com/tiddlers/concepts/Customizing EditTemplate Field Rendering.tid +31 -0
  170. package/editions/tw5.com/tiddlers/concepts/Field Editor Cascade.tid +17 -0
  171. package/editions/tw5.com/tiddlers/concepts/Filters.tid +15 -10
  172. package/editions/tw5.com/tiddlers/concepts/Macros.tid +1 -3
  173. package/editions/tw5.com/tiddlers/concepts/Pragma.tid +2 -2
  174. package/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid +2 -1
  175. package/editions/tw5.com/tiddlers/demonstrations/Alice in Wonderland.tid +3707 -4
  176. package/editions/tw5.com/tiddlers/demonstrations/Apple.tid +6 -1
  177. package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Styles.tid +1 -0
  178. package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Template.tid +1 -0
  179. package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/TiddlerTemplateFilter.tid +1 -0
  180. package/editions/tw5.com/tiddlers/features/Importing Tiddlers.tid +1 -1
  181. package/editions/tw5.com/tiddlers/features/Modals.tid +2 -1
  182. package/editions/tw5.com/tiddlers/filters/Filter Operators.tid +9 -5
  183. package/editions/tw5.com/tiddlers/filters/all.tid +2 -2
  184. package/editions/tw5.com/tiddlers/filters/butlast.tid +3 -1
  185. package/editions/tw5.com/tiddlers/filters/examples/butlast.tid +4 -3
  186. package/editions/tw5.com/tiddlers/filters/examples/insertbefore Operator (Examples).tid +28 -0
  187. package/editions/tw5.com/tiddlers/filters/examples/lookup Operator (Examples).tid +5 -0
  188. package/editions/tw5.com/tiddlers/filters/examples/prefix.tid +4 -3
  189. package/editions/tw5.com/tiddlers/filters/examples/removeprefix.tid +2 -1
  190. package/editions/tw5.com/tiddlers/filters/examples/removesuffix.tid +2 -3
  191. package/editions/tw5.com/tiddlers/filters/examples/rest.tid +4 -3
  192. package/editions/tw5.com/tiddlers/filters/examples/search.tid +6 -1
  193. package/editions/tw5.com/tiddlers/filters/examples/sortan.tid +5 -1
  194. package/editions/tw5.com/tiddlers/filters/examples/suffix.tid +3 -2
  195. package/editions/tw5.com/tiddlers/filters/insertbefore Operator.tid +21 -5
  196. package/editions/tw5.com/tiddlers/filters/lookup Operator.tid +28 -10
  197. package/editions/tw5.com/tiddlers/filters/prefix.tid +17 -2
  198. package/editions/tw5.com/tiddlers/filters/removeprefix.tid +18 -3
  199. package/editions/tw5.com/tiddlers/filters/removesuffix.tid +18 -3
  200. package/editions/tw5.com/tiddlers/filters/search.tid +10 -9
  201. package/editions/tw5.com/tiddlers/filters/sha256 Operator.tid +18 -0
  202. package/editions/tw5.com/tiddlers/filters/subfilter Operator.tid +2 -2
  203. package/editions/tw5.com/tiddlers/filters/suffix.tid +17 -2
  204. package/editions/tw5.com/tiddlers/filters/syntax/Cascade Filter Run Prefix.tid +2 -2
  205. package/editions/tw5.com/tiddlers/filters/syntax/Named Filter Run Prefix.tid +1 -1
  206. package/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +3 -3
  207. package/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid +4 -14
  208. package/editions/tw5.com/tiddlers/images/New Release Banner.png +0 -0
  209. package/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid +1 -1
  210. package/editions/tw5.com/tiddlers/messages/SampleWindowTemplate.tid +2 -2
  211. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-all-windows.tid +20 -0
  212. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid +39 -0
  213. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-download-file.tid +6 -1
  214. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid +16 -12
  215. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-relink-tiddler.tid +26 -0
  216. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-rename-tiddler.tid +4 -2
  217. package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-scroll.tid +3 -0
  218. package/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid +3 -1
  219. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid +6 -0
  220. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.22.tid +6 -0
  221. package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.23.tid +6 -0
  222. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.0.tid +6 -0
  223. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.1.tid +6 -0
  224. package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.2.tid +162 -0
  225. package/editions/tw5.com/tiddlers/releasenotes/Releases.tid +4 -2
  226. package/editions/tw5.com/tiddlers/saving/Saving on Browser with the File System Access API.tid +21 -0
  227. package/editions/tw5.com/tiddlers/saving/Saving on TidGi.tid +26 -0
  228. package/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid +3 -1
  229. package/editions/tw5.com/tiddlers/saving/Saving with Polly.tid +29 -0
  230. package/editions/tw5.com/tiddlers/system/doc-macros.tid +25 -1
  231. package/editions/tw5.com/tiddlers/system/doc-styles.tid +5 -1
  232. package/editions/tw5.com/tiddlers/system/download-empty.tid +1 -0
  233. package/editions/tw5.com/tiddlers/system/operator-macros.tid +4 -2
  234. package/editions/tw5.com/tiddlers/system/operator-template.tid +6 -3
  235. package/editions/tw5.com/tiddlers/system/style-guide-macros.tid +5 -1
  236. package/editions/tw5.com/tiddlers/system/variable-macros.tid +4 -2
  237. package/editions/tw5.com/tiddlers/system/wikitext-macros.tid +17 -3
  238. package/editions/tw5.com/tiddlers/webserver/Using HTTPS.tid +17 -2
  239. package/editions/tw5.com/tiddlers/webserver/WebServer API_ Get All Tiddlers.tid +1 -1
  240. package/editions/tw5.com/tiddlers/webserver/WebServer Authorization.tid +15 -3
  241. package/editions/tw5.com/tiddlers/webserver/WebServer Parameter_ admin.tid +8 -0
  242. package/editions/tw5.com/tiddlers/webserver/WebServer Parameter_ required-plugins.tid +8 -0
  243. package/editions/tw5.com/tiddlers/webserver/WebServer Parameter_ tls-passphrase.tid +10 -0
  244. package/editions/tw5.com/tiddlers/widgets/$__editions_tw5.com_widget-examples_qualify-transcluded.tid +14 -0
  245. package/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +7 -3
  246. package/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid +1 -1
  247. package/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid +7 -6
  248. package/editions/tw5.com/tiddlers/widgets/ImageWidget.tid +9 -1
  249. package/editions/tw5.com/tiddlers/widgets/LinkCatcherWidget.tid +2 -1
  250. package/editions/tw5.com/tiddlers/widgets/MacroCallWidget.tid +3 -1
  251. package/editions/tw5.com/tiddlers/widgets/MessageCatcherWidget.tid +2 -2
  252. package/editions/tw5.com/tiddlers/widgets/QualifyWidget.tid +39 -0
  253. package/editions/tw5.com/tiddlers/widgets/TranscludeWidget.tid +7 -6
  254. package/editions/tw5.com/tiddlers/widgets/ViewWidget.tid +26 -8
  255. package/editions/tw5.com/tiddlers/widgets/WikifyWidget.tid +2 -2
  256. package/editions/tw5.com/tiddlers/wikitext/HTML in WikiText.tid +30 -4
  257. package/editions/tw5.com/tiddlers/wikitext/Images in WikiText.tid +3 -3
  258. package/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid +44 -1
  259. package/editions/tw5.com/tiddlers/wikitext/Macro Calls in WikiText.tid +3 -3
  260. package/editions/tw5.com/tiddlers/wikitext/Transclusion in WikiText.tid +2 -1
  261. package/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid +3 -3
  262. package/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText (Examples).tid +51 -0
  263. package/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText.tid +35 -0
  264. package/editions/tw5.com/tiddlers/wikitext/parser/Inline Mode WikiText.tid +26 -0
  265. package/editions/tw5.com/tiddlers/wikitext/parser/Places where the parser ignores WikiText.tid +14 -0
  266. package/editions/tw5.com/tiddlers/wikitext/parser/WikiText Parser Modes.tid +16 -0
  267. package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode transitions.tid +59 -0
  268. package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode_ HTML examples.tid +72 -0
  269. package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode_ macro examples.tid +55 -0
  270. package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode_ transclusion examples.tid +56 -0
  271. package/editions/tw5.com/tiddlers/wikitext/parser/table-example.tid +8 -0
  272. package/languages/de-DE/ControlPanel.multids +17 -0
  273. package/languages/de-DE/Fields.multids +6 -5
  274. package/languages/de-DE/SideBar.multids +1 -0
  275. package/languages/pl-PL/ControlPanel.multids +15 -2
  276. package/languages/zh-Hans/ControlPanel.multids +2 -0
  277. package/languages/zh-Hans/Fields.multids +4 -2
  278. package/languages/zh-Hans/Misc.multids +1 -1
  279. package/languages/zh-Hant/ControlPanel.multids +2 -0
  280. package/languages/zh-Hant/Fields.multids +4 -2
  281. package/languages/zh-Hant/Misc.multids +1 -1
  282. package/license +1 -1
  283. package/licenses/cla-individual.md +13 -1
  284. package/package.json +5 -3
  285. package/plugins/tiddlywiki/dynannotate/examples/viewtemplate.tid +3 -4
  286. package/plugins/tiddlywiki/highlight/files/default.min.css +9 -0
  287. package/plugins/tiddlywiki/highlight/files/highlight.min.js +1401 -0
  288. package/plugins/tiddlywiki/highlight/files/tiddlywiki.files +2 -2
  289. package/plugins/tiddlywiki/highlight/highlightblock.js +27 -21
  290. package/plugins/tiddlywiki/highlight/plugin.info +1 -1
  291. package/plugins/tiddlywiki/highlight/readme.tid +18 -47
  292. package/plugins/tiddlywiki/highlight/styles.tid +10 -5
  293. package/plugins/tiddlywiki/highlight/usage.tid +48 -1
  294. package/plugins/tiddlywiki/highlight-legacy/TypeMappings.multids +8 -0
  295. package/plugins/tiddlywiki/{highlight → highlight-legacy}/files/default.css +0 -0
  296. package/plugins/tiddlywiki/{highlight → highlight-legacy}/files/highlight.pack.js +0 -0
  297. package/plugins/tiddlywiki/highlight-legacy/files/tiddlywiki.files +22 -0
  298. package/plugins/tiddlywiki/highlight-legacy/highlightblock.js +44 -0
  299. package/plugins/tiddlywiki/highlight-legacy/license.tid +27 -0
  300. package/plugins/tiddlywiki/highlight-legacy/plugin.info +7 -0
  301. package/plugins/tiddlywiki/highlight-legacy/readme.tid +65 -0
  302. package/plugins/tiddlywiki/highlight-legacy/styles.tid +82 -0
  303. package/plugins/tiddlywiki/highlight-legacy/usage.tid +28 -0
  304. package/plugins/tiddlywiki/internals/editpreviews/raw.tid +1 -0
  305. package/plugins/tiddlywiki/markdown/config_renderWikiTextPragma.tid +1 -1
  306. package/plugins/tiddlywiki/markdown/wrapper.js +33 -22
  307. package/plugins/tiddlywiki/menubar/menu.tid +1 -1
  308. package/readme.md +2 -2
  309. package/themes/tiddlywiki/snowwhite/base.tid +2 -1
  310. package/themes/tiddlywiki/vanilla/base.tid +13 -3
  311. package/themes/tiddlywiki/vanilla/sticky.tid +1 -0
  312. package/editions/fr-FR/tiddlers/$__core_ui_ViewTemplate_title.tid +0 -46
  313. package/editions/fr-FR/tiddlers/Images_in_WikiText.tid +0 -48
  314. package/editions/fr-FR/tiddlers/ImportTiddlers.tid +0 -14
  315. package/editions/fr-FR/tiddlers/Sharing_your_tiddlers_with_others.tid +0 -16
  316. package/plugins/tiddlywiki/highlight/howto.tid +0 -10
package/.eslintignore CHANGED
@@ -1,15 +1,8 @@
1
- # Known minified files
1
+ # Ignore "third party" code whose style we will not change.
2
2
  /boot/sjcl.js
3
+ /core/modules/utils/base64-utf8/base64-utf8.module.js
3
4
  /core/modules/utils/base64-utf8/base64-utf8.module.min.js
4
5
  /core/modules/utils/diff-match-patch/diff_match_patch.js
5
- /plugins/tiddlywiki/async/files/async.min.v1.5.0.js
6
- /plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/anyword-hint.js
7
- /plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/css-hint.js
8
- /plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/html-hint.js
9
- /plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/javascript-hint.js
10
- /plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.js
11
- /plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/xml-hint.js
12
- /plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/closebrackets.js
13
- /plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/matchbrackets.js
14
- /plugins/tiddlywiki/codemirror-closetag/files/addon/edit/closetag.js
15
- /plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js
6
+ /core/modules/utils/diff-match-patch/diff_match_patch_uncompressed.js
7
+ /core/modules/utils/dom/csscolorparser.js
8
+ /plugins/tiddlywiki/*/files/
package/.eslintrc.yml CHANGED
@@ -64,7 +64,23 @@ rules:
64
64
  init-declarations: 'off'
65
65
  jsx-quotes: error
66
66
  key-spacing: 'off'
67
- keyword-spacing: 'off'
67
+ keyword-spacing:
68
+ - error
69
+ - before: true
70
+ after: false
71
+ overrides:
72
+ 'case':
73
+ after: true
74
+ 'do':
75
+ 'after': true
76
+ 'else':
77
+ after: true
78
+ 'return':
79
+ after: true
80
+ 'throw':
81
+ after: true
82
+ 'try':
83
+ after: true
68
84
  line-comment-position: 'off'
69
85
  linebreak-style: 'off'
70
86
  lines-around-comment: 'off'
@@ -72,3 +72,6 @@ jobs:
72
72
  - run: "./bin/ci-push.sh"
73
73
  env:
74
74
  GH_TOKEN: ${{ secrets.GITHUBPUSHTOKEN }}
75
+ - run: "./bin/build-tw-org.sh"
76
+ env:
77
+ GH_TOKEN: ${{ secrets.GITHUBPUSHTOKEN }}
package/bin/build-site.sh CHANGED
@@ -5,7 +5,7 @@
5
5
  # Default to the current version number for building the plugin library
6
6
 
7
7
  if [ -z "$TW5_BUILD_VERSION" ]; then
8
- TW5_BUILD_VERSION=v5.2.0
8
+ TW5_BUILD_VERSION=v5.2.2
9
9
  fi
10
10
 
11
11
  echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
@@ -0,0 +1,97 @@
1
+ #!/bin/bash
2
+
3
+ # Build tiddlywiki.org assets.
4
+
5
+ # Default to the version of TiddlyWiki installed in this repo
6
+
7
+ if [ -z "$TWORG_BUILD_TIDDLYWIKI" ]; then
8
+ TWORG_BUILD_TIDDLYWIKI=./tiddlywiki.js
9
+ fi
10
+
11
+ echo "Using TWORG_BUILD_TIDDLYWIKI as [$TWORG_BUILD_TIDDLYWIKI]"
12
+
13
+ # Set up the build details
14
+
15
+ if [ -z "$TWORG_BUILD_DETAILS" ]; then
16
+ TWORG_BUILD_DETAILS="$(git symbolic-ref --short HEAD)-$(git rev-parse HEAD) from $(git remote get-url origin)"
17
+ fi
18
+
19
+ echo "Using TWORG_BUILD_DETAILS as [$TWORG_BUILD_DETAILS]"
20
+
21
+ if [ -z "$TWORG_BUILD_COMMIT" ]; then
22
+ TWORG_BUILD_COMMIT="$(git rev-parse HEAD)"
23
+ fi
24
+
25
+ echo "Using TWORG_BUILD_COMMIT as [$TWORG_BUILD_COMMIT]"
26
+
27
+ # Set up the build output directory
28
+
29
+ if [ -z "$TWORG_BUILD_OUTPUT" ]; then
30
+ TWORG_BUILD_OUTPUT=$(mktemp -d)
31
+ fi
32
+
33
+ mkdir -p $TWORG_BUILD_OUTPUT
34
+
35
+ if [ ! -d "$TWORG_BUILD_OUTPUT" ]; then
36
+ echo 'A valid TWORG_BUILD_OUTPUT environment variable must be set'
37
+ exit 1
38
+ fi
39
+
40
+ echo "Using TWORG_BUILD_OUTPUT as [$TWORG_BUILD_OUTPUT]"
41
+
42
+ # Pull existing GitHub pages content
43
+
44
+ git clone --depth=1 --branch=main "https://github.com/TiddlyWiki/tiddlywiki.org-gh-pages.git" $TWORG_BUILD_OUTPUT
45
+
46
+ # Make the CNAME file that GitHub Pages requires
47
+
48
+ echo "tiddlywiki.org" > $TWORG_BUILD_OUTPUT/CNAME
49
+
50
+ # Delete any existing static content
51
+
52
+ mkdir -p $TWORG_BUILD_OUTPUT/static
53
+ rm $TWORG_BUILD_OUTPUT/static/*
54
+
55
+ # Put the build details into a .tid file so that it can be included in each build (deleted at the end of this script)
56
+
57
+ echo -e -n "title: $:/build\ncommit: $TWORG_BUILD_COMMIT\n\n$TWORG_BUILD_DETAILS\n" > $TWORG_BUILD_OUTPUT/build.tid
58
+
59
+ ######################################################
60
+ #
61
+ # tiddlywiki.org distribution
62
+ #
63
+ ######################################################
64
+
65
+ # /index.html Main site
66
+ # /favicon.ico Favicon for main site
67
+ # /static.html Static rendering of default tiddlers
68
+ # /alltiddlers.html Static rendering of all tiddlers
69
+ # /static/* Static single tiddlers
70
+ # /static/static.css Static stylesheet
71
+ # /static/favicon.ico Favicon for static pages
72
+ node $TWORG_BUILD_TIDDLYWIKI \
73
+ editions/tw.org \
74
+ --verbose \
75
+ --version \
76
+ --load $TWORG_BUILD_OUTPUT/build.tid \
77
+ --output $TWORG_BUILD_OUTPUT \
78
+ --build favicon static index \
79
+ || exit 1
80
+
81
+ # Delete the temporary build tiddler
82
+
83
+ rm $TWORG_BUILD_OUTPUT/build.tid || exit 1
84
+
85
+ # Push output back to GitHub
86
+
87
+ # Exit script immediately if any command fails
88
+ set -e
89
+
90
+ pushd $TWORG_BUILD_OUTPUT
91
+ git config --global user.email "actions@github.com"
92
+ git config --global user.name "GitHub Actions"
93
+ git add -A .
94
+ git commit --message "GitHub build: $GITHUB_RUN_NUMBER of $TW5_BUILD_BRANCH ($(date +'%F %T %Z'))"
95
+ git remote add deploy "https://$GH_TOKEN@github.com/TiddlyWiki/tiddlywiki.org-gh-pages.git" &>/dev/null
96
+ git push deploy main &>/dev/null
97
+ popd
package/boot/boot.js CHANGED
@@ -68,6 +68,26 @@ $tw.utils.isArrayEqual = function(array1,array2) {
68
68
  });
69
69
  };
70
70
 
71
+ /*
72
+ Add an entry to a sorted array if it doesn't already exist, while maintaining the sort order
73
+ */
74
+ $tw.utils.insertSortedArray = function(array,value) {
75
+ var low = 0, high = array.length - 1, mid, cmp;
76
+ while(low <= high) {
77
+ mid = (low + high) >> 1;
78
+ cmp = value.localeCompare(array[mid]);
79
+ if(cmp > 0) {
80
+ low = mid + 1;
81
+ } else if(cmp < 0) {
82
+ high = mid - 1;
83
+ } else {
84
+ return array;
85
+ }
86
+ }
87
+ array.splice(low,0,value);
88
+ return array;
89
+ };
90
+
71
91
  /*
72
92
  Push entries onto an array, removing them first if they already exist in the array
73
93
  array: array to modify (assumed to be free of duplicates)
@@ -409,6 +429,19 @@ $tw.utils.parseFields = function(text,fields) {
409
429
  return fields;
410
430
  };
411
431
 
432
+ // Safely parse a string as JSON
433
+ $tw.utils.parseJSONSafe = function(text,defaultJSON) {
434
+ try {
435
+ return JSON.parse(text);
436
+ } catch(e) {
437
+ if(typeof defaultJSON === "function") {
438
+ return defaultJSON(e);
439
+ } else {
440
+ return defaultJSON || {};
441
+ }
442
+ }
443
+ };
444
+
412
445
  /*
413
446
  Resolves a source filepath delimited with `/` relative to a specified absolute root filepath.
414
447
  In relative paths, the special folder name `..` refers to immediate parent directory, and the
@@ -1081,7 +1114,7 @@ $tw.Wiki = function(options) {
1081
1114
  tiddlerTitles = null, // Array of tiddler titles
1082
1115
  getTiddlerTitles = function() {
1083
1116
  if(!tiddlerTitles) {
1084
- tiddlerTitles = Object.keys(tiddlers);
1117
+ tiddlerTitles = Object.keys(tiddlers).sort(function(a,b) {return a.localeCompare(b);});
1085
1118
  }
1086
1119
  return tiddlerTitles;
1087
1120
  },
@@ -1134,10 +1167,8 @@ $tw.Wiki = function(options) {
1134
1167
  }
1135
1168
  // Save the new tiddler
1136
1169
  tiddlers[title] = tiddler;
1137
- // Check we've got it's title
1138
- if(tiddlerTitles && tiddlerTitles.indexOf(title) === -1) {
1139
- tiddlerTitles.push(title);
1140
- }
1170
+ // Check we've got the title
1171
+ tiddlerTitles = $tw.utils.insertSortedArray(tiddlerTitles || [],title);
1141
1172
  // Record the new tiddler state
1142
1173
  updateDescriptor["new"] = {
1143
1174
  tiddler: tiddler,
@@ -1322,7 +1353,7 @@ $tw.Wiki = function(options) {
1322
1353
  var tiddler = tiddlers[title];
1323
1354
  if(tiddler) {
1324
1355
  if(tiddler.fields.type === "application/json" && tiddler.hasField("plugin-type") && tiddler.fields.text) {
1325
- pluginInfo[tiddler.fields.title] = JSON.parse(tiddler.fields.text);
1356
+ pluginInfo[tiddler.fields.title] = $tw.utils.parseJSONSafe(tiddler.fields.text);
1326
1357
  results.modifiedPlugins.push(tiddler.fields.title);
1327
1358
  }
1328
1359
  } else {
@@ -1455,7 +1486,7 @@ $tw.Wiki.prototype.defineTiddlerModules = function() {
1455
1486
  }
1456
1487
  break;
1457
1488
  case "application/json":
1458
- $tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"],JSON.parse(tiddler.fields.text));
1489
+ $tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"],$tw.utils.parseJSONSafe(tiddler.fields.text));
1459
1490
  break;
1460
1491
  case "application/x-tiddler-dictionary":
1461
1492
  $tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"],$tw.utils.parseFields(tiddler.fields.text));
@@ -1644,12 +1675,7 @@ $tw.modules.define("$:/boot/tiddlerdeserializer/json","tiddlerdeserializer",{
1644
1675
  }
1645
1676
  return true;
1646
1677
  },
1647
- data = {};
1648
- try {
1649
- data = JSON.parse(text);
1650
- } catch(e) {
1651
- // Ignore JSON parse errors
1652
- }
1678
+ data = $tw.utils.parseJSONSafe(text);
1653
1679
  if($tw.utils.isArray(data) && isTiddlerArrayValid(data)) {
1654
1680
  return data;
1655
1681
  } else if(isTiddlerValid(data)) {
@@ -1689,7 +1715,7 @@ $tw.boot.decryptEncryptedTiddlers = function(callback) {
1689
1715
  $tw.crypto.setPassword(data.password);
1690
1716
  var decryptedText = $tw.crypto.decrypt(encryptedText);
1691
1717
  if(decryptedText) {
1692
- var json = JSON.parse(decryptedText);
1718
+ var json = $tw.utils.parseJSONSafe(decryptedText);
1693
1719
  for(var title in json) {
1694
1720
  $tw.preloadTiddler(json[title]);
1695
1721
  }
@@ -1889,7 +1915,7 @@ filepath: pathname of the directory containing the specification file
1889
1915
  $tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) {
1890
1916
  var tiddlers = [];
1891
1917
  // Read the specification
1892
- var filesInfo = JSON.parse(fs.readFileSync(filepath + path.sep + "tiddlywiki.files","utf8"));
1918
+ var filesInfo = $tw.utils.parseJSONSafe(fs.readFileSync(filepath + path.sep + "tiddlywiki.files","utf8"));
1893
1919
  // Helper to process a file
1894
1920
  var processFile = function(filename,isTiddlerFile,fields,isEditableFile) {
1895
1921
  var extInfo = $tw.config.fileExtensionInfo[path.extname(filename)],
@@ -2019,7 +2045,7 @@ $tw.loadPluginFolder = function(filepath,excludeRegExp) {
2019
2045
  console.log("Warning: missing plugin.info file in " + filepath);
2020
2046
  return null;
2021
2047
  }
2022
- var pluginInfo = JSON.parse(fs.readFileSync(infoPath,"utf8"));
2048
+ var pluginInfo = $tw.utils.parseJSONSafe(fs.readFileSync(infoPath,"utf8"));
2023
2049
  // Read the plugin files
2024
2050
  var pluginFiles = $tw.loadTiddlersFromPath(filepath,excludeRegExp);
2025
2051
  // Save the plugin tiddlers into the plugin info
@@ -2136,7 +2162,7 @@ $tw.loadWikiTiddlers = function(wikiPath,options) {
2136
2162
  pluginFields;
2137
2163
  // Bail if we don't have a wiki info file
2138
2164
  if(fs.existsSync(wikiInfoPath)) {
2139
- wikiInfo = JSON.parse(fs.readFileSync(wikiInfoPath,"utf8"));
2165
+ wikiInfo = $tw.utils.parseJSONSafe(fs.readFileSync(wikiInfoPath,"utf8"));
2140
2166
  } else {
2141
2167
  return null;
2142
2168
  }
@@ -2649,3 +2675,4 @@ if(typeof(exports) !== "undefined") {
2649
2675
  } else {
2650
2676
  _boot(window.$tw);
2651
2677
  }
2678
+ //# sourceURL=$:/boot/boot.js
@@ -117,3 +117,4 @@ if(typeof(exports) === "undefined") {
117
117
  // Export functionality as a module
118
118
  exports.bootprefix = _bootprefix;
119
119
  }
120
+ //# sourceURL=$:/boot/bootprefix.js
package/contributing.md CHANGED
@@ -1,3 +1,3 @@
1
- <h1 class="">Contributing to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></h1><p>Here we focus on contributions via <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/GitHub.html">GitHub</a> Pull Requests but there are many other ways that anyone can help the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> project, such as <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/ReportingBugs.html">reporting bugs</a> or helping to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Improving%2520TiddlyWiki%2520Documentation.html">improve our documentation</a>.</p><h1 class="">Rules for Pull Requests</h1><p>PRs must meet these minimum requirements before they can be considered for merging:</p><ul><li>The material in the PR must be free of licensing restrictions. Which means that either:<ul><li>The author must hold the copyright in all of the material themselves</li><li>The material must be licensed under a license compatible with <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>'s BSD license</li></ul></li><li>The author must sign the Contributors License Agreement (see below)</li><li>Each PR should only make a single feature change</li><li>The title of the PR should be 50 characters or less</li><li>The title of the PR should be capitalised, and should not end with a period</li><li>The title of the PR should be written in the imperative mood. See below</li><li>Adequate explanation in the body of the PR for the motivation and implementation of the change. Focus on the <em>why</em> and <em>what</em>, rather than the <em>how</em></li><li>PRs must be self-contained. Although they can link to material elsewhere, everything needed to understand the intention of the PR should be included</li><li>Documentation as appropriate for end-users or developers</li><li>Observe the coding style</li><li>Read the developers documentation</li><li>Please open a consultation issue prior to investing time in making a large PR</li></ul><h2 class="">Imperative Mood for PR Titles</h2><p>The "imperative mood" means written as if giving a command or instruction. See <a class="tc-tiddlylink-external" href="https://chris.beams.io/posts/git-commit/#imperative" rel="noopener noreferrer" target="_blank">this post</a> for more details, but the gist is that the title of the PR should make sense when used to complete the sentence "If applied, this commit will...". So for example, these are good PR titles:</p><ul><li>If applied, this commit will <em>update the contributing guidelines</em></li><li>If applied, this commit will <em>change css-escape-polyfill to a $tw.utils method</em></li><li>If applied, this commit will <em>make it easier to subclass the wikitext parser with a custom rule set</em></li></ul><p>These a poorly worded PR titles:</p><ul><li><strike>If applied, this commit will <em>edit text widgets should use default text for missing fields</em></strike></li><li><strike>If applied, this commit will <em>signing the CLA</em></strike></li><li><strike>If applied, this commit will <em>don't crash if options.event is missing</em></strike></li></ul><p>PR titles may also include a short prefix to indicate the subsystem to which they apply. For example:</p><ul><li><em>Menu plugin: Include menu text in aerial rotator</em></li></ul><h1 class="">Commenting on Pull Requests</h1><p>One of the principles of open source is that many pairs of eyes on the code can improve quality. So, we welcome comments and critiques of pending PRs. <a class="tc-tiddlylink-external" href="https://conventionalcomments.org" rel="noopener noreferrer" target="_blank">Conventional Comments</a> has some techniques to help make comments as constructive and actionable as possible. Notably, they recommend prefixing a comment with a label to clarify the intention:</p><table><tbody><tr class="evenRow"><td align="left">praise</td><td align="left">Praises highlight something positive. Try to leave at least one of these comments per review. Do not leave false praise (which can actually be damaging). Do look for something to sincerely praise</td></tr><tr class="oddRow"><td align="left">nitpick</td><td align="left">Nitpicks are small, trivial, but necessary changes. Distinguishing nitpick comments significantly helps direct the reader's attention to comments requiring more involvement</td></tr><tr class="evenRow"><td align="left">suggestion</td><td align="left">Suggestions are specific requests to improve the subject under review. It is assumed that we all want to do what's best, so these comments are never dismissed as “mere suggestions”, but are taken seriously</td></tr><tr class="oddRow"><td align="left">issue</td><td align="left">Issues represent user-facing problems. If possible, it's great to follow this kind of comment with a suggestion</td></tr><tr class="evenRow"><td align="left">question</td><td align="left">Questions are appropriate if you have a potential concern but are not quite sure if it's relevant or not. Asking the author for clarification or investigation can lead to a quick resolution</td></tr><tr class="oddRow"><td align="left">thought</td><td align="left">Thoughts represent an idea that popped up from reviewing. These comments are non-blocking by nature, but they are extremely valuable and can lead to more focused initiatives and mentoring opportunities</td></tr><tr class="evenRow"><td align="left">chore</td><td align="left">Chores are simple tasks that must be done before the subject can be “officially” accepted. Usually, these comments reference some common process. Try to leave a link to the process description so that the reader knows how to resolve the chore</td></tr></tbody></table><h1 class="">Contributor License Agreement</h1><p>Like other <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/OpenSource.html">OpenSource</a> projects, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/UnaMesa.html">UnaMesa</a> Association (the legal entity that owns <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a></li><li>For entities use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a></li></ul><h1 class="">How to sign the CLA</h1><p>Create a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/GitHub.html">GitHub</a> pull request to add your name to <code>cla-individual.md</code> or <code>cla-entity.md</code>, with the date in the format (YYYY/MM/DD).</p><p><strong>step by step</strong></p><ol><li>Navigate to <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a> or <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/master/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a> according to whether you are signing as an individual or representative of an organisation</li><li>Ensure that the "branch" dropdown at the top left is set to <code>tiddlywiki-com</code></li><li>Click the "edit" button at the top-right corner (clicking this button will fork the project so you can edit the file)</li><li>Add your name at the bottom<ul><li>eg: <code>Jeremy Ruston, @Jermolene, 2011/11/22</code></li></ul></li><li>Below the edit box for the CLA text you should see a box labelled <strong>Propose file change</strong></li><li>Enter a brief title to explain the change (eg, "Signing the CLA")</li><li>Click the green button labelled <strong>Propose file change</strong></li><li>On the following screen, click the green button labelled <strong>Create pull request</strong></li></ol><hr><p><em>The CLA documents used for this project were created using <a class="tc-tiddlylink-external" href="http://www.harmonyagreements.org" rel="noopener noreferrer" target="_blank">Harmony Project Templates</a>. "HA-CLA-I-LIST Version 1.0" for "CLA-individual" and "HA-CLA-E-LIST Version 1.0" for "CLA-entity".</em>
1
+ <h1 class="">Contributing to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></h1><p>Here we focus on contributions via <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/GitHub.html">GitHub</a> Pull Requests but there are many other ways that anyone can help the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> project, such as <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/ReportingBugs.html">reporting bugs</a> or helping to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Improving%2520TiddlyWiki%2520Documentation.html">improve our documentation</a>.</p><h1 class="">Rules for Pull Requests</h1><p>PRs must meet these minimum requirements before they can be considered for merging:</p><ul><li>The material in the PR must be free of licensing restrictions. Which means that either:<ul><li>The author must hold the copyright in all of the material themselves</li><li>The material must be licensed under a license compatible with <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>'s BSD license</li></ul></li><li>The author must sign the Contributors License Agreement (see below)</li><li>Each PR should only make a single feature change</li><li>The title of the PR should be 50 characters or less</li><li>The title of the PR should be capitalised, and should not end with a period</li><li>The title of the PR should be written in the imperative mood. See below</li><li>Adequate explanation in the body of the PR for the motivation and implementation of the change. Focus on the <em>why</em> and <em>what</em>, rather than the <em>how</em></li><li>PRs must be self-contained. Although they can link to material elsewhere, everything needed to understand the intention of the PR should be included</li><li>Documentation as appropriate for end-users or developers</li><li>Observe the coding style</li><li>Read the developers documentation</li><li>Please open a consultation issue prior to investing time in making a large PR</li></ul><h2 class="">Imperative Mood for PR Titles</h2><p>The "imperative mood" means written as if giving a command or instruction. See <a class="tc-tiddlylink-external" href="https://chris.beams.io/posts/git-commit/#imperative" rel="noopener noreferrer" target="_blank">this post</a> for more details, but the gist is that the title of the PR should make sense when used to complete the sentence "If applied, this commit will...". So for example, these are good PR titles:</p><ul><li>If applied, this commit will <em>update the contributing guidelines</em></li><li>If applied, this commit will <em>change css-escape-polyfill to a $tw.utils method</em></li><li>If applied, this commit will <em>make it easier to subclass the wikitext parser with a custom rule set</em></li></ul><p>These a poorly worded PR titles:</p><ul><li><strike>If applied, this commit will <em>edit text widgets should use default text for missing fields</em></strike></li><li><strike>If applied, this commit will <em>signing the CLA</em></strike></li><li><strike>If applied, this commit will <em>don't crash if options.event is missing</em></strike></li></ul><p>PR titles may also include a short prefix to indicate the subsystem to which they apply. For example:</p><ul><li><em>Menu plugin: Include menu text in aerial rotator</em></li></ul><h1 class="">Commenting on Pull Requests</h1><p>One of the principles of open source is that many pairs of eyes on the code can improve quality. So, we welcome comments and critiques of pending PRs. <a class="tc-tiddlylink-external" href="https://conventionalcomments.org" rel="noopener noreferrer" target="_blank">Conventional Comments</a> has some techniques to help make comments as constructive and actionable as possible. Notably, they recommend prefixing a comment with a label to clarify the intention:</p><table><tbody><tr class="evenRow"><td align="left">praise</td><td align="left">Praises highlight something positive. Try to leave at least one of these comments per review. Do not leave false praise (which can actually be damaging). Do look for something to sincerely praise</td></tr><tr class="oddRow"><td align="left">nitpick</td><td align="left">Nitpicks are small, trivial, but necessary changes. Distinguishing nitpick comments significantly helps direct the reader's attention to comments requiring more involvement</td></tr><tr class="evenRow"><td align="left">suggestion</td><td align="left">Suggestions are specific requests to improve the subject under review. It is assumed that we all want to do what's best, so these comments are never dismissed as “mere suggestions”, but are taken seriously</td></tr><tr class="oddRow"><td align="left">issue</td><td align="left">Issues represent user-facing problems. If possible, it's great to follow this kind of comment with a suggestion</td></tr><tr class="evenRow"><td align="left">question</td><td align="left">Questions are appropriate if you have a potential concern but are not quite sure if it's relevant or not. Asking the author for clarification or investigation can lead to a quick resolution</td></tr><tr class="oddRow"><td align="left">thought</td><td align="left">Thoughts represent an idea that popped up from reviewing. These comments are non-blocking by nature, but they are extremely valuable and can lead to more focused initiatives and mentoring opportunities</td></tr><tr class="evenRow"><td align="left">chore</td><td align="left">Chores are simple tasks that must be done before the subject can be “officially” accepted. Usually, these comments reference some common process. Try to leave a link to the process description so that the reader knows how to resolve the chore</td></tr></tbody></table><h1 class="">Contributor License Agreement</h1><p>Like other <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/OpenSource.html">OpenSource</a> projects, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/UnaMesa.html">UnaMesa</a> Association (the legal entity that owns <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/tiddlywiki-com/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a></li><li>For entities use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/tiddlywiki-com/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a></li></ul><h1 class="">How to sign the CLA</h1><p>Create a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/GitHub.html">GitHub</a> pull request to add your name to <code>cla-individual.md</code> or <code>cla-entity.md</code>, with the date in the format (YYYY/MM/DD).</p><p><strong>step by step</strong></p><ol><li>Navigate to <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/tiddlywiki-com/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a> or <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/tiddlywiki-com/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a> according to whether you are signing as an individual or representative of an organisation</li><li>Ensure that the "branch" dropdown at the top left is set to <code>tiddlywiki-com</code></li><li>Click the "edit" button at the top-right corner (clicking this button will fork the project so you can edit the file)</li><li>Add your name at the bottom<ul><li>eg: <code>Jeremy Ruston, @Jermolene, 2011/11/22</code></li></ul></li><li>Below the edit box for the CLA text you should see a box labelled <strong>Propose file change</strong></li><li>Enter a brief title to explain the change (eg, "Signing the CLA")</li><li>Click the green button labelled <strong>Propose file change</strong></li><li>On the following screen, click the green button labelled <strong>Create pull request</strong></li></ol><hr><p><em>The CLA documents used for this project were created using <a class="tc-tiddlylink-external" href="http://www.harmonyagreements.org" rel="noopener noreferrer" target="_blank">Harmony Project Templates</a>. "HA-CLA-I-LIST Version 1.0" for "CLA-individual" and "HA-CLA-E-LIST Version 1.0" for "CLA-entity".</em>
2
2
  </p><p><em>This file was automatically generated by <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></em>
3
3
  </p>
@@ -4,7 +4,7 @@ type: text/plain
4
4
  TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
5
5
 
6
6
  Copyright (c) 2004-2007, Jeremy Ruston
7
- Copyright (c) 2007-2021, UnaMesa Association
7
+ Copyright (c) 2007-2022, UnaMesa Association
8
8
  All rights reserved.
9
9
 
10
10
  Redistribution and use in source and binary forms, with or without
@@ -36,6 +36,8 @@ EditorTypes/Hint: These tiddlers determine which editor is used to edit specific
36
36
  EditorTypes/Type/Caption: Type
37
37
  EditTemplateBody/Caption: Edit Template Body
38
38
  EditTemplateBody/Hint: This rule cascade is used by the default edit template to dynamically choose the template for editing the body of a tiddler.
39
+ FieldEditor/Caption: Field Editor
40
+ FieldEditor/Hint: This rules cascade is used to dynamically choose the template for rendering a tiddler field based on its name. It is used within the Edit Template.
39
41
  Info/Caption: Info
40
42
  Info/Hint: Information about this TiddlyWiki
41
43
  KeyboardShortcuts/Add/Prompt: Type shortcut here
@@ -226,4 +228,4 @@ Tools/Download/Full/Caption: Download full wiki
226
228
  ViewTemplateBody/Caption: View Template Body
227
229
  ViewTemplateBody/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the body of a tiddler.
228
230
  ViewTemplateTitle/Caption: View Template Title
229
- ViewTemplateTitle/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the title of a tiddler.
231
+ ViewTemplateTitle/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the title of a tiddler.
@@ -3,6 +3,7 @@ title: $:/language/Docs/Fields/
3
3
  _canonical_uri: The full URI of an external image tiddler
4
4
  bag: The name of the bag from which a tiddler came
5
5
  caption: The text to be displayed on a tab or button
6
+ code-body: The view template will display the tiddler as code if set to ''yes''
6
7
  color: The CSS color value associated with a tiddler
7
8
  component: The name of the component responsible for an [[alert tiddler|AlertMechanism]]
8
9
  current-tiddler: Used to cache the top tiddler in a [[history list|HistoryMechanism]]
@@ -13,9 +14,9 @@ description: The descriptive text for a plugin, or a modal dialogue
13
14
  draft.of: For draft tiddlers, contains the title of the tiddler of which this is a draft
14
15
  draft.title: For draft tiddlers, contains the proposed new title of the tiddler
15
16
  footer: The footer text for a wizard
16
- hide-body: The view template will hide bodies of tiddlers if set to: ''yes''
17
+ hide-body: The view template will hide bodies of tiddlers if set to ''yes''
17
18
  icon: The title of the tiddler containing the icon associated with a tiddler
18
- library: Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''
19
+ library: Indicates that a tiddler should be saved as a JavaScript library if set to ''yes''
19
20
  list: An ordered list of tiddler titles associated with a tiddler
20
21
  list-before: If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty
21
22
  list-after: If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty
@@ -32,7 +33,7 @@ tags: A list of tags associated with a tiddler
32
33
  text: The body text of a tiddler
33
34
  throttle.refresh: If present, throttles refreshes of this tiddler
34
35
  title: The unique name of a tiddler
35
- toc-link: Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''
36
+ toc-link: Suppresses the tiddler's link in a Table of Contents tree if set to ''no''
36
37
  type: The content type of a tiddler
37
38
  version: Version information for a plugin
38
39
  _is_skinny: If present, indicates that the tiddler text field must be loaded from the server
@@ -14,7 +14,7 @@ ConfirmAction: Do you wish to proceed?
14
14
  Count: count
15
15
  DefaultNewTiddlerTitle: New Tiddler
16
16
  Diffs/CountMessage: <<diff-count>> differences
17
- DropMessage: Drop here (or use the 'Escape' key to cancel)
17
+ DropMessage: Drop now (or use the 'Escape' key to cancel)
18
18
  Encryption/Cancel: Cancel
19
19
  Encryption/ConfirmClearPassword: Do you wish to clear the password? This will remove the encryption applied when saving this wiki
20
20
  Encryption/PromptSetPassword: Set a new password for this TiddlyWiki
@@ -48,7 +48,7 @@ Command.prototype.execute = function() {
48
48
  }
49
49
  // Tweak the tiddlywiki.info to remove any included wikis
50
50
  var packagePath = $tw.boot.wikiPath + "/tiddlywiki.info",
51
- packageJson = JSON.parse(fs.readFileSync(packagePath));
51
+ packageJson = $tw.utils.parseJSONSafe(fs.readFileSync(packagePath));
52
52
  delete packageJson.includeWikis;
53
53
  fs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));
54
54
  return null;
@@ -69,7 +69,7 @@ Command.prototype.execute = function() {
69
69
  $tw.utils.createFileDirectories(pathname);
70
70
  fs.writeFileSync(pathname,JSON.stringify(tiddler),"utf8");
71
71
  // Collect the skinny list data
72
- var pluginTiddlers = JSON.parse(tiddler.text),
72
+ var pluginTiddlers = $tw.utils.parseJSONSafe(tiddler.text),
73
73
  readmeContent = (pluginTiddlers.tiddlers[title + "/readme"] || {}).text,
74
74
  doesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),
75
75
  iconTiddler = pluginTiddlers.tiddlers[title + "/icon"] || {},
@@ -151,7 +151,7 @@ WikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {
151
151
  pluginInfo = pluginTiddler.getFieldStrings({exclude: ["text","type"]});
152
152
  this.saveJSONFile(directory + path.sep + "plugin.info",pluginInfo);
153
153
  self.log("Writing " + directory + path.sep + "plugin.info: " + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));
154
- var pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin
154
+ var pluginTiddlers = $tw.utils.parseJSONSafe(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin
155
155
  $tw.utils.each(pluginTiddlers,function(tiddler) {
156
156
  self.saveTiddler(directory,new $tw.Tiddler(tiddler));
157
157
  });
@@ -17,16 +17,13 @@ exports["application/x-tiddler-html-div"] = function(text,fields) {
17
17
  };
18
18
 
19
19
  exports["application/json"] = function(text,fields) {
20
- var incoming,
21
- results = [];
22
- try {
23
- incoming = JSON.parse(text);
24
- } catch(e) {
25
- incoming = [{
26
- title: "JSON error: " + e,
27
- text: ""
28
- }]
29
- }
20
+ var results = [],
21
+ incoming = $tw.utils.parseJSONSafe(text,function(err) {
22
+ return [{
23
+ title: "JSON error: " + err,
24
+ text: ""
25
+ }];
26
+ });
30
27
  if(!$tw.utils.isArray(incoming)) {
31
28
  incoming = [incoming];
32
29
  }
@@ -13,15 +13,17 @@ Text editor operation to wrap the selected lines with a prefix and suffix
13
13
  "use strict";
14
14
 
15
15
  exports["wrap-lines"] = function(event,operation) {
16
+ var prefix = event.paramObject.prefix || "",
17
+ suffix = event.paramObject.suffix || "";
16
18
  // Cut just past the preceding line break, or the start of the text
17
19
  operation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);
18
20
  // Cut to just past the following line break, or to the end of the text
19
21
  operation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);
20
22
  // Add the prefix and suffix
21
- operation.replacement = event.paramObject.prefix + "\n" +
23
+ operation.replacement = prefix + "\n" +
22
24
  operation.text.substring(operation.cutStart,operation.cutEnd) + "\n" +
23
- event.paramObject.suffix + "\n";
24
- operation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;
25
+ suffix + "\n";
26
+ operation.newSelStart = operation.cutStart + prefix.length + 1;
25
27
  operation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);
26
28
  };
27
29
 
@@ -0,0 +1,27 @@
1
+ /*\
2
+ title: $:/core/modules/filters/crypto.js
3
+ type: application/javascript
4
+ module-type: filteroperator
5
+
6
+ Filter operators for cryptography, using the Stanford JavaScript library
7
+
8
+ \*/
9
+ (function(){
10
+
11
+ /*jslint node: true, browser: true */
12
+ /*global $tw: false */
13
+ "use strict";
14
+
15
+ exports.sha256 = function(source,operator,options) {
16
+ var results = [],
17
+ length = parseInt(operator.operand,10) || 20,
18
+ sha256 = function(text) {
19
+ return sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(text)).substr(0,length);
20
+ };
21
+ source(function(tiddler,title) {
22
+ results.push(sha256(title));
23
+ });
24
+ return results;
25
+ };
26
+
27
+ })();
@@ -20,7 +20,7 @@ exports.insertbefore = function(source,operator,options) {
20
20
  source(function(tiddler,title) {
21
21
  results.push(title);
22
22
  });
23
- var target = options.widget && options.widget.getVariable(operator.suffix || "currentTiddler");
23
+ var target = operator.operands[1] || (options.widget && options.widget.getVariable(operator.suffix || "currentTiddler"));
24
24
  if(target !== operator.operand) {
25
25
  // Remove the entry from the list if it is present
26
26
  var pos = results.indexOf(operator.operand);
@@ -19,13 +19,13 @@ exports.draft = function(source,prefix,options) {
19
19
  var results = [];
20
20
  if(prefix === "!") {
21
21
  source(function(tiddler,title) {
22
- if(!tiddler || !$tw.utils.hop(tiddler.fields,"draft.of")) {
22
+ if(!tiddler || !tiddler.isDraft()) {
23
23
  results.push(title);
24
24
  }
25
25
  });
26
26
  } else {
27
27
  source(function(tiddler,title) {
28
- if(tiddler && $tw.utils.hop(tiddler.fields,"draft.of") && (tiddler.fields["draft.of"].length !== 0)) {
28
+ if(tiddler && tiddler.isDraft()) {
29
29
  results.push(title);
30
30
  }
31
31
  });
@@ -87,7 +87,8 @@ exports.butlast = function(source,operator,options) {
87
87
  source(function(tiddler,title) {
88
88
  results.push(title);
89
89
  });
90
- return results.slice(0,-count);
90
+ var index = count === 0 ? results.length : -count;
91
+ return results.slice(0,index);
91
92
  };
92
93
  exports.bl = exports.butlast;
93
94
 
@@ -5,9 +5,11 @@ module-type: filteroperator
5
5
 
6
6
  Filter operator that looks up values via a title prefix
7
7
 
8
- [lookup:<field>[<prefix>]]
8
+ [lookup:<defaultvalue>:<field OR index>[<prefix>],[<field-name OR index-name>]]
9
9
 
10
- Prepends the prefix to the selected items and returns the specified field value
10
+ Prepends the prefix to the selected items and returns the specified
11
+ field or index value. If the 2nd suffix does not exist, it defaults to field.
12
+ If the second operand is missing it defaults to "text" for fields, and "0" for indexes
11
13
 
12
14
  \*/
13
15
  (function(){
@@ -20,10 +22,31 @@ Prepends the prefix to the selected items and returns the specified field value
20
22
  Export our filter function
21
23
  */
22
24
  exports.lookup = function(source,operator,options) {
23
- var results = [];
24
- source(function(tiddler,title) {
25
- results.push(options.wiki.getTiddlerText(operator.operand + title) || operator.suffix || '');
26
- });
25
+ var results = [],
26
+ suffixes = operator.suffixes || [],
27
+ defaultSuffix = suffixes[0] ? (suffixes[0][0] || "") : "",
28
+ indexSuffix = (suffixes[1] && suffixes[1][0] === "index") ? true : false,
29
+ target;
30
+ if(operator.operands.length == 2) {
31
+ target = operator.operands[1]
32
+ } else {
33
+ target = indexSuffix ? "0": "text";
34
+ }
35
+ if(indexSuffix) {
36
+ source(function(tiddler,title) {
37
+ var data = options.wiki.extractTiddlerDataItem(operator.operands[0]+title,target,defaultSuffix);
38
+ results.push(data);
39
+ });
40
+ } else {
41
+ source(function(tiddler,title) {
42
+ var value = defaultSuffix;
43
+ var targetTiddler = options.wiki.getTiddler(operator.operands[0]+title);
44
+ if(targetTiddler && targetTiddler.getFieldString(target)) {
45
+ value = targetTiddler.getFieldString(target);
46
+ }
47
+ results.push(value);
48
+ });
49
+ }
27
50
  return results;
28
51
  };
29
52