Changeset 2849
- Timestamp:
- 12/04/07 09:39:54 (1 year ago)
- Files:
-
- tracwysiwygplugin/0.10/tests/testcase.js (modified) (1 diff)
- tracwysiwygplugin/0.10/tracwysiwyg/htdocs/wysiwyg.js (modified) (9 diffs)
- tracwysiwygplugin/0.11/tests/testcase.js (modified) (1 diff)
- tracwysiwygplugin/0.11/tracwysiwyg/htdocs/wysiwyg.js (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
tracwysiwygplugin/0.10/tests/testcase.js
r2842 r2849 558 558 559 559 unit.add("WikiPageName", function() { 560 var dom = element("p", 561 element("a", "CamelCase", { 562 href: "./search?q=" + encodeURIComponent("wiki:CamelCase"), 563 title: "wiki:CamelCase", "tracwysiwyg-link": "wiki:CamelCase", 564 onclick: "return false;" }), 565 " CamelCase FooBarA FOo FoobarA Oneà 566 ngström Oneångström setTextColor"); 567 generateFragment.call(this, dom, 560 var dom = fragment( 561 element("p", 562 a("wiki:CamelCase", "CamelCase"), 563 " CamelCase FooBarA FOo FoobarA Oneà 564 ngström Oneångström setTextColor"), 565 element("p", 566 a("wiki:WikiStart", "WikiStart"), 567 " Wiki", 568 a("wiki:Start", "Start"), 569 " ", 570 a("wiki:Wiki", "Wiki"), 571 "Start Wiki", 572 a("wiki:Start", "Start"), 573 "Wiki")); 574 generate.call(this, dom, [ 568 575 "CamelCase !CamelCase FooBarA FOo FoobarA Oneà 569 ngström Oneångström setTextColor"); 570 generate.call(this, dom, 571 "[wiki:CamelCase] !CamelCase FooBarA FOo FoobarA Oneà 572 ngström Oneångström setTextColor"); 576 ngström Oneångström setTextColor", 577 "", 578 "WikiStart Wiki[wiki:Start] [wiki:Wiki]Start Wiki[wiki:Start]Wiki" ].join("\n")); 573 579 }); 574 580 tracwysiwygplugin/0.10/tracwysiwyg/htdocs/wysiwyg.js
r2842 r2849 473 473 474 474 function listenerKeypress(event) { 475 if (!self.autolink) {476 return;477 }478 475 event = event || self.contentWindow.event; 479 476 switch (event.charCode || event.keyCode) { … … 608 605 609 606 TracWysiwyg.prototype.detectTracLink = function(event) { 607 if (!this.autolink) { 608 return; 609 } 610 610 var range = this.getSelectionRange(); 611 611 var node = range.startContainer; … … 640 640 var text = [ node.nodeValue.substring(0, offset) ]; 641 641 for ( ; ; ) { 642 if (/[ \t\r\n\f\v]/.test(text[text.length - 1])) { 643 break; 644 } 642 645 node = node.previousSibling; 643 646 if (!node || node.nodeType == 1) { … … 654 657 655 658 var pattern = this.wikiDetectTracLinkPattern; 656 pattern.lastIndex = 0;659 pattern.lastIndex = /[^ \t\r\n\f\v]*$/.exec(text).index; 657 660 var match, tmp; 658 661 for (tmp = pattern.exec(text); tmp; tmp = pattern.exec(text)) { … … 663 666 } 664 667 665 var label = match[ match.length - 1];666 var link = this. convertWikiSyntax(label);668 var label = match[0]; 669 var link = this.normalizeTracLink(label); 667 670 var id = this.generateDomId(); 668 671 var anchor = this.createAnchor(link, label, { id: id, "tracwysiwyg-autolink": true }); … … 1991 1994 var wikiSyntaxPattern = this.wikiSyntaxPattern; 1992 1995 var tracLinkPattern = new RegExp("^" + this._tracLink + "$"); 1996 var wikiPageNamePattern = new RegExp("^" + this._wikiPageName + "$"); 1993 1997 var decorationTokenPattern = /^(?:'''|''|__|\^|,,)$/; 1994 1998 … … 2181 2185 } 2182 2186 var text = null; 2183 if (node.getAttribute("tracwysiwyg-autolink") == "tracwysiwyg-autolink" 2184 ? (wikiSyntaxPattern.test(label) || tracLinkPattern.test(label)) 2185 : (link == label && tracLinkPattern.test(label))) 2186 { 2187 text = label; 2187 var traclink = null; 2188 if (node.getAttribute("tracwysiwyg-autolink") == "tracwysiwyg-autolink") { 2189 if (wikiPageNamePattern.test(label)) { 2190 text = label; 2191 link = "wiki:" + label; 2192 traclink = "[wiki:" + label + "]"; 2193 } 2194 else if (wikiSyntaxPattern.test(label)) { 2195 text = label; 2196 link = self.convertWikiSyntax(label); 2197 } 2198 else if (tracLinkPattern.test(label)) { 2199 text = link = label; 2200 } 2201 } 2202 else { 2203 if (link == label && tracLinkPattern.test(label)) { 2204 text = label; 2205 } 2188 2206 } 2189 2207 if (!text) { … … 2191 2209 if (match) { 2192 2210 if (label == match[2]) { 2193 text = "[" + link + "]"; 2211 if (match[1] == "wiki" && wikiPageNamePattern.test(match[2])) { 2212 text = match[2]; 2213 traclink = "[wiki:" + text + "]"; 2214 } 2215 else { 2216 text = "[" + link + "]"; 2217 } 2194 2218 } 2195 2219 else { … … 2221 2245 text = tracLinkText(link, label); 2222 2246 } 2223 pushTextWithDecorations(text, node, /^[\w.+-]/.test(text) ? tracLinkText(link, label) : null); 2247 if (!traclink && /^[\w.+-]/.test(text)) { 2248 traclink = tracLinkText(link, label); 2249 } 2250 pushTextWithDecorations(text, node, traclink); 2224 2251 } 2225 2252 tracwysiwygplugin/0.11/tests/testcase.js
r2842 r2849 558 558 559 559 unit.add("WikiPageName", function() { 560 var dom = element("p", 561 element("a", "CamelCase", { 562 href: "./search?q=" + encodeURIComponent("wiki:CamelCase"), 563 title: "wiki:CamelCase", "tracwysiwyg-link": "wiki:CamelCase", 564 onclick: "return false;" }), 565 " CamelCase FooBarA FOo FoobarA Oneà 566 ngström Oneångström setTextColor"); 567 generateFragment.call(this, dom, 560 var dom = fragment( 561 element("p", 562 a("wiki:CamelCase", "CamelCase"), 563 " CamelCase FooBarA FOo FoobarA Oneà 564 ngström Oneångström setTextColor"), 565 element("p", 566 a("wiki:WikiStart", "WikiStart"), 567 " Wiki", 568 a("wiki:Start", "Start"), 569 " ", 570 a("wiki:Wiki", "Wiki"), 571 "Start Wiki", 572 a("wiki:Start", "Start"), 573 "Wiki")); 574 generate.call(this, dom, [ 568 575 "CamelCase !CamelCase FooBarA FOo FoobarA Oneà 569 ngström Oneångström setTextColor"); 570 generate.call(this, dom, 571 "[wiki:CamelCase] !CamelCase FooBarA FOo FoobarA Oneà 572 ngström Oneångström setTextColor"); 576 ngström Oneångström setTextColor", 577 "", 578 "WikiStart Wiki[wiki:Start] [wiki:Wiki]Start Wiki[wiki:Start]Wiki" ].join("\n")); 573 579 }); 574 580 tracwysiwygplugin/0.11/tracwysiwyg/htdocs/wysiwyg.js
r2842 r2849 473 473 474 474 function listenerKeypress(event) { 475 if (!self.autolink) {476 return;477 }478 475 event = event || self.contentWindow.event; 479 476 switch (event.charCode || event.keyCode) { … … 608 605 609 606 TracWysiwyg.prototype.detectTracLink = function(event) { 607 if (!this.autolink) { 608 return; 609 } 610 610 var range = this.getSelectionRange(); 611 611 var node = range.startContainer; … … 640 640 var text = [ node.nodeValue.substring(0, offset) ]; 641 641 for ( ; ; ) { 642 if (/[ \t\r\n\f\v]/.test(text[text.length - 1])) { 643 break; 644 } 642 645 node = node.previousSibling; 643 646 if (!node || node.nodeType == 1) { … … 654 657 655 658 var pattern = this.wikiDetectTracLinkPattern; 656 pattern.lastIndex = 0;659 pattern.lastIndex = /[^ \t\r\n\f\v]*$/.exec(text).index; 657 660 var match, tmp; 658 661 for (tmp = pattern.exec(text); tmp; tmp = pattern.exec(text)) { … … 663 666 } 664 667 665 var label = match[ match.length - 1];666 var link = this. convertWikiSyntax(label);668 var label = match[0]; 669 var link = this.normalizeTracLink(label); 667 670 var id = this.generateDomId(); 668 671 var anchor = this.createAnchor(link, label, { id: id, "tracwysiwyg-autolink": true }); … … 1991 1994 var wikiSyntaxPattern = this.wikiSyntaxPattern; 1992 1995 var tracLinkPattern = new RegExp("^" + this._tracLink + "$"); 1996 var wikiPageNamePattern = new RegExp("^" + this._wikiPageName + "$"); 1993 1997 var decorationTokenPattern = /^(?:'''|''|__|\^|,,)$/; 1994 1998 … … 2181 2185 } 2182 2186 var text = null; 2183 if (node.getAttribute("tracwysiwyg-autolink") == "tracwysiwyg-autolink" 2184 ? (wikiSyntaxPattern.test(label) || tracLinkPattern.test(label)) 2185 : (link == label && tracLinkPattern.test(label))) 2186 { 2187 text = label; 2187 var traclink = null; 2188 if (node.getAttribute("tracwysiwyg-autolink") == "tracwysiwyg-autolink") { 2189 if (wikiPageNamePattern.test(label)) { 2190 text = label; 2191 link = "wiki:" + label; 2192 traclink = "[wiki:" + label + "]"; 2193 } 2194 else if (wikiSyntaxPattern.test(label)) { 2195 text = label; 2196 link = self.convertWikiSyntax(label); 2197 } 2198 else if (tracLinkPattern.test(label)) { 2199 text = link = label; 2200 } 2201 } 2202 else { 2203 if (link == label && tracLinkPattern.test(label)) { 2204 text = label; 2205 } 2188 2206 } 2189 2207 if (!text) { … … 2191 2209 if (match) { 2192 2210 if (label == match[2]) { 2193 text = "[" + link + "]"; 2211 if (match[1] == "wiki" && wikiPageNamePattern.test(match[2])) { 2212 text = match[2]; 2213 traclink = "[wiki:" + text + "]"; 2214 } 2215 else { 2216 text = "[" + link + "]"; 2217 } 2194 2218 } 2195 2219 else { … … 2221 2245 text = tracLinkText(link, label); 2222 2246 } 2223 pushTextWithDecorations(text, node, /^[\w.+-]/.test(text) ? tracLinkText(link, label) : null); 2247 if (!traclink && /^[\w.+-]/.test(text)) { 2248 traclink = tracLinkText(link, label); 2249 } 2250 pushTextWithDecorations(text, node, traclink); 2224 2251 } 2225 2252
