Java 类com.intellij.psi.impl.cache.impl.id.IdTableBuilding 实例源码
项目:tools-idea
文件:HippieWordCompletionHandler.java
private static CompletionData computeData(final Editor editor, final CharSequence charsSequence) {
final int offset = editor.getCaretModel().getOffset();
final CompletionData data = new CompletionData();
IdTableBuilding.scanWords(new IdTableBuilding.ScanWordProcessor() {
@Override
public void run(final CharSequence chars, @Nullable char[] charsArray, final int start, final int end) {
if (start <= offset && end >= offset) {
data.myPrefix = charsSequence.subSequence(start, offset).toString();
data.myWordUnderCursor = charsSequence.subSequence(start, end).toString();
data.startOffset = start;
}
}
}, charsSequence, 0, charsSequence.length());
if (data.myPrefix == null) {
data.myPrefix = "";
data.myWordUnderCursor = "";
data.startOffset = offset;
}
return data;
}
项目:intellij-ce-playground
文件:BaseFilterLexerUtil.java
public static ScanContent scanContent(FileContent content, IdAndToDoScannerBasedOnFilterLexer indexer) {
ScanContent data = content.getUserData(scanContentKey);
if (data != null) {
content.putUserData(scanContentKey, null);
return data;
}
final boolean needTodo = content.getFile().isInLocalFileSystem(); // same as TodoIndex.getFilter().isAcceptable
final boolean needIdIndex = IdTableBuilding.getFileTypeIndexer(content.getFileType()) instanceof LexerBasedIdIndexer;
final IdDataConsumer consumer = needIdIndex? new IdDataConsumer():null;
final OccurrenceConsumer todoOccurrenceConsumer = new OccurrenceConsumer(consumer, needTodo);
final Lexer filterLexer = indexer.createLexer(todoOccurrenceConsumer);
filterLexer.start(content.getContentAsText());
while (filterLexer.getTokenType() != null) filterLexer.advance();
Map<TodoIndexEntry,Integer> todoMap = null;
if (needTodo) {
for (IndexPattern indexPattern : IndexPatternUtil.getIndexPatterns()) {
final int count = todoOccurrenceConsumer.getOccurrenceCount(indexPattern);
if (count > 0) {
if (todoMap == null) todoMap = new THashMap<TodoIndexEntry, Integer>();
todoMap.put(new TodoIndexEntry(indexPattern.getPatternString(), indexPattern.isCaseSensitive()), count);
}
}
}
data = new ScanContent(
consumer != null? consumer.getResult():Collections.<IdIndexEntry, Integer>emptyMap(),
todoMap != null ? todoMap: Collections.<TodoIndexEntry,Integer>emptyMap()
);
if (needIdIndex && needTodo) content.putUserData(scanContentKey, data);
return data;
}
项目:intellij-ce-playground
文件:BaseFilterLexer.java
protected final void scanWordsInToken(final int occurrenceMask, boolean mayHaveFileRefs, final boolean mayHaveEscapes) {
myOccurenceMask = occurrenceMask;
final int start = getTokenStart();
final int end = getTokenEnd();
IdTableBuilding.scanWords(this, myCachedBufferSequence, myCachedArraySequence, start, end, mayHaveEscapes);
if (mayHaveFileRefs) {
processPossibleComplexFileName(myCachedBufferSequence, myCachedArraySequence, start, end);
}
}
项目:intellij-ce-playground
文件:CreateNSDeclarationIntentionFix.java
private static boolean checkIfGivenXmlHasTheseWords(final String name, final XmlFile tldFileByUri) {
if (name == null || name.isEmpty()) return true;
final List<String> list = StringUtil.getWordsIn(name);
final String[] words = ArrayUtil.toStringArray(list);
final boolean[] wordsFound = new boolean[words.length];
final int[] wordsFoundCount = new int[1];
IdTableBuilding.ScanWordProcessor wordProcessor = new IdTableBuilding.ScanWordProcessor() {
@Override
public void run(final CharSequence chars, @Nullable char[] charsArray, int start, int end) {
if (wordsFoundCount[0] == words.length) return;
final int foundWordLen = end - start;
Next:
for (int i = 0; i < words.length; ++i) {
final String localName = words[i];
if (wordsFound[i] || localName.length() != foundWordLen) continue;
for (int j = 0; j < localName.length(); ++j) {
if (chars.charAt(start + j) != localName.charAt(j)) continue Next;
}
wordsFound[i] = true;
wordsFoundCount[0]++;
break;
}
}
};
final CharSequence contents = tldFileByUri.getViewProvider().getContents();
IdTableBuilding.scanWords(wordProcessor, contents, 0, contents.length());
return wordsFoundCount[0] == words.length;
}
项目:tools-idea
文件:BaseFilterLexerUtil.java
public static ScanContent scanContent(FileContent content, IdAndToDoScannerBasedOnFilterLexer indexer) {
ScanContent data = content.getUserData(scanContentKey);
if (data != null) {
content.putUserData(scanContentKey, null);
return data;
}
final boolean needTodo = content.getFile().getFileSystem().getProtocol().equals(StandardFileSystems.FILE_PROTOCOL);
final boolean needIdIndex = IdTableBuilding.getFileTypeIndexer(content.getFileType()) instanceof LexerBasedIdIndexer;
final IdDataConsumer consumer = needIdIndex? new IdDataConsumer():null;
final OccurrenceConsumer todoOccurrenceConsumer = new OccurrenceConsumer(consumer, needTodo);
final Lexer filterLexer = indexer.createLexer(todoOccurrenceConsumer);
filterLexer.start(content.getContentAsText());
while (filterLexer.getTokenType() != null) filterLexer.advance();
Map<TodoIndexEntry,Integer> todoMap = null;
if (needTodo) {
for (IndexPattern indexPattern : IndexPatternUtil.getIndexPatterns()) {
final int count = todoOccurrenceConsumer.getOccurrenceCount(indexPattern);
if (count > 0) {
if (todoMap == null) todoMap = new THashMap<TodoIndexEntry, Integer>();
todoMap.put(new TodoIndexEntry(indexPattern.getPatternString(), indexPattern.isCaseSensitive()), count);
}
}
}
data = new ScanContent(
consumer != null? consumer.getResult():Collections.<IdIndexEntry, Integer>emptyMap(),
todoMap != null ? todoMap: Collections.<TodoIndexEntry,Integer>emptyMap()
);
if (needIdIndex && needTodo) content.putUserData(scanContentKey, data);
return data;
}
项目:tools-idea
文件:BaseFilterLexer.java
protected final void scanWordsInToken(final int occurrenceMask, boolean mayHaveFileRefs, final boolean mayHaveEscapes) {
myOccurenceMask = occurrenceMask;
final int start = getTokenStart();
final int end = getTokenEnd();
IdTableBuilding.scanWords(this, myCachedBufferSequence, myCachedArraySequence, start, end, mayHaveEscapes);
if (mayHaveFileRefs) {
processPossibleComplexFileName(myCachedBufferSequence, myCachedArraySequence, start, end);
}
}
项目:tools-idea
文件:CreateNSDeclarationIntentionFix.java
private static boolean checkIfGivenXmlHasTheseWords(final String name, final XmlFile tldFileByUri) {
if (name == null || name.isEmpty()) return true;
final List<String> list = StringUtil.getWordsIn(name);
final String[] words = ArrayUtil.toStringArray(list);
final boolean[] wordsFound = new boolean[words.length];
final int[] wordsFoundCount = new int[1];
IdTableBuilding.ScanWordProcessor wordProcessor = new IdTableBuilding.ScanWordProcessor() {
@Override
public void run(final CharSequence chars, @Nullable char[] charsArray, int start, int end) {
if (wordsFoundCount[0] == words.length) return;
final int foundWordLen = end - start;
Next:
for (int i = 0; i < words.length; ++i) {
final String localName = words[i];
if (wordsFound[i] || localName.length() != foundWordLen) continue;
for (int j = 0; j < localName.length(); ++j) {
if (chars.charAt(start + j) != localName.charAt(j)) continue Next;
}
wordsFound[i] = true;
wordsFoundCount[0]++;
break;
}
}
};
final CharSequence contents = tldFileByUri.getViewProvider().getContents();
IdTableBuilding.scanWords(wordProcessor, contents, 0, contents.length());
return wordsFoundCount[0] == words.length;
}
项目:consulo
文件:BaseFilterLexer.java
protected final void scanWordsInToken(final int occurrenceMask, boolean mayHaveFileRefs, final boolean mayHaveEscapes) {
myOccurenceMask = occurrenceMask;
final int start = getTokenStart();
final int end = getTokenEnd();
IdTableBuilding.scanWords(this, myCachedBufferSequence, myCachedArraySequence, start, end, mayHaveEscapes);
if (mayHaveFileRefs) {
processPossibleComplexFileName(myCachedBufferSequence, myCachedArraySequence, start, end);
}
}
项目:consulo
文件:BaseFilterLexerUtil.java
public static ScanContent scanContent(FileContent content, IdAndToDoScannerBasedOnFilterLexer indexer) {
ScanContent data = content.getUserData(scanContentKey);
if (data != null) {
content.putUserData(scanContentKey, null);
return data;
}
final boolean needTodo = content.getFile().getFileSystem() instanceof LocalFileSystem;
final boolean needIdIndex = IdTableBuilding.getFileTypeIndexer(content.getFileType()) instanceof LexerBasedIdIndexer;
final IdDataConsumer consumer = needIdIndex? new IdDataConsumer():null;
final OccurrenceConsumer todoOccurrenceConsumer = new OccurrenceConsumer(consumer, needTodo);
final Lexer filterLexer = indexer.createLexer(todoOccurrenceConsumer);
filterLexer.start(content.getContentAsText());
while (filterLexer.getTokenType() != null) filterLexer.advance();
Map<TodoIndexEntry,Integer> todoMap = null;
if (needTodo) {
for (IndexPattern indexPattern : IndexPatternUtil.getIndexPatterns()) {
final int count = todoOccurrenceConsumer.getOccurrenceCount(indexPattern);
if (count > 0) {
if (todoMap == null) todoMap = new THashMap<TodoIndexEntry, Integer>();
todoMap.put(new TodoIndexEntry(indexPattern.getPatternString(), indexPattern.isCaseSensitive()), count);
}
}
}
data = new ScanContent(
consumer != null? consumer.getResult():Collections.<IdIndexEntry, Integer>emptyMap(),
todoMap != null ? todoMap: Collections.<TodoIndexEntry,Integer>emptyMap()
);
if (needIdIndex && needTodo) content.putUserData(scanContentKey, data);
return data;
}
项目:consulo-xml
文件:CreateNSDeclarationIntentionFix.java
private static boolean checkIfGivenXmlHasTheseWords(final String name, final XmlFile tldFileByUri) {
if (name == null || name.isEmpty()) return true;
final List<String> list = StringUtil.getWordsIn(name);
final String[] words = ArrayUtil.toStringArray(list);
final boolean[] wordsFound = new boolean[words.length];
final int[] wordsFoundCount = new int[1];
IdTableBuilding.ScanWordProcessor wordProcessor = new IdTableBuilding.ScanWordProcessor() {
@Override
public void run(final CharSequence chars, @Nullable char[] charsArray, int start, int end) {
if (wordsFoundCount[0] == words.length) return;
final int foundWordLen = end - start;
Next:
for (int i = 0; i < words.length; ++i) {
final String localName = words[i];
if (wordsFound[i] || localName.length() != foundWordLen) continue;
for (int j = 0; j < localName.length(); ++j) {
if (chars.charAt(start + j) != localName.charAt(j)) continue Next;
}
wordsFound[i] = true;
wordsFoundCount[0]++;
break;
}
}
};
final CharSequence contents = tldFileByUri.getViewProvider().getContents();
IdTableBuilding.scanWords(wordProcessor, contents, 0, contents.length());
return wordsFoundCount[0] == words.length;
}