Что я пытаюсь сделать: Соберите все имена классов и идентификаторов в HTML-скрипте Ace Editor.Найти все имена классов и идентификаторов в редакторе Ace HTML-скрипт
Сейчас я планирую обнаружить изменения пользователя (.on('change'...)
) и получить текущий токен, используя позицию курсора. Если токен не является типом «невостребованного» атрибута-значения, я хочу повторить его с помощью предыдущих токенов, чтобы найти маркер типа «атрибут-имя», к которому принадлежит это «значение атрибута», и определить, класс или id (я не могу просто определить создание токена «имя-атрибут», потому что пользователь может вернуться назад и изменить значения атрибута позже, не меняя имя, и мне нужно обнаружить эти изменения).
Я могу сделать все, кроме как получить предыдущие жетоны. Я просмотрел документацию, и TokenIterator должен это сделать, но когда я пытаюсь сделать что-то вроде var iter = new TokeIterator()
, моя консоль говорит, что TokenIterator
не определен. Я искал google снова и снова, но не нашел никаких результатов. Если правда есть, я, очевидно, не использую правильные слова, чтобы найти ее, но это единственные слова, которые у меня есть.
Есть ли какой-то способ, встроенный в Ace для итерации через жетоны? Я знаю, что я не вижу всех свойств и методов в объекте экземпляра редактора, когда консоль регистрирую его, потому что я могу использовать методы в своем сценарии, которые я не вижу в этом журнале. Есть ли там один, который делает то, что я хочу?
Если нет, как загрузить токен-активатор? Я думаю, что что-то подобное продолжалось, когда я пытался использовать SnippetManager некоторое время назад, и оказалось, что я на самом деле должен был сделать это, чтобы заставить его работать:
var tillPageLoaded = setInterval(function() { // Makes sure page doesn't load forever on startup
if(document.readyState === 'complete') {
clearInterval(tillPageLoaded);
ace.config.loadModule('ace/ext/language_tools', function() {
editor.insertSnippet(myString);
});
}
}, 5);
Это такая же ситуация? Если да, то что должно быть в .loadModules(...)
? Нужно ли мне ссылаться на скрипт где-нибудь? Нужно ли его загружать каким-то другим способом?
Есть ли встроенная функциональность для Ace, которая уже сделает все, что я хочу?
Помимо этого, если у кого-то есть лучшие идеи о том, как это сделать с Тузом, это было бы очень желанным.
Спасибо, я получил эту работу. Я обнаружил, что мне тогда нужно было: var var iter = new TokenIterator (editor.session, 0, 0); '. К сожалению, я нашел, что это будет не очень полезно для меня, потому что Ace решает свои жетоны на каждом ходу, поэтому мне придется каждый раз перестраивать свои данные, снова повторяя токены. – knod
Почему регенерация жетонов является проблемой? он только восстанавливает токены, которые изменились из-за изменений. –
Я хотел бы иметь возможность хранить токен и продолжать проверять его, чтобы увидеть, изменилось ли его значение. Если жетоны уничтожаются каждый раз, когда они меняются, я не могу этого сделать. Я должен был бы оценить весь документ каждый раз, когда происходят изменения, чтобы получить токены. Может быть, есть способ обнаружить создание новых токенов или уничтожение старых, но я не знаю об этом. Он просто удаляет большую часть преимуществ, которые я надеялся извлечь из использования токенов. Если нет другого выбора, я сделаю это, но в противном случае это может просто не стоить того. – knod