From 0a220a09da9e8eeb6f507bad6b695505ba8d44f2 Mon Sep 17 00:00:00 2001
From: Evolena
Date: Wed, 14 Oct 2015 20:25:11 +0200
Subject: [PATCH] Text-slicer: Add support for definition lists
---
editions/text-slicer/tiddlers/Sample Text.tid | 7 +++
plugins/tiddlywiki/text-slicer/docs.tid | 26 +++++++++++
.../text-slicer/modules/slicers/def-list.js | 40 +++++++++++++++++
.../text-slicer/modules/slicers/definition.js | 44 +++++++++++++++++++
.../text-slicer/modules/slicers/term.js | 44 +++++++++++++++++++
.../templates/interactive/def-list.tid | 11 +++++
.../templates/interactive/definition.tid | 11 +++++
.../templates/interactive/term.tid | 11 +++++
.../templates/interactive/tiddler.tid | 12 +++++
.../text-slicer/templates/plain/def-list.tid | 11 +++++
.../templates/plain/definition.tid | 11 +++++
.../text-slicer/templates/plain/term.tid | 11 +++++
.../text-slicer/templates/plain/tiddler.tid | 12 +++++
.../text-slicer/templates/static/def-list.tid | 11 +++++
.../templates/static/definition.tid | 9 ++++
.../text-slicer/templates/static/term.tid | 9 ++++
.../text-slicer/templates/static/tiddler.tid | 18 ++++++++
17 files changed, 298 insertions(+)
create mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js
create mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/definition.js
create mode 100644 plugins/tiddlywiki/text-slicer/modules/slicers/term.js
create mode 100644 plugins/tiddlywiki/text-slicer/templates/interactive/def-list.tid
create mode 100644 plugins/tiddlywiki/text-slicer/templates/interactive/definition.tid
create mode 100644 plugins/tiddlywiki/text-slicer/templates/interactive/term.tid
create mode 100644 plugins/tiddlywiki/text-slicer/templates/plain/def-list.tid
create mode 100644 plugins/tiddlywiki/text-slicer/templates/plain/definition.tid
create mode 100644 plugins/tiddlywiki/text-slicer/templates/plain/term.tid
create mode 100644 plugins/tiddlywiki/text-slicer/templates/static/def-list.tid
create mode 100644 plugins/tiddlywiki/text-slicer/templates/static/definition.tid
create mode 100644 plugins/tiddlywiki/text-slicer/templates/static/term.tid
diff --git a/editions/text-slicer/tiddlers/Sample Text.tid b/editions/text-slicer/tiddlers/Sample Text.tid
index 0c15eb858..b44e6a9ae 100644
--- a/editions/text-slicer/tiddlers/Sample Text.tid
+++ b/editions/text-slicer/tiddlers/Sample Text.tid
@@ -104,6 +104,13 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor i
Dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+
+- Term being defined
+- Definition of that term
+- Another term
+- Another definition
+
+
Story
diff --git a/plugins/tiddlywiki/text-slicer/docs.tid b/plugins/tiddlywiki/text-slicer/docs.tid
index ddfe508ec..98f5edbf7 100644
--- a/plugins/tiddlywiki/text-slicer/docs.tid
+++ b/plugins/tiddlywiki/text-slicer/docs.tid
@@ -144,6 +144,32 @@ The tiddlers representing items within the list have the following fields:
* ''text'': the text of the list item
* ''tags'': any CSS classes found in the HTML are converted into tags
+!!! Definition lists
+
+Definition lists are represented by several tiddlers: one for the definition list itself, and one for each term and definition in the list.
+
+The tiddler representing the definition list itself has the following fields:
+
+* ''toc-type'': the text "def-list"
+* ''toc-list-filter'': the default filter used to generate the titles of the list-items
+* ''title'': an automatically generated unique title
+* ''list'': ordered list of titles of tiddlers representing the items (terms and/or definition) in the definition list
+* ''tags'': any CSS classes found in the HTML are converted into tags
+
+The tiddlers representing terms within the definition list have the following fields:
+
+* ''toc-type'': the text "term"
+* ''title'': an automatically generated unique title
+* ''text'': the text of the definition list term
+* ''tags'': any CSS classes found in the HTML are converted into tags
+
+The tiddlers representing definitions within the definition list have the following fields:
+
+* ''toc-type'': the text "definition"
+* ''title'': an automatically generated unique title
+* ''text'' : the text of the definition list definition
+* ''tags'': any CSS classes found in the HTML are converted into tags
+
!!! Images
Tiddlers representing images have the following fields:
diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js b/plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js
new file mode 100644
index 000000000..bfcdce28e
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js
@@ -0,0 +1,40 @@
+/*\
+title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/def-list.js
+type: application/javascript
+module-type: slicer
+
+Handle slicing definition list nodes
+
+\*/
+(function(){
+
+/*jslint node: true, browser: true */
+/*global $tw: false */
+"use strict";
+
+exports.processDefListNode = function(domNode,tagName) {
+ if(domNode.nodeType === 1 && tagName === "dl") {
+ var title = this.makeUniqueTitle("def-list-" + tagName),
+ parentTitle = this.parentStack[this.parentStack.length - 1].title,
+ tags = [];
+ if(domNode.className.trim() !== "") {
+ tags = tags.concat(domNode.className.split(" "));
+ }
+ this.addToList(parentTitle,title);
+ this.parentStack.push({type: tagName, title: this.addTiddler({
+ "toc-type": "def-list",
+ "toc-list-filter": "[list!has[draft.of]]",
+ text: "",
+ title: title,
+ list: [],
+ tags: tags
+ })});
+ this.currentTiddler = title;
+ this.processNodeList(domNode.childNodes);
+ this.parentStack.pop();
+ return true;
+ }
+ return false;
+};
+
+})();
diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js b/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js
new file mode 100644
index 000000000..dc9a6d601
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js
@@ -0,0 +1,44 @@
+/*\
+title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/definition.js
+type: application/javascript
+module-type: slicer
+
+Handle slicing definition list definition nodes
+
+\*/
+(function(){
+
+/*jslint node: true, browser: true */
+/*global $tw: false */
+"use strict";
+
+exports.processDefinitionItemNode = function(domNode,tagName) {
+ var text = $tw.utils.htmlEncode(domNode.textContent);
+ if(domNode.nodeType === 1 && tagName === "dd") {
+ // if(!this.isBlank(text)) {
+ var title = this.makeUniqueTitle("definition",text),
+ parentTitle = this.parentStack[this.parentStack.length - 1].title,
+ tags = [];
+ if(domNode.className.trim() !== "") {
+ tags = tags.concat(domNode.className.split(" "));
+ }
+ this.addToList(parentTitle,title);
+ this.addTiddler({
+ "toc-type": "definition",
+ title: title,
+ text: "",
+ list: [],
+ tags: tags
+ });
+ this.currentTiddler = title;
+ this.containerStack.push(title);
+ // this.containerStack.push("Just testing" + new Date());
+ this.processNodeList(domNode.childNodes);
+ this.containerStack.pop();
+ return true;
+ // }
+ }
+ return false;
+};
+
+})();
diff --git a/plugins/tiddlywiki/text-slicer/modules/slicers/term.js b/plugins/tiddlywiki/text-slicer/modules/slicers/term.js
new file mode 100644
index 000000000..0f340b60e
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/modules/slicers/term.js
@@ -0,0 +1,44 @@
+/*\
+title: $:/plugins/tiddlywiki/text-slicer/modules/slicers/term.js
+type: application/javascript
+module-type: slicer
+
+Handle slicing definition list term nodes
+
+\*/
+(function(){
+
+/*jslint node: true, browser: true */
+/*global $tw: false */
+"use strict";
+
+exports.processTermItemNode = function(domNode,tagName) {
+ var text = $tw.utils.htmlEncode(domNode.textContent);
+ if(domNode.nodeType === 1 && tagName === "dt") {
+ // if(!this.isBlank(text)) {
+ var title = this.makeUniqueTitle("term",text),
+ parentTitle = this.parentStack[this.parentStack.length - 1].title,
+ tags = [];
+ if(domNode.className.trim() !== "") {
+ tags = tags.concat(domNode.className.split(" "));
+ }
+ this.addToList(parentTitle,title);
+ this.addTiddler({
+ "toc-type": "term",
+ title: title,
+ text: "",
+ list: [],
+ tags: tags
+ });
+ this.currentTiddler = title;
+ this.containerStack.push(title);
+ // this.containerStack.push("Just testing" + new Date());
+ this.processNodeList(domNode.childNodes);
+ this.containerStack.pop();
+ return true;
+ // }
+ }
+ return false;
+};
+
+})();
diff --git a/plugins/tiddlywiki/text-slicer/templates/interactive/def-list.tid b/plugins/tiddlywiki/text-slicer/templates/interactive/def-list.tid
new file mode 100644
index 000000000..34550c541
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/templates/interactive/def-list.tid
@@ -0,0 +1,11 @@
+title: $:/plugins/tiddlywiki/text-slicer/templates/interactive/def-list
+
+\define body()
+
+<$list filter="""[all[current]] $(tv-exclude-filter)$ +[limit[1]]""" variable="item">
+<$list filter={{!!toc-list-filter}} template="$:/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler"/>
+$list>
+
+\end
+
+<>
diff --git a/plugins/tiddlywiki/text-slicer/templates/interactive/definition.tid b/plugins/tiddlywiki/text-slicer/templates/interactive/definition.tid
new file mode 100644
index 000000000..d4a4b4668
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/templates/interactive/definition.tid
@@ -0,0 +1,11 @@
+title: $:/plugins/tiddlywiki/text-slicer/templates/interactive/definition
+
+\define body()
+<$link tag="dd" class="tc-document-tiddler-link">
+
+<$transclude/>
+
+$link>
+\end
+
+<>
diff --git a/plugins/tiddlywiki/text-slicer/templates/interactive/term.tid b/plugins/tiddlywiki/text-slicer/templates/interactive/term.tid
new file mode 100644
index 000000000..ab3f2076e
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/templates/interactive/term.tid
@@ -0,0 +1,11 @@
+title: $:/plugins/tiddlywiki/text-slicer/templates/interactive/term
+
+\define body()
+<$link tag="dt" class="tc-document-tiddler-link">
+
+<$transclude/>
+
+$link>
+\end
+
+<>
diff --git a/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler.tid b/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler.tid
index 359bec82e..fd98e761a 100644
--- a/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler.tid
+++ b/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler.tid
@@ -27,3 +27,15 @@ title: $:/plugins/tiddlywiki/text-slicer/templates/interactive/tiddler
<$reveal type="match" state="!!toc-type" text="image">
<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/image" mode="block"/>
$reveal>
+
+<$reveal type="match" state="!!toc-type" text="def-list">
+<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/def-list" mode="block"/>
+$reveal>
+
+<$reveal type="match" state="!!toc-type" text="term">
+<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/term" mode="block"/>
+$reveal>
+
+<$reveal type="match" state="!!toc-type" text="definition">
+<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/interactive/definition" mode="block"/>
+$reveal>
diff --git a/plugins/tiddlywiki/text-slicer/templates/plain/def-list.tid b/plugins/tiddlywiki/text-slicer/templates/plain/def-list.tid
new file mode 100644
index 000000000..5eb7eb22a
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/templates/plain/def-list.tid
@@ -0,0 +1,11 @@
+title: $:/plugins/tiddlywiki/text-slicer/templates/plain/def-list
+
+\define body()
+
+<$list filter="""[all[current]] $(tv-exclude-filter)$ +[limit[1]]""" variable="item">
+<$list filter={{!!toc-list-filter}} template="$:/plugins/tiddlywiki/text-slicer/templates/plain/tiddler"/>
+$list>
+
+\end
+
+<>
diff --git a/plugins/tiddlywiki/text-slicer/templates/plain/definition.tid b/plugins/tiddlywiki/text-slicer/templates/plain/definition.tid
new file mode 100644
index 000000000..b41f40472
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/templates/plain/definition.tid
@@ -0,0 +1,11 @@
+title: $:/plugins/tiddlywiki/text-slicer/templates/plain/definition
+
+\define body()
+-
+
+<$transclude/>
+
+
+\end
+
+<>
diff --git a/plugins/tiddlywiki/text-slicer/templates/plain/term.tid b/plugins/tiddlywiki/text-slicer/templates/plain/term.tid
new file mode 100644
index 000000000..3413f9a10
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/templates/plain/term.tid
@@ -0,0 +1,11 @@
+title: $:/plugins/tiddlywiki/text-slicer/templates/plain/term
+
+\define body()
+-
+
+<$transclude/>
+
+
+\end
+
+<>
diff --git a/plugins/tiddlywiki/text-slicer/templates/plain/tiddler.tid b/plugins/tiddlywiki/text-slicer/templates/plain/tiddler.tid
index b5620c6c0..390c2e308 100644
--- a/plugins/tiddlywiki/text-slicer/templates/plain/tiddler.tid
+++ b/plugins/tiddlywiki/text-slicer/templates/plain/tiddler.tid
@@ -26,4 +26,16 @@ title: $:/plugins/tiddlywiki/text-slicer/templates/plain/tiddler
<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/plain/image" mode="block"/>
$list>
+<$list filter="[prefix[def-list]]" variable="item">
+<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/plain/def-list" mode="block"/>
+$list>
+
+<$list filter="[prefix[term]]" variable="item">
+<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/plain/term" mode="block"/>
+$list>
+
+<$list filter="[prefix[definition]]" variable="item">
+<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/plain/definition" mode="block"/>
+$list>
+
$vars>
diff --git a/plugins/tiddlywiki/text-slicer/templates/static/def-list.tid b/plugins/tiddlywiki/text-slicer/templates/static/def-list.tid
new file mode 100644
index 000000000..51467b45b
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/templates/static/def-list.tid
@@ -0,0 +1,11 @@
+title: $:/plugins/tiddlywiki/text-slicer/templates/static/def-list
+
+<$list filter="""[all[current]] $(tv-exclude-filter)$ +[limit[1]]""" variable="item">
+
+``
+
+<$list filter={{!!toc-list-filter}} template="$:/plugins/tiddlywiki/text-slicer/templates/static/tiddler"/>
+
+`
`
+
+$list>
diff --git a/plugins/tiddlywiki/text-slicer/templates/static/definition.tid b/plugins/tiddlywiki/text-slicer/templates/static/definition.tid
new file mode 100644
index 000000000..196a27aa2
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/templates/static/definition.tid
@@ -0,0 +1,9 @@
+title: $:/plugins/tiddlywiki/text-slicer/templates/static/definition
+
+`- `
+
+<$transclude/>
+
+`
`
+
+<$list filter="[list!has[draft.of]]" template="$:/plugins/tiddlywiki/text-slicer/templates/static/tiddler"/>
diff --git a/plugins/tiddlywiki/text-slicer/templates/static/term.tid b/plugins/tiddlywiki/text-slicer/templates/static/term.tid
new file mode 100644
index 000000000..7ffed5900
--- /dev/null
+++ b/plugins/tiddlywiki/text-slicer/templates/static/term.tid
@@ -0,0 +1,9 @@
+title: $:/plugins/tiddlywiki/text-slicer/templates/static/term
+
+`- `
+
+<$transclude/>
+
+`
`
+
+<$list filter="[list!has[draft.of]]" template="$:/plugins/tiddlywiki/text-slicer/templates/static/tiddler"/>
diff --git a/plugins/tiddlywiki/text-slicer/templates/static/tiddler.tid b/plugins/tiddlywiki/text-slicer/templates/static/tiddler.tid
index 5bdde1a31..bd8e1e822 100644
--- a/plugins/tiddlywiki/text-slicer/templates/static/tiddler.tid
+++ b/plugins/tiddlywiki/text-slicer/templates/static/tiddler.tid
@@ -38,4 +38,22 @@ title: $:/plugins/tiddlywiki/text-slicer/templates/static/tiddler
$list>
+<$list filter="[prefix[def-list]]" variable="item">
+
+<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/static/def-list" mode="block"/>
+
+$list>
+
+<$list filter="[prefix[term]]" variable="item">
+
+<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/static/term" mode="block"/>
+
+$list>
+
+<$list filter="[prefix[definition]]" variable="item">
+
+<$transclude tiddler="$:/plugins/tiddlywiki/text-slicer/templates/static/definition" mode="block"/>
+
+$list>
+
$vars>