mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-24 23:48:13 -05:00
Koenig - Expand --
to en dash and ---
to em dash
refs https://github.com/TryGhost/Ghost/issues/9623 - match `--` and `---` and convert if followed by a space or any character respectively - include guards to ensure that expansion doesn't occur inside code blocks
This commit is contained in:
parent
d760e5633c
commit
1b02a63848
1 changed files with 49 additions and 0 deletions
|
@ -85,6 +85,55 @@ export default function (editor, koenig) {
|
|||
|
||||
/* inline markdown ------------------------------------------------------ */
|
||||
|
||||
// --\s = en dash –
|
||||
// ---. = em dash —
|
||||
// separate to the grouped replacement functions because we're matching on
|
||||
// the trailing character which can be anything
|
||||
editor.onTextInput({
|
||||
name: 'hyphens',
|
||||
match: /---?.$/,
|
||||
run(editor) {
|
||||
let {range} = editor;
|
||||
|
||||
let text = editor.range.head.section.textUntil(editor.range.head);
|
||||
|
||||
// do not match if we're in code formatting
|
||||
if (editor.hasActiveMarkup('code') || text.match(/[^\s]?`[^\s]/)) {
|
||||
return;
|
||||
}
|
||||
|
||||
let ndashMatch = text.match(/[^-]--(\s)$/);
|
||||
if (ndashMatch) {
|
||||
let match = ndashMatch[0];
|
||||
range = range.extend(-(match.length - 1));
|
||||
|
||||
if (editor.detectMarkupInRange(range, 'code')) {
|
||||
return;
|
||||
}
|
||||
|
||||
return editor.run((postEditor) => {
|
||||
let position = postEditor.deleteRange(range);
|
||||
postEditor.insertText(position, `–${ndashMatch[1]}`);
|
||||
});
|
||||
}
|
||||
|
||||
let mdashMatch = text.match(/---([^-])$/);
|
||||
if (mdashMatch) {
|
||||
let match = mdashMatch[0];
|
||||
range = range.extend(-(match.length));
|
||||
|
||||
if (editor.detectMarkupInRange(range, 'code')) {
|
||||
return;
|
||||
}
|
||||
|
||||
return editor.run((postEditor) => {
|
||||
let position = postEditor.deleteRange(range);
|
||||
postEditor.insertText(position, `—${mdashMatch[1]}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
function matchStrongStar(editor, text) {
|
||||
let {range} = editor;
|
||||
let matches = text.match(/(?:^|\s)\*\*([^\s*]+|[^\s*][^*]*[^\s])\*\*/);
|
||||
|
|
Loading…
Add table
Reference in a new issue