From 0e9674cbe56810b4c15386b1fc091777e9c7026b Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 8 Sep 2014 07:25:49 -0700 Subject: parseEmphasis: added Strong and shell for triples. --- js/stmd.js | 84 ++++++++++++++++++++++++-------------------------------------- 1 file changed, 33 insertions(+), 51 deletions(-) (limited to 'js') diff --git a/js/stmd.js b/js/stmd.js index 6d86c30..753eff8 100755 --- a/js/stmd.js +++ b/js/stmd.js @@ -305,72 +305,54 @@ var parseEmphasis = function() { return null; } } + break; -/* case 2: // We started with ** or __ while (true) { res = this.scanDelims(c); if (res.numdelims >= 2 && res.can_close) { - this.pos += 2; - inlines[delimpos].t = 'Strong'; - inlines[delimpos].c = inlines.slice(delimpos + 1); - inlines.splice(delimpos + 1); - break; + this.pos += 2; + return {t: 'Strong', c: inlines}; + } else if (next_inline = this.parseInline(inlines)) { + inlines.push(next_inline); } else { - if (this.parseInline(inlines) === 0) { - break; - } + // didn't find closing delimiter + this.pos = startpos; + return null; } } - return (this.pos - startpos); + break; - case 3: // We started with *** or ___ + case 3: // We started with *** or ___ while (true) { - res = this.scanDelims(c); - if (res.numdelims >= 1 && res.numdelims <= 3 && res.can_close && - res.numdelims != first_close_delims) { - - if (first_close_delims === 1 && numdelims > 2) { - res.numdelims = 2; - } else if (first_close_delims === 2) { - res.numdelims = 1; - } else if (res.numdelims === 3) { - // If we opened with ***, then we interpret *** as ** followed by * - // giving us - res.numdelims = 1; - } - - this.pos += res.numdelims; - - if (first_close > 0) { // if we've already passed the first closer: - inlines[delimpos].t = first_close_delims === 1 ? 'Strong' : 'Emph'; - inlines[delimpos].c = [ - { t: first_close_delims === 1 ? 'Emph' : 'Strong', - c: inlines.slice(delimpos + 1, first_close)} - ].concat(inlines.slice(first_close + 1)); - inlines.splice(delimpos + 1); - break; - } else { // this is the first closer; for now, add literal string; - // we'll change this when he hit the second closer - inlines.push({t: 'Str', - c: this.subject.slice(this.pos - res.numdelims, - this.pos) }); - first_close = inlines.length - 1; - first_close_delims = res.numdelims; - } - } else { // parse another inline element, til we hit the end - if (this.parseInline(inlines) === 0) { - break; + res = this.scanDelims(c); + var numdelims = res.numdelims; + var can_close = res.can_close; + var first_delim === 0; + if (can_close && numdelims === 3 && first_delim === 0) { + // TODO - return Strong Emph with inlines + } else if (can_close && numdelims === 2 && first_delim === 0) { + // TODO - set first_delim, make inlines a Strong + } else if (can_close && numdelims === 1 && first_delim === 0) { + // TODO - set first_delim, make inlines an Emph + } else if (can_close && numdelims === 2 && first_delim === 1) { + // TODO - return Strong inlines + } else if (can_close && numdelims === 1 && first_delim === 2) { + // TODO - return Emph inlines + } else if (next_inline = this.parseInline(inlines)) { + inlines.push(next_inline); + } else { + // didn't find closing delimiter + this.pos = startpos; + return null; } - } } - return (this.pos - startpos); -*/ + break; + default: - return res; } - return 0; + return null; }; // Attempt to parse link title (sans quotes), returning the string -- cgit v1.2.3