Commits

Lynn Rees committed e711c6c Merge

Comments (0)

Files changed (11)

 <?xml version="1.0" encoding="UTF-8"?>
 <classpath>
 	<classpathentry kind="src" path="scripts"/>
-	<classpathentry kind="lib" path="zips/scripts/wikd.jar"/>
+	<classpathentry exported="true" kind="con" path="GROOVY_DSL_SUPPORT"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_framework"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_mac"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_plugin_bugreport"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_plugin_formula"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_plugin_help"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_plugin_latex"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_plugin_openmaps"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_plugin_script"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_plugin_script_test"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_plugin_svg"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_plugin_uispec4j"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/freeplane_uitest"/>
+	<classpathentry combineaccessrules="false" exported="true" kind="src" path="/JOrtho_0.4_freeplane"/>
+	<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
 	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_framework"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_mac"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_plugin_bugreport"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_plugin_formula"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_plugin_help"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_plugin_latex"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_plugin_openmaps"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_plugin_script"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_plugin_script_test"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_plugin_svg"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_plugin_uispec4j"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/freeplane_uitest"/>
-	<classpathentry combineaccessrules="false" kind="src" path="/JOrtho_0.4_freeplane"/>
-	<classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
-	<classpathentry exported="true" kind="con" path="GROOVY_DSL_SUPPORT"/>
 	<classpathentry kind="output" path="bin"/>
 </classpath>

part/_joinChars.groovy

+pick(ui.showInputDialog(node.delegate, 'Enter characters to join nodes with...', ''))

part/_joinComma.groovy

+pick(', ')

part/_joinPeriod.groovy

+pick('. ')

part/_joinSpace.groovy

+pick(' ')

scripts/joinChars.groovy

 // @CacheScriptContent(true)
 // @ExecutionModes({ON_SINGLE_NODE})
+import org.apache.commons.lang.StringUtils as SU
+import org.freeplane.core.util.HtmlUtils as HU
 
-import org.hardknots.wikd.wikdnode.WikdNode
+def joinPlain(String mark) {
+	node.text = SU.join(
+			c.selecteds.collect { SU.trim(it.plainText) }.toArray(), mark
+			)
+	c.selecteds.tail().each { it.delete() }
+}
 
-WikdNode.joinPlain(ui.showInputDialog(
-	node.delegate, 'Enter characters to join nodes with...', ''
-))
+def joinAll(String mark) {
+	// core text
+	def core, coreMarkup
+	def cores = []
+	def coreHtml = false
+	def coreHtmlNode = false
+	// note text
+	def note, noteMarkup
+	def notes = []
+	def noteHtml = false
+	def noteHtmlNode = false
+	// details text
+	def detail, detailMarkup
+	def details = []
+	def detailHtml = false
+	def detailHtmlNode = false
+	// all children
+	def children = []
+	// all icons
+	def icons = []
+
+	// classify
+	c.selecteds.each { n ->
+		// core text
+		if (n.text != null ) {
+			core = n.text
+			coreHtmlNode = HU.isHtmlNode(core)
+			cores.add(core)
+			coreHtml = coreHtml || coreHtmlNode
+		}
+		// note text
+		if (n.note != null) {
+			note = n.noteText
+			noteHtmlNode = HU.isHtmlNode(note)
+			notes.add(note)
+			noteHtml = noteHtml || noteHtmlNode
+		}
+		if (n.details != null) {
+			// detail text
+			detail = n.detailsText
+			detailHtmlNode = HU.isHtmlNode(detail)
+			details.add(detail)
+			detailHtml = detailHtml || detailHtmlNode
+		}
+		// children
+		if (!n.children.empty()) {
+			children.addAll(n.children)
+		}
+		// icons
+		if (n.icons != null) {
+			icons.addAll(n.icons?.icons)
+		}
+	}
+
+	def tmpMarkup, writer, body
+
+	// core texts
+	if (!cores.empty()) {
+		// core texts with HTML
+		if (coreHtml) {
+			coreMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = coreMarkup.body
+			cores.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(coreMarkup)
+			node.text = writer.toString()
+			// core texts without
+		} else {
+			node.text = SU.join(cores.toArray(), mark)
+		}
+	}
+
+	// notes
+	if (!notes.empty()) {
+		// notes with HTML
+		if (noteHtml) {
+			noteMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = noteMarkup.body
+			notes.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(noteMarkup)
+			node.noteText = writer.toString()
+			// notes without
+		} else {
+			node.noteText = SU.join(notes.toArray(), mark)
+		}
+	}
+
+	// details
+	if (!details.empty()) {
+		// details with HTML
+		if (detailHtml) {
+			detailMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = detailMarkup.body
+			details.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(detailMarkup)
+			node.detailsText = writer.toString()
+			// details without
+		} else {
+			node.detailsText = SU.join(details.toArray(), mark)
+		}
+	}
+
+	// icons
+	if (!icons.empty()) {
+		node.icons?.icons?.clear()
+		icons.each { node.icons.add(it) }
+	}
+	// children
+	if (!children.empty()) {
+		children.each { node.appendChild(it) }
+	}
+
+	// cleanup
+	c.selecteds.tail().each { it.delete() }
+
+	// present
+	c.select(node)
+	c.centerOnNode(node)
+}
+
+def pick(String mark) {
+	if (mark != null) {
+		mark = mark ? mark : ''
+		if (Boolean.parseBoolean(config.getProperty('wikd_plain_text'))) {
+			joinPlain(mark)
+		} else {
+			joinAll(mark)
+		}
+	}
+}
+pick(ui.showInputDialog(node.delegate, 'Enter characters to join nodes with...', ''))

scripts/joinComma.groovy

 // @CacheScriptContent(true)
 // @ExecutionModes({ON_SINGLE_NODE})
