Action
Enter Anywhere
UPDATES
about 3 years ago
Typo corrections
about 3 years ago
Typo corrections
about 3 years ago
Removed action used for testing
An action that crates a new Line even if you are in the middle of a senates.
Same with ordered and undordered lists
Steps
-
script
// See online documentation for examples // https://docs.getdrafts.com/docs/actions/scripting var tab = editor.preferredTabString var sel = editor.getSelectedRange() const selection = editor.getLineRange(sel[0] + sel[1], 0) var selectedText = editor.getTextInRange(selection[0], selection[1]) var selectionOffset = [0, 0] var matchList = /(^[\t ]*)((\d*)\.|([-*+])) (.*)/g var isList = matchList.exec(selectedText) if (isList == null) { drawNewLine(selectedText, selection[0] + selection[1]) } else { //alert(isList[0]+','+ isList[1]+','+ isList[2]+','+ isList[3]+','+ isList[4]+','+ isList[5]) var listText if (isList[2].match(RegExp('[-*+]', 'g')) == null) { listText = checkOrderedList() } else { listText = checkList() } drawNewLine(listText[0], selection[0] + selection[1], 0, listText[1]) } function checkOrderedList() { var previousLine = isList[0] var number = parseInt(isList[3]) + 1 var textAfter = '\n' + isList[1] + number + '. ' if (isList[5].trim() == '') { textAfter = isList[1].replace(tab, '') if (textAfter == isList[1]) { previousLine = '' textAfter = '' selectionOffset[0] -= isList[0].length } else { previousLine = textAfter + (number - 1) + '. ' textAfter = '¨d¨' selectionOffset[0] = -tab.length - 1 } } return [previousLine, textAfter] } function checkList() { var previousLine = isList[0] var textAfter = '\n' + isList[1] + isList[2] + ' ' if (isList[5].trim() == '') { textAfter = isList[1].replace(tab, '') if (textAfter == isList[1]) { previousLine = '' textAfter = '' selection[0] -= isList[0].length } else { previousLine = isList[0].replace(tab, '') textAfter = '¨d¨' selectionOffset[0] = -tab.length - 1 } } return [previousLine, textAfter] } function drawNewLine(textToKeep, selectionIndex, selectionRange, textAfterLine) { let newText var indexOffset var newLine = '\n' if (textAfterLine == '') { newLine = '' } else if (textAfterLine == '¨d¨') { newLine = '\n' } if (textAfterLine == null || textAfterLine == '¨d¨') { indexOffset = 0 newText = textToKeep + newLine } else { indexOffset = textAfterLine.length -1 newText = textToKeep + textAfterLine + newLine } editor.setTextInRange(selection[0], selection[1], newText) editor.setSelectedRange(selectionIndex + indexOffset + selectionOffset[0], selectionRange + selectionOffset[1]) } //alert(selectedText.match(RegExp('^'+tab+'*(\d*)', 'g')))
Options
-
After Success Default Notification None Log Level None
Items available in the Drafts Directory are uploaded by community members. Use appropriate caution reviewing downloaded items before use.