2016-02-10 4 views
0

Есть ли способ в CodeMirror, работающий в режиме XML, для чтения всех атрибутов тега в позиции курсора?CodeMirror XML Mode: Читать все атрибуты

Маркер у курсора может быть определена с помощью

var cur = cm.getCursor(), token = cm.getTokenAt(cur);

Пример: Оператор "<mytag id="1" name="Test"/>" может привести к следующим образом:

{ id: "1", name: "Test" }

Спасибо за любые советы.

ответ

0

Это может помочь кому-то!

cm.on("cursorActivity", function() { 
    var cur = cm.getCursor(), 
     tagList = [ 
      "control", 
      "fql", 
      "text" 
     ], 
     range = cm.getViewport(), 
     attributes = {}; 

    range.from = Math.min(range.from, cur.line); 
    range.to = Math.max(cur.line + 1, range.to); 

    var match = CodeMirror.findMatchingTag(cm, cur, range); 

    if (match && match.at === "open" && tagList.indexOf(match.open.tag.toLowerCase()) > -1) { 
     var doc = cm.getDoc(), 
      tagLine = doc.getRange(match.open.from, match.open.to, false).join(""), 
      re = /(\S+)\s*?=\s*(['"])(.*?|)\2/g, 
      m; 

     while ((m = re.exec(tagLine)) !== null) { 
      if (m.index === re.lastIndex) { 
       re.lastIndex++; 
      } 

      attributes[m[1]] = m[3]; 
     } 

     console.log(attributes); 
    } 
}); 
Смежные вопросы