+import org.apache.commons.lang.StringUtils as SU
+import org.freeplane.core.util.HtmlUtils as HU
 
-import org.hardknots.wikd.wikdnode.WikdNode
+def joinPlain(String mark) {
+	node.text = SU.join(
+			c.selecteds.collect { SU.trim(it.plainText) }.toArray(), mark
+			)
+	c.selecteds.tail().each { it.delete() }
+}
 
-WikdNode.joinPlain(', ')
+def joinAll(String mark) {
+	// core text
+	def core, coreMarkup
+	def cores = []
+	def coreHtml = false
+	def coreHtmlNode = false
+	// note text
+	def note, noteMarkup
+	def notes = []
+	def noteHtml = false
+	def noteHtmlNode = false
+	// details text
+	def detail, detailMarkup
+	def details = []
+	def detailHtml = false
+	def detailHtmlNode = false
+	// all children
+	def children = []
+	// all icons
+	def icons = []
+
+	// classify
+	c.selecteds.each { n ->
+		// core text
+		if (n.text != null ) {
+			core = n.text
+			coreHtmlNode = HU.isHtmlNode(core)
+			cores.add(core)
+			coreHtml = coreHtml || coreHtmlNode
+		}
+		// note text
+		if (n.note != null) {
+			note = n.noteText
+			noteHtmlNode = HU.isHtmlNode(note)
+			notes.add(note)
+			noteHtml = noteHtml || noteHtmlNode
+		}
+		if (n.details != null) {
+			// detail text
+			detail = n.detailsText
+			detailHtmlNode = HU.isHtmlNode(detail)
+			details.add(detail)
+			detailHtml = detailHtml || detailHtmlNode
+		}
+		// children
+		if (!n.children.empty()) {
+			children.addAll(n.children)
+		}
+		// icons
+		if (n.icons != null) {
+			icons.addAll(n.icons?.icons)
+		}
+	}
+
+	def tmpMarkup, writer, body
+
+	// core texts
+	if (!cores.empty()) {
+		// core texts with HTML
+		if (coreHtml) {
+			coreMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = coreMarkup.body
+			cores.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(coreMarkup)
+			node.text = writer.toString()
+			// core texts without
+		} else {
+			node.text = SU.join(cores.toArray(), mark)
+		}
+	}
+
+	// notes
+	if (!notes.empty()) {
+		// notes with HTML
+		if (noteHtml) {
+			noteMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = noteMarkup.body
+			notes.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(noteMarkup)
+			node.noteText = writer.toString()
+			// notes without
+		} else {
+			node.noteText = SU.join(notes.toArray(), mark)
+		}
+	}
+
+	// details
+	if (!details.empty()) {
+		// details with HTML
+		if (detailHtml) {
+			detailMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = detailMarkup.body
+			details.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(detailMarkup)
+			node.detailsText = writer.toString()
+			// details without
+		} else {
+			node.detailsText = SU.join(details.toArray(), mark)
+		}
+	}
+
+	// icons
+	if (!icons.empty()) {
+		node.icons?.icons?.clear()
+		icons.each { node.icons.add(it) }
+	}
+	// children
+	if (!children.empty()) {
+		children.each { node.appendChild(it) }
+	}
+
+	// cleanup
+	c.selecteds.tail().each { it.delete() }
+
+	// present
+	c.select(node)
+	c.centerOnNode(node)
+}
+
+def pick(String mark) {
+	if (mark != null) {
+		mark = mark ? mark : ''
+		if (Boolean.parseBoolean(config.getProperty('wikd_plain_text'))) {
+			joinPlain(mark)
+		} else {
+			joinAll(mark)
+		}
+	}
+}
+pick(', ')

scripts/joinPeriod.groovy

 // @CacheScriptContent(true)
 // @ExecutionModes({ON_SINGLE_NODE})
+import org.apache.commons.lang.StringUtils as SU
+import org.freeplane.core.util.HtmlUtils as HU
 
-import org.hardknots.wikd.wikdnode.WikdNode
+def joinPlain(String mark) {
+	node.text = SU.join(
+			c.selecteds.collect { SU.trim(it.plainText) }.toArray(), mark
+			)
+	c.selecteds.tail().each { it.delete() }
+}
 
