Распознать новую строку в Quill.JS

Я хочу, чтобы QuillJS распознавал новые строки, и я просто не могу понять, как...

Например: у меня есть 4 строки, и я хочу поставить «*» впереди и в конце каждой строки, кроме пустой.

пример:

* line1 *

пустой

* строка3 *

* строка4 *

Заранее спасибо! :-)

Изменить: вот фрагмент/текущий статус моего кода

var boldButton = document.querySelector('.ql-bold');
boldButton.addEventListener('click', function() {
        var sel = quill.getSelection();
        if (sel) {
            quill.insertText(sel.index, "*");
            quill.insertText(sel.index+sel.length+1, "*");
            quill.setSelection({index:sel.index+1, length:sel.length});
        }
    })

person CeDeZ    schedule 03.07.2017    source источник
comment
Что вы пробовали? Можете ли вы опубликовать код.   -  person winner_joiner    schedule 03.07.2017
comment
отредактировал тему   -  person CeDeZ    schedule 03.07.2017


Ответы (1)


Это грубое решение, но работает.

Он ищет символы новой строки (в моем случае \n) и вычисляет длину строки:

boldButton.addEventListener('click', function() {
      var sel = quill.getSelection();
      var text = quill.getText(sel.index, sel.length);
      if (sel) {
          // GET ALL LINE LENGTH (MAY ADAPT FOR LINES WITH ONLY SPACES/TABS/...)
          var linesLengths = text.split("\n").map(function(line){
            return line.length;
          });

          var startPosition = sel.index;
          for(var idx = 0; idx < linesLengths.length; idx++){
            var currentLineLength = linesLengths[idx];
            // ONLY MARK LINES WITH SOME CONTENT
            if(currentLineLength > 0){
              quill.insertText(startPosition, "*");
              quill.insertText(startPosition + currentLineLength + 1, "*");
              // PREPARE NEW STARTPOSITION
              startPosition += currentLineLength + 2;
            }
            // COUNT THE NEWLINE SYMBOL
            startPosition++; 
          }
      }
  });

Можно оптимизировать, но я оставил это для читателя.

person winner_joiner    schedule 03.07.2017
comment
это именно то, что я искал! Большое спасибо!! :-) - person CeDeZ; 03.07.2017
comment
@CeDeZ идеально. Можете ли вы принять мой ответ, чтобы я мог продолжать создавать репутацию. :-D Спасибо - person winner_joiner; 03.07.2017
comment
о, конечно, извините... не знал, что такая опция существует :-D готово! - person CeDeZ; 03.07.2017
comment
большое спасибо. не считал символ новой строки и отсутствие ++ на моей стороне - person Josue Martinez; 12.11.2018