2016-08-02 7 views
0

내가하려는 일 : Ace Editor HTML 스크립트에서 모든 클래스 및 ID 이름을 수집하십시오.Ace Editor HTML 스크립트의 모든 클래스 및 ID 이름 찾기

지금 내 계획은 사용자 변경 (.on('change'...))을 감지하고 커서 위치를 사용하여 현재 토큰을 얻는 것입니다. 토큰이 '인용되지 않은'속성 값 유형이 아닌 경우 '속성 값'이 속한 '속성 이름'유형 토큰을 찾고 이전 토큰이 아닌지 식별하려면 이전 토큰을 반복합니다. 클래스 또는 ID (사용자가 돌아가서 나중에 이름을 변경하지 않고 속성 값을 변경할 수 있기 때문에 '속성 이름'토큰 생성을 감지 할 수 없으며 이러한 변경 사항을 감지해야합니다.)

이전 토큰을 제외한 모든 작업을 수행 할 수 있습니다. 나는 어떤 문서를 찾았고 TokenIterator는 그것을 할 수 있어야한다고 생각하지만, var iter = new TokeIterator()과 같은 것을하려고 할 때 나의 콘솔은 TokenIterator이 정의되지 않았다고 말합니다. 나는 Google을 계속해서 검색했지만 아무런 결과도 찾지 못했습니다. 진실이 밖이라면 나는 그것을 발견하기 위해 분명히 적절한 단어를 사용하지 않고 있지만, 나는 그들이 가지고있는 유일한 단어이다.

에이스에 토큰을 반복하는 방법이 있습니까? 내가 로그 할 때 볼 수없는 스크립트에서 메소드를 사용할 수 있기 때문에 콘솔 인스턴스를 편집 할 때 에디터 인스턴스 객체의 모든 속성과 메서드를 볼 수 없다는 것을 알고 있습니다. 거기에 내가 원하는 걸하는 사람이 있니?

그렇지 않은 경우 어떻게 TokenIterator를로드합니까? 나는 비슷한 내가 다시 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에 내장되어 있습니까?

그 외에도 누구나 Ace로이 문제를 해결하는 방법에 대해 더 좋은 아이디어가 있다면 매우 환영 할 것입니다.

답변

0

당신은

var TokenIterator = ace.require("ace/token_iterator").TokenIterator 

는 사용의 예는 https://github.com/ajaxorg/ace/blob/master/lib/ace/mode/folding/xml.js#L38를 참조하여 TokenIterator를 얻을 수 있습니다.

+0

감사합니다. 그때 내가 할 필요가 발견 :'var iter = new TokenIterator (editor.session, 0, 0);'. 불행히도 에이스가 주위를 돌아 다니면서 토큰을 다시 만들기 때문에 매번 내 데이터를 다시 빌드해야하고 토큰을 다시 순환해야하기 때문에 제게별로 유용하지 않을 것입니다. – knod

+0

왜 토큰의 재생성에 문제가 있습니까? 편집으로 인해 변경된 토큰 만 다시 생성합니다. –

+0

토큰을 저장하고 값을 변경했는지 확인하기 위해 계속 확인하고 싶습니다. 토큰이 변경 될 때마다 토큰이 파괴되면 그렇게 할 수 없습니다. 토큰을 검색하기 위해 변경이 발생할 때마다 전체 문서를 평가해야합니다. 어쩌면 새로운 토큰의 생성이나 오래된 토큰의 파괴를 감지 할 수있는 방법이 있을지 모르지만 나는 그것을 알지 못합니다. 그것은 단지 토큰을 사용하여 나가기를 바랐던 장점 대부분을 제거합니다. 다른 선택의 여지가 없다면 해보 겠지만, 그렇지 않으면 가치가 없을 수도 있습니다. – knod