-WikdNode.joinPlain('. ')
+def joinAll(String mark) {
+	// core text
+	def core, coreMarkup
+	def cores = []
+	def coreHtml = false
+	def coreHtmlNode = false
+	// note text
+	def note, noteMarkup
+	def notes = []
+	def noteHtml = false
+	def noteHtmlNode = false
+	// details text
+	def detail, detailMarkup
+	def details = []
+	def detailHtml = false
+	def detailHtmlNode = false
+	// all children
+	def children = []
+	// all icons
+	def icons = []
+
+	// classify
+	c.selecteds.each { n ->
+		// core text
+		if (n.text != null ) {
+			core = n.text
+			coreHtmlNode = HU.isHtmlNode(core)
+			cores.add(core)
+			coreHtml = coreHtml || coreHtmlNode
+		}
+		// note text
+		if (n.note != null) {
+			note = n.noteText
+			noteHtmlNode = HU.isHtmlNode(note)
+			notes.add(note)
+			noteHtml = noteHtml || noteHtmlNode
+		}
+		if (n.details != null) {
+			// detail text
+			detail = n.detailsText
+			detailHtmlNode = HU.isHtmlNode(detail)
+			details.add(detail)
+			detailHtml = detailHtml || detailHtmlNode
+		}
+		// children
+		if (!n.children.empty()) {
+			children.addAll(n.children)
+		}
+		// icons
+		if (n.icons != null) {
+			icons.addAll(n.icons?.icons)
+		}
+	}
+
+	def tmpMarkup, writer, body
+
+	// core texts
+	if (!cores.empty()) {
+		// core texts with HTML
+		if (coreHtml) {
+			coreMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = coreMarkup.body
+			cores.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(coreMarkup)
+			node.text = writer.toString()
+			// core texts without
+		} else {
+			node.text = SU.join(cores.toArray(), mark)
+		}
+	}
+
+	// notes
+	if (!notes.empty()) {
+		// notes with HTML
+		if (noteHtml) {
+			noteMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = noteMarkup.body
+			notes.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(noteMarkup)
+			node.noteText = writer.toString()
+			// notes without
+		} else {
+			node.noteText = SU.join(notes.toArray(), mark)
+		}
+	}
+
+	// details
+	if (!details.empty()) {
+		// details with HTML
+		if (detailHtml) {
+			detailMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = detailMarkup.body
+			details.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(detailMarkup)
+			node.detailsText = writer.toString()
+			// details without
+		} else {
+			node.detailsText = SU.join(details.toArray(), mark)
+		}
+	}
+
+	// icons
+	if (!icons.empty()) {
+		node.icons?.icons?.clear()
+		icons.each { node.icons.add(it) }
+	}
+	// children
+	if (!children.empty()) {
+		children.each { node.appendChild(it) }
+	}
+
+	// cleanup
+	c.selecteds.tail().each { it.delete() }
+
+	// present
+	c.select(node)
+	c.centerOnNode(node)
+}
+
+def pick(String mark) {
+	if (mark != null) {
+		mark = mark ? mark : ''
+		if (Boolean.parseBoolean(config.getProperty('wikd_plain_text'))) {
+			joinPlain(mark)
+		} else {
+			joinAll(mark)
+		}
+	}
+}
+pick('. ')

scripts/joinSpace.groovy

 // @CacheScriptContent(true)
 // @ExecutionModes({ON_SINGLE_NODE})
+import org.apache.commons.lang.StringUtils as SU
+import org.freeplane.core.util.HtmlUtils as HU
 
-import org.hardknots.wikd.wikdnode.WikdNode
+def joinPlain(String mark) {
+	node.text = SU.join(
+			c.selecteds.collect { SU.trim(it.plainText) }.toArray(), mark
+			)
+	c.selecteds.tail().each { it.delete() }
+}
 
