diff --git a/admin/js/hyperdown.js b/admin/js/hyperdown.js index 356e0f95..c5da6e0c 100644 --- a/admin/js/hyperdown.js +++ b/admin/js/hyperdown.js @@ -444,18 +444,37 @@ continue; } } - if (this.html) { - if (!!(matches = line.match(/^(\s*)\$\$(\s*)$/))) { - if (this.isBlock('math')) { - this.setBlock(key).endBlock(); - } else { - this.startBlock('math', key); - } - continue; - } else if (this.isBlock('math')) { - this.setBlock(key); - continue; + if (!!(matches = line.match(/^(\s*)\$\$(\s*)$/))) { + if (this.isBlock('math')) { + this.setBlock(key).endBlock(); + } else { + this.startBlock('math', key); } + continue; + } else if (this.isBlock('math')) { + this.setBlock(key); + continue; + } + if (!!(line.match(/^ {4}/))) { + emptyCount = 0; + if ((this.isBlock('pre')) || this.isBlock('list')) { + this.setBlock(key); + } else { + this.startBlock('pre', key); + } + continue; + } else if (this.isBlock('pre')) { + if (line.match(/^\s*$/)) { + if (emptyCount > 0) { + this.startBlock('normal', key); + } else { + this.setBlock(key); + } + emptyCount += 1; + } else { + this.startBlock('normal', key); + } + continue; } if (!!(matches = line.match(new RegExp("^\\s*<(" + special + ")(\\s+[^>]*)?>", 'i')))) { tag = matches[1].toLowerCase(); @@ -474,14 +493,6 @@ continue; } switch (true) { - case !!(line.match(/^ {4}/)): - emptyCount = 0; - if ((this.isBlock('pre')) || this.isBlock('list')) { - this.setBlock(key); - } else { - this.startBlock('pre', key); - } - break; case !!(matches = line.match(/^(\s*)((?:[0-9a-z]+\.)|\-|\+|\*)\s+/)): space = matches[1].length; emptyCount = 0; @@ -506,7 +517,7 @@ this.startBlock('quote', key); } break; - case !!(matches = line.match(/^((?:(?:(?:[ :]*\-[ :]*)+(?:\||\+))|(?:(?:\||\+)(?:[ :]*\-[ :]*)+)|(?:(?:[ :]*\-[ :]*)+(?:\||\+)(?:[ :]*\-[ :]*)+))+)$/)): + case !!(matches = line.match(/^((?:(?:(?:[ :]*\-[ :]*)+(?:\||\+))|(?:(?:\||\+)(?:[ :]*\-[ :]*)+(?:\||\+))|(?:(?:\||\+)(?:[ :]*\-[ :]*)+))+)$/)): if (this.isBlock('table')) { block[3][0].push(block[3][2]); block[3][2] += 1; @@ -586,17 +597,6 @@ } else { this.startBlock('normal', key); } - } else if (this.isBlock('pre')) { - if (line.match(/^\s*$/)) { - if (emptyCount > 0) { - this.startBlock('normal', key); - } else { - this.setBlock(key); - } - emptyCount += 1; - } else { - this.startBlock('normal', key); - } } else if (this.isBlock('quote')) { if (line.match(/^(\s*)/)) { if (emptyCount > 0) { diff --git a/var/HyperDown.php b/var/HyperDown.php index 1a784bcd..af173c52 100644 --- a/var/HyperDown.php +++ b/var/HyperDown.php @@ -595,6 +595,33 @@ class HyperDown continue; } + // pre block + if (preg_match("/^ {4}/", $line)) { + $emptyCount = 0; + + if ($this->isBlock('pre') || $this->isBlock('list')) { + $this->setBlock($key); + } else if ($this->isBlock('normal')) { + $this->startBlock('pre', $key); + } + + continue; + } else if ($this->isBlock('pre')) { + if (preg_match("/^\s*$/", $line)) { + if ($emptyCount > 0) { + $this->startBlock('normal', $key); + } else { + $this->setBlock($key); + } + + $emptyCount ++; + } else { + $this->startBlock('normal', $key); + } + + continue; + } + // html block is special too if (preg_match("/^\s*<({$special})(\s+[^>]*)?>/i", $line, $matches)) { $tag = strtolower($matches[1]); @@ -618,17 +645,6 @@ class HyperDown } switch (true) { - // pre block - case preg_match("/^ {4}/", $line): - $emptyCount = 0; - - if ($this->isBlock('pre') || $this->isBlock('list')) { - $this->setBlock($key); - } else if ($this->isBlock('normal')) { - $this->startBlock('pre', $key); - } - break; - // list case preg_match("/^(\s*)((?:[0-9a-z]+\.)|\-|\+|\*)\s+/", $line, $matches): $space = strlen($matches[1]); @@ -667,7 +683,7 @@ class HyperDown break; // table - case preg_match("/^((?:(?:(?:[ :]*\-[ :]*)+(?:\||\+))|(?:(?:\||\+)(?:[ :]*\-[ :]*)+)|(?:(?:[ :]*\-[ :]*)+(?:\||\+)(?:[ :]*\-[ :]*)+))+)$/", $line, $matches): + case preg_match("/^((?:(?:(?:[ :]*\-[ :]*)+(?:\||\+))|(?:(?:\||\+)(?:[ :]*\-[ :]*)+(?:\||\+))|(?:(?:\||\+)(?:[ :]*\-[ :]*)+))+)$/", $line, $matches): if ($this->isBlock('table')) { $block[3][0][] = $block[3][2]; $block[3][2] ++; @@ -769,18 +785,6 @@ class HyperDown } else { $this->startBlock('normal', $key); } - } else if ($this->isBlock('pre')) { - if (preg_match("/^\s*$/", $line)) { - if ($emptyCount > 0) { - $this->startBlock('normal', $key); - } else { - $this->setBlock($key); - } - - $emptyCount ++; - } else { - $this->startBlock('normal', $key); - } } else if ($this->isBlock('quote')) { if (preg_match("/^(\s*)/", $line)) { // empty line if ($emptyCount > 0) {