2
0
mirror of https://github.com/Ionaru/easy-markdown-editor synced 2025-07-29 12:54:28 -06:00

WIP: Typo updated

This commit is contained in:
Pierre-Henri Lavigne 2024-09-12 23:30:33 +09:00
parent 6d0174fd46
commit 472dad6d65
No known key found for this signature in database
GPG Key ID: E2D1C9E2BBD3007D

View File

@ -1124,6 +1124,13 @@ function _toggleHeading(cm, direction, size) {
var startPoint = cm.getCursor('start'); var startPoint = cm.getCursor('start');
var endPoint = cm.getCursor('end'); var endPoint = cm.getCursor('end');
var sharpLevels = cm.options.backdrop.headingLevels || [],
minLevel = sharpLevels.length ? sharpLevels[0] : 1,
maxLevel = sharpLevels.length ? sharpLevels[sharpLevels.length-1] : 6;
if (size && sharpLevels.length && sharpLevels.indexOf(size) === -1) {
cm.focus();
return false;
}
for (var i = startPoint.line; i <= endPoint.line; i++) { for (var i = startPoint.line; i <= endPoint.line; i++) {
(function (i) { (function (i) {
var text = cm.getLine(i); var text = cm.getLine(i);
@ -1132,14 +1139,20 @@ function _toggleHeading(cm, direction, size) {
if (direction !== undefined) { if (direction !== undefined) {
if (currHeadingLevel <= 0) { if (currHeadingLevel <= 0) {
if (direction == 'bigger') { if (direction == 'bigger') {
text = '###### ' + text; text = '#'.repeat(maxLevel) + ' ' + text;
} else { } else {
text = '# ' + text; text = '#'.repeat(minLevel) + ' ' + text;
}
} else if (currHeadingLevel == maxLevel && direction == 'smaller') {
text = text.substr(maxLevel + 1);
} else if (currHeadingLevel == minLevel && direction == 'bigger') {
text = text.substr(minLevel + 1);
} else if (sharpLevels.length) {
if (direction == 'bigger') {
text = '#'.repeat(sharpLevels[sharpLevels.indexOf(currHeadingLevel)-1]) + text.replace(/^[#]+/, '' );
} else {
text = '#'.repeat(sharpLevels[sharpLevels.indexOf(currHeadingLevel)+1]) + text.replace(/^[#]+/, '' );
} }
} else if (currHeadingLevel == 6 && direction == 'smaller') {
text = text.substr(7);
} else if (currHeadingLevel == 1 && direction == 'bigger') {
text = text.substr(2);
} else { } else {
if (direction == 'bigger') { if (direction == 'bigger') {
text = text.substr(1); text = text.substr(1);
@ -2205,141 +2218,138 @@ EasyMDE.prototype.render = function (el) {
} }
if (options.parsingConfig.headingLevels) { if (options.parsingConfig.headingLevels) {
// If the *headingLevels* argument is present, set our custom modifiers // If the *headingLevels* argument is present, set our custom modifiers
var headlineMakeBigger = function(headline, from, to) { var headingMakeBigger = function(heading, from, to) {
headline = headline || ''; heading = heading || '';
if (!from || !to || from >= to) { if (!from || !to || from >= to) {
return ''; return '';
} }
var level = ''; var level = '';
if (!headline.length) { if (!heading.length) {
while (from < to) { while (from < to) {
level += '#'; level += '#';
from++; from++;
} }
level += ' '; level += ' ';
return level; return level;
} } else {
else {
while (to > 0) { while (to > 0) {
level += '#'; level += '#';
to--; to--;
} }
level += ' '; level += ' ';
return /#/.test(headline) ? headline.replace(/^[#]+\s*/, level) : level; return /#/.test(heading) ? heading.replace(/^[#]+\s*/, level) : level;
} }
}; };
var headlineMakeSmaller = function(headline, from, to) { var headingMakeSmaller = function(heading, from, to) {
headline = headline || ''; heading = heading || '';
if (!from || !to || from <= to) { if (!from || !to || from <= to) {
return ''; return '';
} }
var level = ''; var level = '';
if (!headline.length) { if (!heading.length) {
while (from > to) { while (from > to) {
level += '#'; level += '#';
from--; from--;
} }
level += ' '; level += ' ';
return level; return level;
} } else {
else {
while (to > 0) { while (to > 0) {
level += '#'; level += '#';
to--; to--;
} }
level += ' '; level += ' ';
return /#/.test(headline) ? headline.replace(/^[#]+\s*/, level) : level; return /#/.test(heading) ? heading.replace(/^[#]+\s*/, level) : level;
} }
}; };
var headlineNeedUpdate = function(myCurrHeadline, allowedHeadlingLevels, levelSearchDir) { var headingNeedUpdate = function(currHeading, allowedHeadingLevels, levelSearchDir) {
if (!myCurrHeadline || !allowedHeadlingLevels) { if (!currHeading || !allowedHeadingLevels) {
return false; return false;
} }
myCurrHeadline = myCurrHeadline.trim(); currHeading = currHeading.trim();
if (!/^#+/.test(myCurrHeadline)){ if (!/^#+/.test(currHeading)){
return false; return false;
} }
var currHeadlingLevel = (myCurrHeadline.match(/^([#]+)/g) || [''])[0].length; var currHeadingLevel = (currHeading.match(/^([#]+)/g) || [''])[0].length;
if (allowedHeadlingLevels.indexOf(currHeadlingLevel) !== -1) { if (allowedHeadingLevels.indexOf(currHeadingLevel) !== -1) {
return false; return false;
} }
levelSearchDir = levelSearchDir || 'asc'; levelSearchDir = levelSearchDir || 'asc';
var newHeadingLevel = -1, n = 0; var newHeadingLevel = -1, n = 0;
if (levelSearchDir === 'asc') { if (levelSearchDir === 'asc') {
while (n < allowedHeadlingLevels.length) { while (n < allowedHeadingLevels.length) {
if (allowedHeadlingLevels[n] > currHeadlingLevel) { if (allowedHeadingLevels[n] > currHeadingLevel) {
newHeadingLevel = allowedHeadlingLevels[n]; newHeadingLevel = allowedHeadingLevels[n];
break; break;
} }
n++; n++;
} }
} }
if (newHeadingLevel < 0) { if (newHeadingLevel < 0) {
n = allowedHeadlingLevels.length - 1; n = allowedHeadingLevels.length - 1;
while (n > -1) { while (n > -1) {
if (allowedHeadlingLevels[n] < currHeadlingLevel) { if (allowedHeadingLevels[n] < currHeadingLevel) {
newHeadingLevel = allowedHeadlingLevels[n]; newHeadingLevel = allowedHeadingLevels[n];
break; break;
} }
n--; n--;
} }
if (levelSearchDir === 'dsc') { if (levelSearchDir === 'dsc') {
currHeadlingLevel += 1; currHeadingLevel += 1;
if (newHeadingLevel < 0) { if (newHeadingLevel < 0) {
newHeadingLevel = 0; newHeadingLevel = 0;
} }
} }
} }
if (newHeadingLevel < 0 || newHeadingLevel === currHeadlingLevel) { if (newHeadingLevel < 0 || newHeadingLevel === currHeadingLevel) {
return false; return false;
} }
return { return {
from: currHeadlingLevel, from: currHeadingLevel,
to: newHeadingLevel, to: newHeadingLevel,
diff: Math.abs(newHeadingLevel - currHeadlingLevel), diff: Math.abs(newHeadingLevel - currHeadingLevel),
}; };
}; };
var headlineCheckNew = function(cm, obj) { var headingCheckNew = function(cm, obj) {
var myHeadline = cm.getRange({ var currHeading = cm.getRange({
line: obj.from.line, line: obj.from.line,
ch: 0, ch: 0,
}, { }, {
line: obj.to.line, line: obj.to.line,
ch: obj.to.ch, ch: obj.to.ch,
}); });
var levels = headlineNeedUpdate(myHeadline, cm.options.backdrop.headingLevels); var myLevels = headingNeedUpdate(currHeading, cm.options.backdrop.headingLevels);
if (!levels || !levels.from || !levels.to) { if (!myLevels || !myLevels.from || !myLevels.to) {
return false; return false;
} }
if (obj.from.line === obj.to.line) { if (obj.from.line === obj.to.line) {
// Most simple case when a modification has occured on a single line // Most simple case when a modification has occured on a single line
if (levels.to > levels.from) { if (myLevels.to > myLevels.from) {
// Current level is forbidden so we jump to the closest upper level allowed // Current level is forbidden so we jump to the closest upper level allowed
// We only need to reset the sharp numbers with the appropriate value before the modification is applied // We only need to reset the sharp numbers with the appropriate value before the modification is applied
obj.text[0] = headlineMakeBigger('', levels.from, levels.to); obj.text[0] = headingMakeBigger('', myLevels.from, myLevels.to);
} } else {
else {
// The current level is forbidden and we jump to the closest lower level available // The current level is forbidden and we jump to the closest lower level available
// A bit more is needed: we have to cancel the requested update and trigger a replacement with the existing sharp signs // A bit more is needed: we have to cancel the requested update and trigger a replacement with the existing sharp signs
obj.cancel(); obj.cancel();
var newHeadline = ''; var newHeading = '';
while (levels.to > 0) { while (myLevels.to > 0) {
newHeadline += '#'; newHeading += '#';
levels.to--; myLevels.to--;
} }
newHeadline += ' '; newHeading += ' ';
cm.doc.replaceRange(newHeadline, { cm.doc.replaceRange(newHeading, {
line: obj.from.line, line: obj.from.line,
ch: 0, ch: 0,
}, { }, {
line: obj.to.line, line: obj.to.line,
ch: obj.to.ch, ch: obj.to.ch,
}, myHeadline ); // 4th arguments to keep a trace in the history when possible }, currHeading ); // 4th arguments to keep a trace in the history when possible
} }
} }
return true; return true;
}; };
var headlineCheckExisting = function(cm, obj) { var headingCheckExisting = function(cm, obj) {
var myChar = cm.getRange({ var myChar = cm.getRange({
line: obj.from.line, line: obj.from.line,
ch: obj.from.ch, ch: obj.from.ch,
@ -2360,8 +2370,7 @@ EasyMDE.prototype.render = function (el) {
} }
if (!/#/.test(myText)) { if (!/#/.test(myText)) {
myText = '# ' + myText.trim(); // Wasn't headline myText = '# ' + myText.trim(); // Wasn't headline
} } else {
else {
myText = myText.replace(/#/, '##'); // Increment one sharp sign myText = myText.replace(/#/, '##'); // Increment one sharp sign
} }
myLevels = headlineNeedUpdate(myText, cm.options.backdrop.headingLevels); myLevels = headlineNeedUpdate(myText, cm.options.backdrop.headingLevels);
@ -2418,11 +2427,9 @@ EasyMDE.prototype.render = function (el) {
var myLevels = headlineNeedUpdate(row, cm.options.backdrop.headingLevels); var myLevels = headlineNeedUpdate(row, cm.options.backdrop.headingLevels);
if (!myLevels || !myLevels.from || !myLevels.to) { if (!myLevels || !myLevels.from || !myLevels.to) {
return row; return row;
} } else if (myLevels.from < myLevels.to) {
else if (myLevels.from < myLevels.to) {
return headlineMakeBigger(row, myLevels.from, myLevels.to); return headlineMakeBigger(row, myLevels.from, myLevels.to);
} } else if (myLevels.to < myLevels.from) {
else if (myLevels.to < myLevels.from) {
return headlineMakeSmaller(row, myLevels.from, myLevels.to); return headlineMakeSmaller(row, myLevels.from, myLevels.to);
} }
return row; return row;
@ -2455,8 +2462,7 @@ EasyMDE.prototype.render = function (el) {
// Only one character on one line is being updated // Only one character on one line is being updated
if (obj.text[0] === ' ') { if (obj.text[0] === ' ') {
return headlineCheckNew(cm, obj); return headlineCheckNew(cm, obj);
} } else if (obj.text[0] === '#') {
else if (obj.text[0] === '#') {
return headlineCheckExisting(cm, obj); return headlineCheckExisting(cm, obj);
} }
} }
@ -2499,8 +2505,7 @@ EasyMDE.prototype.render = function (el) {
obj.from.ch = 0; obj.from.ch = 0;
} }
} }
} } else { // 2nd and next rows
else { // 2nd and next rows
obj.text[r] = headingCheckRow(obj.text[r], cm); obj.text[r] = headingCheckRow(obj.text[r], cm);
} }
} }