|
111 | 111 | }, {
|
112 | 112 | key: 'hook',
|
113 | 113 | value: function hook(type, callback) {
|
114 |
| - this.hooks[type].push(callback); |
| 114 | + if (this.hooks[type]) { |
| 115 | + this.hooks[type].push(callback); |
| 116 | + } else { |
| 117 | + this.hooks[type] = [callback]; |
| 118 | + } |
115 | 119 | }
|
116 | 120 |
|
117 | 121 | /**
|
|
399 | 403 | var emptyCount = 0;
|
400 | 404 | // analyze by line
|
401 | 405 | for (var key in lines) {
|
402 |
| - key = parseInt(key); // ES6 的 bug for key in Array 循环时返回的 key 是字符串,不是 int |
| 406 | + key = parseInt(key); // ES6 的 for key in Array 循环时返回的 key 是字符串,不是 int |
403 | 407 | var line = lines[key];
|
404 | 408 | // code block is special
|
405 | 409 | if (matches = line.match(/^(\s*)(~|`){3,}([^`~]*)$/i)) {
|
|
492 | 496 | // pre
|
493 | 497 | case /^ {4}/.test(line):
|
494 | 498 | emptyCount = 0;
|
| 499 | + |
495 | 500 | if (this.isBlock('pre')) {
|
496 | 501 | this.setBlock(key);
|
497 | 502 | } else if (this.isBlock('normal')) {
|
|
733 | 738 | }, {
|
734 | 739 | key: 'parsePre',
|
735 | 740 | value: function parsePre(lines) {
|
736 |
| - var _iteratorNormalCompletion2 = true; |
737 |
| - var _didIteratorError2 = false; |
738 |
| - var _iteratorError2 = undefined; |
739 |
| - |
740 |
| - try { |
741 |
| - for (var _iterator2 = lines[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { |
742 |
| - var line = _step2.value; |
743 |
| - |
744 |
| - line = this.htmlspecialchars(line.substr(4)); |
745 |
| - } |
746 |
| - } catch (err) { |
747 |
| - _didIteratorError2 = true; |
748 |
| - _iteratorError2 = err; |
749 |
| - } finally { |
750 |
| - try { |
751 |
| - if (!_iteratorNormalCompletion2 && _iterator2['return']) { |
752 |
| - _iterator2['return'](); |
753 |
| - } |
754 |
| - } finally { |
755 |
| - if (_didIteratorError2) { |
756 |
| - throw _iteratorError2; |
757 |
| - } |
758 |
| - } |
759 |
| - } |
| 741 | + var _this3 = this; |
760 | 742 |
|
| 743 | + lines.forEach(function (line, ind) { |
| 744 | + lines[ind] = _this3.htmlspecialchars(line.substr(4)); |
| 745 | + }); |
761 | 746 | var str = lines.join('\n');
|
762 | 747 |
|
763 | 748 | return (/^\s*$/.test(str) ? '' : '<pre><code>' + str + '</code></pre>'
|
|
828 | 813 | }, {
|
829 | 814 | key: 'parseList',
|
830 | 815 | value: function parseList(lines) {
|
| 816 | + var _this4 = this; |
| 817 | + |
831 | 818 | var html = '';
|
832 | 819 | var minSpace = 99999;
|
833 | 820 | var rows = [];
|
|
848 | 835 |
|
849 | 836 | var found = false;
|
850 | 837 | var secondMinSpace = 99999;
|
851 |
| - var _iteratorNormalCompletion3 = true; |
852 |
| - var _didIteratorError3 = false; |
853 |
| - var _iteratorError3 = undefined; |
854 |
| - |
855 |
| - try { |
856 |
| - for (var _iterator3 = rows[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) { |
857 |
| - var row = _step3.value; |
858 |
| - |
859 |
| - if (Array.isArray(row) && row[0] != minSpace) { |
860 |
| - secondMinSpace = Math.min(secondMinSpace, row[0]); |
861 |
| - found = true; |
862 |
| - } |
863 |
| - } |
864 |
| - } catch (err) { |
865 |
| - _didIteratorError3 = true; |
866 |
| - _iteratorError3 = err; |
867 |
| - } finally { |
868 |
| - try { |
869 |
| - if (!_iteratorNormalCompletion3 && _iterator3['return']) { |
870 |
| - _iterator3['return'](); |
871 |
| - } |
872 |
| - } finally { |
873 |
| - if (_didIteratorError3) { |
874 |
| - throw _iteratorError3; |
875 |
| - } |
| 838 | + rows.forEach(function (row) { |
| 839 | + if (Array.isArray(row) && row[0] != minSpace) { |
| 840 | + secondMinSpace = Math.min(secondMinSpace, row[0]); |
| 841 | + found = true; |
876 | 842 | }
|
877 |
| - } |
878 |
| - |
| 843 | + }); |
879 | 844 | secondMinSpace = found ? 0 : minSpace;
|
880 | 845 |
|
881 | 846 | var lastType = '';
|
882 | 847 | var leftLines = [];
|
883 | 848 |
|
884 |
| - var _iteratorNormalCompletion4 = true; |
885 |
| - var _didIteratorError4 = false; |
886 |
| - var _iteratorError4 = undefined; |
887 |
| - |
888 |
| - try { |
889 |
| - for (var _iterator4 = rows[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) { |
890 |
| - var row = _step4.value; |
891 |
| - |
892 |
| - if (Array.isArray(row)) { |
893 |
| - var _row = _slicedToArray(row, 4); |
| 849 | + rows.forEach(function (row) { |
| 850 | + if (Array.isArray(row)) { |
| 851 | + var _row = _slicedToArray(row, 4); |
894 | 852 |
|
895 |
| - var space = _row[0]; |
896 |
| - var type = _row[1]; |
897 |
| - var line = _row[2]; |
898 |
| - var text = _row[3]; |
| 853 | + var space = _row[0]; |
| 854 | + var type = _row[1]; |
| 855 | + var line = _row[2]; |
| 856 | + var text = _row[3]; |
899 | 857 |
|
900 |
| - if (space !== minSpace) { |
901 |
| - var pattern = new RegExp("^\s{" + secondMinSpace + "}"); |
902 |
| - leftLines.push(line.replace(pattern, '')); |
903 |
| - } else { |
904 |
| - if (lastType !== type) { |
905 |
| - if (lastType.length) { |
906 |
| - html += '</' + lastType + '>'; |
907 |
| - } |
908 |
| - |
909 |
| - html += '<' + type + '>'; |
| 858 | + if (space !== minSpace) { |
| 859 | + var pattern = new RegExp("^\s{" + secondMinSpace + "}"); |
| 860 | + leftLines.push(line.replace(pattern, '')); |
| 861 | + } else { |
| 862 | + if (lastType !== type) { |
| 863 | + if (lastType.length) { |
| 864 | + html += '</' + lastType + '>'; |
910 | 865 | }
|
911 | 866 |
|
912 |
| - if (leftLines.length) { |
913 |
| - html += "<li>" + this.parse(leftLines.join("\n")) + "</li>"; |
914 |
| - } |
| 867 | + html += '<' + type + '>'; |
| 868 | + } |
915 | 869 |
|
916 |
| - leftLines = [text]; |
917 |
| - lastType = type; |
| 870 | + if (leftLines.length) { |
| 871 | + html += "<li>" + _this4.parse(leftLines.join("\n")) + "</li>"; |
918 | 872 | }
|
919 |
| - } else { |
920 |
| - var pattern = new RegExp("^\s{" + secondMinSpace + "}"); |
921 |
| - leftLines.push(row.replace(pattern, '')); |
922 |
| - } |
923 |
| - } |
924 |
| - } catch (err) { |
925 |
| - _didIteratorError4 = true; |
926 |
| - _iteratorError4 = err; |
927 |
| - } finally { |
928 |
| - try { |
929 |
| - if (!_iteratorNormalCompletion4 && _iterator4['return']) { |
930 |
| - _iterator4['return'](); |
931 |
| - } |
932 |
| - } finally { |
933 |
| - if (_didIteratorError4) { |
934 |
| - throw _iteratorError4; |
| 873 | + |
| 874 | + leftLines = [text]; |
| 875 | + lastType = type; |
935 | 876 | }
|
| 877 | + } else { |
| 878 | + var pattern = new RegExp("^\s{" + secondMinSpace + "}"); |
| 879 | + leftLines.push(row.replace(pattern, '')); |
936 | 880 | }
|
937 |
| - } |
| 881 | + }); |
938 | 882 |
|
939 | 883 | if (leftLines.length) {
|
940 | 884 | html += "<li>" + this.parse(leftLines.join("\n")) + ('</li></' + lastType + '>');
|
|
951 | 895 | }, {
|
952 | 896 | key: 'parseTable',
|
953 | 897 | value: function parseTable(lines, value) {
|
954 |
| - var _this3 = this; |
| 898 | + var _this5 = this; |
955 | 899 |
|
956 | 900 | var _value = _slicedToArray(value, 2);
|
957 | 901 |
|
|
1030 | 974 | html += ' align="' + aligns[key] + '"';
|
1031 | 975 | }
|
1032 | 976 |
|
1033 |
| - html += '>' + _this3.parseInline(text) + ('</' + tag + '>'); |
| 977 | + html += '>' + _this5.parseInline(text) + ('</' + tag + '>'); |
1034 | 978 | });
|
1035 | 979 |
|
1036 | 980 | html += '</tr>';
|
|
1076 | 1020 | }, {
|
1077 | 1021 | key: 'parseNormal',
|
1078 | 1022 | value: function parseNormal(lines) {
|
1079 |
| - var _this4 = this; |
| 1023 | + var _this6 = this; |
1080 | 1024 |
|
1081 | 1025 | lines = lines.map(function (line) {
|
1082 |
| - return _this4.parseInline(line); |
| 1026 | + return _this6.parseInline(line); |
1083 | 1027 | });
|
1084 | 1028 |
|
1085 | 1029 | var str = lines.join("\n").trim();
|
|
1137 | 1081 | }, {
|
1138 | 1082 | key: 'parseHtml',
|
1139 | 1083 | value: function parseHtml(lines, type) {
|
1140 |
| - var _iteratorNormalCompletion5 = true; |
1141 |
| - var _didIteratorError5 = false; |
1142 |
| - var _iteratorError5 = undefined; |
1143 |
| - |
1144 |
| - try { |
1145 |
| - for (var _iterator5 = lines[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) { |
1146 |
| - var line = _step5.value; |
| 1084 | + var _this7 = this; |
1147 | 1085 |
|
1148 |
| - line = this.parseInline(line, this.specialWhiteList[type] ? this.specialWhiteList[type] : ''); |
1149 |
| - } |
1150 |
| - } catch (err) { |
1151 |
| - _didIteratorError5 = true; |
1152 |
| - _iteratorError5 = err; |
1153 |
| - } finally { |
1154 |
| - try { |
1155 |
| - if (!_iteratorNormalCompletion5 && _iterator5['return']) { |
1156 |
| - _iterator5['return'](); |
1157 |
| - } |
1158 |
| - } finally { |
1159 |
| - if (_didIteratorError5) { |
1160 |
| - throw _iteratorError5; |
1161 |
| - } |
1162 |
| - } |
1163 |
| - } |
| 1086 | + lines.forEach(function (line) { |
| 1087 | + line = _this7.parseInline(line, _this7.specialWhiteList[type] ? _this7.specialWhiteList[type] : ''); |
| 1088 | + }); |
1164 | 1089 |
|
1165 | 1090 | return lines.join("\n");
|
1166 | 1091 | }
|
|
1331 | 1256 | prev[2] = current[2];
|
1332 | 1257 | this.blocks[this.pos - 1] = prev;
|
1333 | 1258 | this.current = prev[0];
|
1334 |
| - unset(this.blocks[this.pos]); |
| 1259 | + this.blocks.splice(this.pos, 1); |
1335 | 1260 | this.pos--;
|
1336 | 1261 |
|
1337 | 1262 | return this;
|
|
0 commit comments