-WikdNode.joinPlain(' ')
+def joinAll(String mark) {
+	// core text
+	def core, coreMarkup
+	def cores = []
+	def coreHtml = false
+	def coreHtmlNode = false
+	// note text
+	def note, noteMarkup
+	def notes = []
+	def noteHtml = false
+	def noteHtmlNode = false
+	// details text
+	def detail, detailMarkup
+	def details = []
+	def detailHtml = false
+	def detailHtmlNode = false
+	// all children
+	def children = []
+	// all icons
+	def icons = []
+
+	// classify
+	c.selecteds.each { n ->
+		// core text
+		if (n.text != null ) {
+			core = n.text
+			coreHtmlNode = HU.isHtmlNode(core)
+			cores.add(core)
+			coreHtml = coreHtml || coreHtmlNode
+		}
+		// note text
+		if (n.note != null) {
+			note = n.noteText
+			noteHtmlNode = HU.isHtmlNode(note)
+			notes.add(note)
+			noteHtml = noteHtml || noteHtmlNode
+		}
+		if (n.details != null) {
+			// detail text
+			detail = n.detailsText
+			detailHtmlNode = HU.isHtmlNode(detail)
+			details.add(detail)
+			detailHtml = detailHtml || detailHtmlNode
+		}
+		// children
+		if (!n.children.empty()) {
+			children.addAll(n.children)
+		}
+		// icons
+		if (n.icons != null) {
+			icons.addAll(n.icons?.icons)
+		}
+	}
+
+	def tmpMarkup, writer, body
+
+	// core texts
+	if (!cores.empty()) {
+		// core texts with HTML
+		if (coreHtml) {
+			coreMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = coreMarkup.body
+			cores.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(coreMarkup)
+			node.text = writer.toString()
+			// core texts without
+		} else {
+			node.text = SU.join(cores.toArray(), mark)
+		}
+	}
+
+	// notes
+	if (!notes.empty()) {
+		// notes with HTML
+		if (noteHtml) {
+			noteMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = noteMarkup.body
+			notes.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(noteMarkup)
+			node.noteText = writer.toString()
+			// notes without
+		} else {
+			node.noteText = SU.join(notes.toArray(), mark)
+		}
+	}
+
+	// details
+	if (!details.empty()) {
+		// details with HTML
+		if (detailHtml) {
+			detailMarkup = new XmlParser().parseText('<html><body></body></html>')
+			body = detailMarkup.body
+			details.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body.each { part ->
+					body?.appendNode(part)
+					body?.appendNode(mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(detailMarkup)
+			node.detailsText = writer.toString()
+			// details without
+		} else {
+			node.detailsText = SU.join(details.toArray(), mark)
+		}
+	}
+
+	// icons
+	if (!icons.empty()) {
+		node.icons?.icons?.clear()
+		icons.each { node.icons.add(it) }
+	}
+	// children
+	if (!children.empty()) {
+		children.each { node.appendChild(it) }
+	}
+
+	// cleanup
+	c.selecteds.tail().each { it.delete() }
+
+	// present
+	c.select(node)
+	c.centerOnNode(node)
+}
+
+def pick(String mark) {
+	if (mark != null) {
+		mark = mark ? mark : ''
+		if (Boolean.parseBoolean(config.getProperty('wikd_plain_text'))) {
+			joinPlain(mark)
+		} else {
+			joinAll(mark)
+		}
+	}
+}
+pick(' ')

shared/join.groovy

+import org.apache.commons.lang.StringUtils as SU
+import org.freeplane.core.util.HtmlUtils as HU
+
+def joinPlain(String mark) {
+	node.text = SU.join(
+			c.selecteds.collect { SU.trim(it.plainText) }.toArray(), mark
+			)
+	c.selecteds.tail().each { it.delete() }
+}
+
+def joinAll(String mark) {
+	// core text
+	def core, coreMarkup
+	def cores = []
+	def coreHtml = false
+	def coreHtmlNode = false
+	// note text
+	def note, noteMarkup
+	def notes = []
+	def noteHtml = false
+	def noteHtmlNode = false
+	// details text
+	def detail, detailMarkup
+	def details = []
+	def detailHtml = false
+	def detailHtmlNode = false
+	// all children
+	def children = []
+	// all icons
+	def icons = []
+
+	// classify
+	c.selecteds.each { n ->
+		// core text
+		if (n.text != null ) {
+			core = n.text
+			coreHtmlNode = HU.isHtmlNode(core)
+			cores.add(core)
+			coreHtml = coreHtml || coreHtmlNode
+		}
+		// note text
+		if (n.note != null) {
+			note = n.noteText
+			noteHtmlNode = HU.isHtmlNode(note)
+			notes.add(note)
+			noteHtml = noteHtml || noteHtmlNode
+		}
+		if (n.details != null) {
+			// detail text
+			detail = n.detailsText
+			detailHtmlNode = HU.isHtmlNode(detail)
+			details.add(detail)
+			detailHtml = detailHtml || detailHtmlNode
+		}
+		// children
+		//if (!n.children.empty()) {
+		//	children.addAll(n.children)
+		//}
+		// icons
+		if (n.icons != null) {
+			icons.addAll(n.icons?.icons)
+		}
+	}
+
+	def tmpMarkup, writer, body
+
+	// core texts
+	if (cores.size() > 0) {
+		// core texts with HTML
+		if (coreHtml) {
+			coreMarkup = new XmlParser().parseText(
+					'<html><head></head><body></body></html>'
+					)
+			head = coreMarkup.head[0]
+			body = coreMarkup.body[0]
+			cores.each {
+				if (HU.isHtmlNode(it)) {
+					tmpMarkup = new XmlParser().parseText(it)
+					if (tmpMarkup.head) {
+						tmpMarkup.head?.children().each { part ->
+							head.append(part.clone())
+						}
+					}
+					tmpMarkup.body[0].children().each { part ->
+						body.append(part.clone())
+						body.appendNode('span', mark)
+					}
+				} else if (SU.trim(it) != '') {
+					body.appendNode('span', it)
+					body.appendNode('span', mark)
+				}
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(coreMarkup)
+			node.text = writer.toString()
+			// core texts without
+		} else {
+			node.text = SU.join(cores.toArray(), mark)
+		}
+	}
+
+	// notes
+	if (notes.size() > 0) {
+		// notes with HTML
+		if (noteHtml) {
+			noteMarkup = new XmlParser().parseText(
+					'<html><head></head><body></body></html>'
+					)
+			body = noteMarkup.body[0]
+			ui.informationMessage(body.toString())
+			notes.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body[0].children().each { part -> body.append(part) }
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(noteMarkup)
+			node.noteText = writer.toString()
+			// notes without
+		} else {
+			node.noteText = SU.join(notes.toArray(), mark)
+		}
+	}
+
+	// details
+	if (details.size() > 0) {
+		// details with HTML
+		if (detailHtml) {
+			detailMarkup = new XmlParser().parseText('<html><head></head><body></body></html>')
+			body = detailMarkup.body[0]
+			details.each {
+				tmpMarkup = new XmlParser().parseText(it)
+				tmpMarkup.body[0].children().each { part -> body.append(part) }
+			}
+			writer = new StringWriter()
+			new XmlNodePrinter(new PrintWriter(writer)).print(detailMarkup)
+			node.detailsText = writer.toString()
+			// details without
+		} else {
+			node.detailsText = SU.join(details.toArray(), mark)
+		}
+	}
+
+	// icons
+	if (icons.size() > 0) {
+		def ikons = node.icons
+		ikons?.icons?.every { ikons?.remove(it) }
+		icons.every { ikons?.add(it) }
+	}
+	// children
+	//if (!children.empty()) {
+	//	children.each { node.appendChild(it) }
+	//}*/
+
+	// cleanup
+	c.selecteds.toList().tail().every { it.delete() }
+
+	// present
+	c.select(node)
+	c.centerOnNode(node)
+}
+
+def pick(String mark) {
+	if (mark != null) {
+		mark = mark ? mark : ''
+		if (Boolean.parseBoolean(config.getProperty('wikd_plain_text'))) {
+			joinPlain(mark)
+		} else {
+			joinAll(mark)
+		}
+	}
+}
 <map version="freeplane 1.2.0">
 <!--To view this file, download free mind mapping software Freeplane from http://freeplane.sourceforge.net -->
-<node TEXT="wikdNode" FOLDED="false" ID="ID_1723255651" CREATED="1283093380553" MODIFIED="1360052546732" BACKGROUND_COLOR="#97c7dc" LINK="https://bitbucket.org/lcrees/wikdnode/">
+<node TEXT="wikdNode" FOLDED="false" ID="ID_1723255651" CREATED="1283093380553" MODIFIED="1359787765817" BACKGROUND_COLOR="#97c7dc" LINK="https://bitbucket.org/lcrees/wikdnode/">
 <font SIZE="16" BOLD="true" ITALIC="true"/>
 <hook NAME="MapStyle">
     <properties show_icon_for_attributes="true" show_note_icons="true"/>
 <hook NAME="AutomaticEdgeColor" COUNTER="6"/>
 <attribute_layout NAME_WIDTH="103" VALUE_WIDTH="103"/>
 <attribute NAME="name" VALUE="wikdNode"/>
-<attribute NAME="version" VALUE="v0.6.9" OBJECT="org.freeplane.features.format.FormattedObject|v0.6.9|number:decimal:#0.####"/>
+<attribute NAME="version" VALUE="v0.7.0" OBJECT="org.freeplane.features.format.FormattedObject|v0.7.0|number:decimal:#0.####"/>
 <attribute NAME="author" VALUE="L. C. Rees"/>
 <attribute NAME="freeplaneVersionFrom" VALUE="1.2.15"/>
 <attribute NAME="freeplaneVersionTo" VALUE=""/>
     </ul>
   </body>
 </html>
+
 </richcontent>
 <hook NAME="FlexibleLayout" VALUE="CHILDREN"/>
-<node TEXT="description" POSITION="left" ID="ID_143630176" CREATED="1357715826843" MODIFIED="1359873140107">
+<node TEXT="description" POSITION="left" ID="ID_143630176" CREATED="1357715826843" MODIFIED="1359787765826">
 <edge COLOR="#ff0000"/>
 <richcontent TYPE="NOTE">
 
     </p>
   </body>
 </html>
+
 </richcontent>
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
 <node ID="ID_419235551" CREATED="1357715987721" MODIFIED="1358826414218"><richcontent TYPE="NODE">
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
 </node>
 </node>
-<node TEXT="changes" POSITION="left" ID="ID_1790870178" CREATED="1357715826877" MODIFIED="1359873140109">
+<node TEXT="changes" POSITION="left" ID="ID_1790870178" CREATED="1357715826877" MODIFIED="1359787765827">
 <edge COLOR="#0000ff"/>
 <richcontent TYPE="NOTE">
 
     </p>
   </body>
 </html>
+
 </richcontent>
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
 <node TEXT="0.3.0" ID="ID_1041388750" CREATED="1358051551048" MODIFIED="1358051563586">
 </node>
 </node>
 </node>
-<node TEXT="license" POSITION="left" ID="ID_1348143779" CREATED="1357715826886" MODIFIED="1359873140110">
+<node TEXT="license" POSITION="left" ID="ID_1348143779" CREATED="1357715826886" MODIFIED="1359787765829">
 <edge COLOR="#00ff00"/>
 <richcontent TYPE="NOTE">
 
     </p>
   </body>
 </html>
+
 </richcontent>
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
 <node TEXT="This add-on is free software: you can redistribute it and/or modify&#xa;it under the terms of the GNU General Public License as published by&#xa;the Free Software Foundation, either version 2 of the License, or&#xa;(at your option) any later version.&#xa;&#xa;This program is distributed in the hope that it will be useful,&#xa;but WITHOUT ANY WARRANTY; without even the implied warranty of&#xa;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&#xa;GNU General Public License for more details." ID="ID_241792435" CREATED="1357715826895" MODIFIED="1357719017976">
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
 </node>
 </node>
-<node TEXT="preferences.xml" POSITION="left" ID="ID_1772733941" CREATED="1357715826946" MODIFIED="1359873140112">
+<node TEXT="preferences.xml" POSITION="left" ID="ID_1772733941" CREATED="1357715826946" MODIFIED="1359787765831">
 <edge COLOR="#ff00ff"/>
 <richcontent TYPE="NOTE">
 
   </head>
   <body>
     <p>
-      <font color="#000000" face="SansSerif, sans-serif">The child node contains the add-on configuration as an extension to mindmapmodemenu.xml (in Tools-&gt;Preferences-&gt;Add-ons). </font>
+      <font face="SansSerif, sans-serif" color="#000000">The child node contains the add-on configuration as an extension to mindmapmodemenu.xml (in Tools-&gt;Preferences-&gt;Add-ons). </font>
     </p>
     <p>
-      <font color="#000000" face="SansSerif, sans-serif">Every property in the configuration should receive a default value in <i>default.properties</i>&#160;node.</font>
+      <font face="SansSerif, sans-serif" color="#000000">Every property in the configuration should receive a default value in <i>default.properties</i>&#160;node.</font>
     </p>
   </body>
 </html>
+
 </richcontent>
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
-<node TEXT="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#xa;&lt;preferences_structure&gt;&#xa;&lt;tabbed_pane&gt;&#xa;&lt;tab name=&quot;plugins&quot;&gt;&#xa;&lt;separator name=&quot;wikd&quot;&gt;&#xa;&lt;boolean name=&quot;wikd_first_split&quot; /&gt;&#xa;&lt;/separator&gt;&#xa;&lt;/tab&gt;&#xa;&lt;/tabbed_pane&gt;&#xa;&lt;/preferences_structure&gt;" ID="ID_873595672" CREATED="1358304692163" MODIFIED="1358308194898">
+<node TEXT="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#xa;&lt;preferences_structure&gt;&#xa;&lt;tabbed_pane&gt;&#xa;&lt;tab name=&quot;plugins&quot;&gt;&#xa;&lt;separator name=&quot;wikd&quot;&gt;&#xa;&lt;boolean name=&quot;wikd_first_split&quot; /&gt;&#xa;&lt;boolean name=&quot;wikd_plain_text&quot; /&gt;&#xa;&lt;/separator&gt;&#xa;&lt;/tab&gt;&#xa;&lt;/tabbed_pane&gt;&#xa;&lt;/preferences_structure&gt;" ID="ID_873595672" CREATED="1358304692163" MODIFIED="1359786929814">
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
 </node>
 </node>
-<node TEXT="default.properties" POSITION="left" ID="ID_1954124232" CREATED="1357715826968" MODIFIED="1359873140113">
+<node TEXT="default.properties" POSITION="left" ID="ID_1954124232" CREATED="1357715826968" MODIFIED="1359787765832">
 <edge COLOR="#00ffff"/>
 <richcontent TYPE="NOTE">
 
     </p>
   </body>
 </html>
+
 </richcontent>
-<attribute_layout NAME_WIDTH="72" VALUE_WIDTH="72"/>
+<attribute_layout NAME_WIDTH="74" VALUE_WIDTH="74"/>
 <attribute NAME="wikd_first_split" VALUE="false"/>
+<attribute NAME="wikd_plain_text" VALUE="false"/>
 </node>
-<node TEXT="translations" POSITION="left" ID="ID_1430168348" CREATED="1357715826977" MODIFIED="1359873140115">
+<node TEXT="translations" POSITION="left" ID="ID_1430168348" CREATED="1357715826977" MODIFIED="1359787765834">
 <edge COLOR="#ffff00"/>
 <richcontent TYPE="NOTE">
 
     </p>
   </body>
 </html>
+
 </richcontent>
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
-<node TEXT="en" ID="ID_1245393964" CREATED="1357715826986" MODIFIED="1360052539414">
-<attribute_layout NAME_WIDTH="130" VALUE_WIDTH="246"/>
+<node TEXT="en" ID="ID_1245393964" CREATED="1357715826986" MODIFIED="1359787012582">
+<attribute_layout NAME_WIDTH="132" VALUE_WIDTH="258"/>
 <attribute NAME="addons.${name}" VALUE="wikdNode"/>
-<attribute NAME="wikdConvert" VALUE="Convert..."/>
-<attribute NAME="wikdDelete" VALUE="Delete..."/>
-<attribute NAME="wikdJoin" VALUE="Join..."/>
-<attribute NAME="wikdSplit" VALUE="Split..."/>
-<attribute NAME="wikd.capitalize" VALUE="To capitalized"/>
-<attribute NAME="wikd.capitalizeAll" VALUE="To all capitalized"/>
-<attribute NAME="wikd.upperCase" VALUE="To upper case"/>
-<attribute NAME="wikd.lowerCase" VALUE="To lower case"/>
-<attribute NAME="wikd.makeChild" VALUE="Parent to child"/>
-<attribute NAME="wikd.replaceParent" VALUE="Child to parent"/>
-<attribute NAME="wikd.childrenToAttrs" VALUE="Child nodes to attributes"/>
-<attribute NAME="wikd.attrsToChildren" VALUE="Attributes to child nodes"/>
-<attribute NAME="wikd.joinPeriod" VALUE="With periods"/>
-<attribute NAME="wikd.joinComma" VALUE="With commas"/>
-<attribute NAME="wikd.joinSpace" VALUE="With spaces"/>
-<attribute NAME="wikd.joinChars" VALUE="With characters..."/>
-<attribute NAME="wikd.splitBeforeChars" VALUE="Before characters..."/>
-<attribute NAME="wikd.splitBeforeRegex" VALUE="Before regular expression..."/>
-<attribute NAME="wikd.splitAfterChars" VALUE="After characters..."/>
-<attribute NAME="wikd.splitAfterRegex" VALUE="After regular expression..."/>
-<attribute NAME="wikd.splitPeriod" VALUE="On periods"/>
-<attribute NAME="wikd.splitComma" VALUE="On commas"/>
-<attribute NAME="wikd.splitSpace" VALUE="On spaces"/>
-<attribute NAME="wikd.splitChars" VALUE="On characters..."/>
-<attribute NAME="wikd.splitRegex" VALUE="On regular expression..."/>
-<attribute NAME="wikd.deleteLastChars" VALUE="Last characters..."/>
-<attribute NAME="wikd.deleteLastRegex" VALUE="Last matching regular expression..."/>
-<attribute NAME="wikd.deleteFirstChars" VALUE="First characters..."/>
-<attribute NAME="wikd.deleteFirstRegex" VALUE="First matching regular expression..."/>
-<attribute NAME="wikd.deleteLinks" VALUE="Links"/>
-<attribute NAME="OptionPanel.separator.wikd" VALUE="wikdNode"/>
-<attribute NAME="OptionPanel.wikd_first_split" VALUE="Keep first split as parent"/>
-</node>
-<node TEXT="de" ID="ID_726128733" CREATED="1357715826986" MODIFIED="1360051995660">
-<attribute_layout NAME_WIDTH="130" VALUE_WIDTH="224"/>
-<attribute NAME="addons.${name}" VALUE="wikdNode"/>
-<attribute NAME="wikdConvert" VALUE="Konvertieren"/>
+<attribute NAME="wikdConvert" VALUE="Convert"/>
 <attribute NAME="wikdDelete" VALUE="Delete"/>
 <attribute NAME="wikdJoin" VALUE="Join"/>
-<attribute NAME="wikdSplit" VALUE="Join"/>
-<attribute NAME="wikd.capitalize" VALUE="1. Anfangsbuchst. gro&#xdf;"/>
-<attribute NAME="wikd.capitalizeAll" VALUE="Alle Anfangsbuchst. gro&#xdf;"/>
+<attribute NAME="wikdSplit" VALUE="Split"/>
+<attribute NAME="wikd.capitalize" VALUE="Capitalize"/>
+<attribute NAME="wikd.capitalizeAll" VALUE="Capitalize all"/>
 <attribute NAME="wikd.upperCase" VALUE="To upper case"/>
 <attribute NAME="wikd.lowerCase" VALUE="To lower case"/>
 <attribute NAME="wikd.makeChild" VALUE="Copy to child"/>
+<attribute NAME="wikd.replaceParent" VALUE="Replace parent"/>
+<attribute NAME="wikd.childrenToAttrs" VALUE="Children to attributes"/>
+<attribute NAME="wikd.attrsToChildren" VALUE="Attributes to children"/>
+<attribute NAME="wikd.joinPeriod" VALUE="Join with periods"/>
+<attribute NAME="wikd.joinComma" VALUE="Join with commas"/>
+<attribute NAME="wikd.joinSpace" VALUE="Join with spaces"/>
+<attribute NAME="wikd.joinChars" VALUE="Join with characters..."/>
+<attribute NAME="wikd.splitBeforeChars" VALUE="Split before characters..."/>
+<attribute NAME="wikd.splitBeforeRegex" VALUE="Split before regular expression..."/>
+<attribute NAME="wikd.splitAfterChars" VALUE="Split after characters..."/>
+<attribute NAME="wikd.splitAfterRegex" VALUE="Split after regular expression..."/>
+<attribute NAME="wikd.splitPeriod" VALUE="Split on periods"/>
+<attribute NAME="wikd.splitComma" VALUE="Split on commas"/>
+<attribute NAME="wikd.splitSpace" VALUE="Split on spaces"/>
+<attribute NAME="wikd.splitChars" VALUE="Split on characters..."/>
+<attribute NAME="wikd.splitRegex" VALUE="Split on regular expression..."/>
+<attribute NAME="wikd.deleteLastChars" VALUE="Delete last characters..."/>
+<attribute NAME="wikd.deleteLastRegex" VALUE="Delete last matching regular expression..."/>
+<attribute NAME="wikd.deleteFirstChars" VALUE="Delete first characters..."/>
+<attribute NAME="wikd.deleteFirstRegex" VALUE="Delete first matching regular expression..."/>
+<attribute NAME="wikd.deleteLinks" VALUE="Delete links"/>
+<attribute NAME="OptionPanel.separator.wikd" VALUE="wikdNode"/>
+<attribute NAME="OptionPanel.wikd_first_split" VALUE="Keep first split as parent"/>
+<attribute NAME="OptionPanel.wikd_plain_text" VALUE="Always join node core, note, or details text as plain text"/>
+</node>
+<node TEXT="de" ID="ID_726128733" CREATED="1357715826986" MODIFIED="1359787048875">
+<attribute_layout NAME_WIDTH="132" VALUE_WIDTH="313"/>
+<attribute NAME="addons.${name}" VALUE="wikdNode"/>
+<attribute NAME="wikdConvert" VALUE="Konvertieren"/>
+<attribute NAME="wikdDelete" VALUE="Entfernen"/>
+<attribute NAME="wikdJoin" VALUE="Verbinden"/>
+<attribute NAME="wikdSplit" VALUE="Teilen"/>
+<attribute NAME="wikd.capitalize" VALUE="1. Anfangsbuchst. gro&#xdf;"/>
+<attribute NAME="wikd.capitalizeAll" VALUE="Alle Anfangsbuchst. gro&#xdf;"/>
+<attribute NAME="wikd.upperCase" VALUE="Gro&#xdf;buchstaben"/>
+<attribute NAME="wikd.lowerCase" VALUE="Kleinbuchstaben"/>
+<attribute NAME="wikd.makeChild" VALUE="Als Kindknoten kopieren"/>
 <attribute NAME="wikd.replaceParent" VALUE="Ersetze Elternknoten"/>
 <attribute NAME="wikd.childrenToAttrs" VALUE="Kinder um die Attribute"/>
 <attribute NAME="wikd.attrsToChildren" VALUE="Attribute f&#xfc;r Kinder"/>
 <attribute NAME="wikd.deleteLinks" VALUE="Entferne Links"/>
 <attribute NAME="OptionPanel.separator.wikd" VALUE="wikdNode"/>
 <attribute NAME="OptionPanel.wikd_first_split" VALUE="Halten erste Spaltung als Elternknoten"/>
+<attribute NAME="OptionPanel.wikd_plain_text" VALUE="Immer Verbindungsknoten Kern, Notiz oder Details Text als Klartext"/>
 </node>
 </node>
-<node TEXT="deinstall" POSITION="left" ID="ID_1844997656" CREATED="1357715826998" MODIFIED="1359873140116">
+<node TEXT="deinstall" POSITION="left" ID="ID_1844997656" CREATED="1357715826998" MODIFIED="1359787765835">
 <edge COLOR="#7c0000"/>
 <richcontent TYPE="NOTE">
 
     </p>
   </body>
 </html>
+
 </richcontent>
 <attribute_layout NAME_WIDTH="30" VALUE_WIDTH="269"/>
 <attribute NAME="delete" VALUE="${installationbase}/addons/${name}.script.xml"/>
 <attribute NAME="delete" VALUE="${installationbase}/resources/images/wikdNode.png"/>
 <attribute NAME="delete" VALUE="${installationbase}/resources/images/wikdNode-icon.png"/>
 <attribute NAME="delete" VALUE="${installationbase}/resources/images/wikdNode-screenshot-1.png"/>
+<attribute NAME="delete" VALUE="${installationbase}/scripts/DeleteLastChars.groovy"/>
+<attribute NAME="delete" VALUE="${installationbase}/scripts/DeleteFirstChars.groovy"/>
 <attribute NAME="delete" VALUE="${installationbase}/scripts/capitalize.groovy"/>
 <attribute NAME="delete" VALUE="${installationbase}/scripts/capitalizeAll.groovy"/>
 <attribute NAME="delete" VALUE="${installationbase}/scripts/upperCase.groovy"/>
 <attribute NAME="delete" VALUE="${installationbase}/scripts/splitAfterChars.groovy"/>
 <attribute NAME="delete" VALUE="${installationbase}/scripts/splitAfterRegex.groovy"/>
 </node>
-<node TEXT="scripts" POSITION="right" ID="ID_1324856264" CREATED="1357715827025" MODIFIED="1359873140124">
+<node TEXT="scripts" POSITION="right" ID="ID_1324856264" CREATED="1357715827025" MODIFIED="1359787765841">
 <edge COLOR="#00007c"/>
 <richcontent TYPE="NOTE">
 
     </p>
   </body>
 </html>
+
 </richcontent>
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
 <node TEXT="capitalize.groovy" ID="ID_1501046977" CREATED="1357794199593" MODIFIED="1358028490172">
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="joinPeriod.groovy" ID="ID_1416066303" CREATED="1357718506311" MODIFIED="1359873017980">
+<node TEXT="joinPeriod.groovy" ID="ID_1416066303" CREATED="1357718506311" MODIFIED="1358028490194">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.joinPeriod"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdJoin"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="joinComma.groovy" ID="ID_426652560" CREATED="1357718540951" MODIFIED="1359873012332">
+<node TEXT="joinComma.groovy" ID="ID_426652560" CREATED="1357718540951" MODIFIED="1358028490198">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.joinComma"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdJoin"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="joinSpace.groovy" ID="ID_737637147" CREATED="1357718569572" MODIFIED="1359873009510">
+<node TEXT="joinSpace.groovy" ID="ID_737637147" CREATED="1357718569572" MODIFIED="1358028490201">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.joinSpace"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdJoin"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="joinChars.groovy" ID="ID_326406537" CREATED="1357718596648" MODIFIED="1359873005453">
+<node TEXT="joinChars.groovy" ID="ID_326406537" CREATED="1357718596648" MODIFIED="1358028490204">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.joinChars"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdJoin"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="splitBeforeChars.groovy" ID="ID_1144065633" CREATED="1357718569574" MODIFIED="1359872997414">
+<node TEXT="splitBeforeChars.groovy" ID="ID_1144065633" CREATED="1357718569574" MODIFIED="1358028490208">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.splitBeforeChars"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdSplit"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="splitBeforeRegex.groovy" ID="ID_1071316054" CREATED="1358814771204" MODIFIED="1359872994368">
+<node TEXT="splitBeforeRegex.groovy" ID="ID_1071316054" CREATED="1358814771204" MODIFIED="1358822827098">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.splitBeforeRegex"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdSplit"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="splitAfterChars.groovy" ID="ID_1831941505" CREATED="1359702100939" MODIFIED="1359873031023">
+<node TEXT="splitAfterChars.groovy" ID="ID_1831941505" CREATED="1359702100939" MODIFIED="1359702518723">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.splitAfterChars"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdSplit"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="splitAfterRegex.groovy" ID="ID_102192877" CREATED="1359702100940" MODIFIED="1359873033115">
+<node TEXT="splitAfterRegex.groovy" ID="ID_102192877" CREATED="1359702100940" MODIFIED="1359702505313">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.splitAfterRegex"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdSplit"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="splitChars.groovy" ID="ID_409172412" CREATED="1357718596650" MODIFIED="1359873036879">
+<node TEXT="splitChars.groovy" ID="ID_409172412" CREATED="1357718596650" MODIFIED="1358028490219">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.splitChars"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdSplit"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="splitRegex.groovy" ID="ID_1758323236" CREATED="1358814771207" MODIFIED="1359873039787">
+<node TEXT="splitRegex.groovy" ID="ID_1758323236" CREATED="1358814771207" MODIFIED="1358822834421">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.splitRegex"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdSplit"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="splitPeriod.groovy" ID="ID_262871351" CREATED="1357718506317" MODIFIED="1359873042874">
+<node TEXT="splitPeriod.groovy" ID="ID_262871351" CREATED="1357718506317" MODIFIED="1358028490211">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.splitPeriod"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdSplit"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="splitComma.groovy" ID="ID_502099692" CREATED="1357718540955" MODIFIED="1359873050181">
+<node TEXT="splitComma.groovy" ID="ID_502099692" CREATED="1357718540955" MODIFIED="1358028490214">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.splitComma"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdSplit"/>
 <attribute NAME="execute_scripts_without_exec_restriction" VALUE="false"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
-<node TEXT="splitSpace.groovy" ID="ID_1089160930" CREATED="1357718569576" MODIFIED="1359873053857">
+<node TEXT="splitSpace.groovy" ID="ID_1089160930" CREATED="1357718569576" MODIFIED="1358028490217">
 <attribute_layout NAME_WIDTH="206" VALUE_WIDTH="206"/>
 <attribute NAME="menuTitleKey" VALUE="wikd.splitSpace"/>
 <attribute NAME="menuLocation" VALUE="/menu_bar/edit/wikdSplit"/>
 <attribute NAME="execute_scripts_without_network_restriction" VALUE="false"/>
 </node>
 </node>
-<node TEXT="zips" POSITION="right" ID="ID_269135974" CREATED="1357715827053" MODIFIED="1359873140139">
+<node TEXT="zips" POSITION="right" ID="ID_269135974" CREATED="1357715827053" MODIFIED="1359787765854">
 <edge COLOR="#007c00"/>
 <richcontent TYPE="NOTE">
 
     </p>
   </body>
 </html>
+
 </richcontent>
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
-<node TEXT="scripts" ID="ID_219833333" CREATED="1357885389563" MODIFIED="1357885391598">
-<attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
-<node TEXT="wikd.jar" ID="ID_1338104924" CREATED="1357890163166" MODIFIED="1359765876870">
-<attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
 </node>
-</node>
-</node>
-<node TEXT="images" POSITION="right" ID="ID_112966804" CREATED="1357715827065" MODIFIED="1359873140142">
+<node TEXT="images" FOLDED="true" POSITION="right" ID="ID_112966804" CREATED="1357715827065" MODIFIED="1359787765857">
 <edge COLOR="#7c007c"/>
 <richcontent TYPE="NOTE">
 
     </p>
   </body>
 </html>
+
 </richcontent>
 <attribute_layout NAME_WIDTH="100" VALUE_WIDTH="100"/>
 <node TEXT="${name}.png" ID="ID_473909841" CREATED="1357854883609" MODIFIED="1357866785018">
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.