mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:10:43 +07:00
Introduced DummyLexer
This commit is contained in:
70
platform/platform-api/src/com/intellij/lexer/DummyLexer.java
Normal file
70
platform/platform-api/src/com/intellij/lexer/DummyLexer.java
Normal file
@@ -0,0 +1,70 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.lexer;
|
||||
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
|
||||
public class DummyLexer extends LexerBase {
|
||||
private CharSequence myBuffer;
|
||||
private int myStartOffset;
|
||||
private int myEndOffset;
|
||||
private final IElementType myTokenType;
|
||||
|
||||
public DummyLexer(IElementType type) {
|
||||
myTokenType = type;
|
||||
}
|
||||
|
||||
public void start(final CharSequence buffer, final int startOffset, final int endOffset, final int initialState) {
|
||||
myBuffer = buffer;
|
||||
myStartOffset = startOffset;
|
||||
myEndOffset = endOffset;
|
||||
}
|
||||
|
||||
public CharSequence getBufferSequence() {
|
||||
return myBuffer;
|
||||
}
|
||||
|
||||
public int getState() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public IElementType getTokenType() {
|
||||
return (myStartOffset < myEndOffset ? myTokenType : null);
|
||||
}
|
||||
|
||||
public int getTokenStart() {
|
||||
return myStartOffset;
|
||||
}
|
||||
|
||||
public int getTokenEnd() {
|
||||
return myEndOffset;
|
||||
}
|
||||
|
||||
public void advance() {
|
||||
myStartOffset = myEndOffset;
|
||||
}
|
||||
|
||||
public LexerPosition getCurrentPosition() {
|
||||
return new LexerPositionImpl(0, getState());
|
||||
}
|
||||
|
||||
public void restore(LexerPosition position) {
|
||||
}
|
||||
|
||||
public int getBufferEnd() {
|
||||
return myEndOffset;
|
||||
}
|
||||
}
|
||||
@@ -18,51 +18,10 @@ package com.intellij.lexer;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
|
||||
public class EmptyLexer extends LexerBase {
|
||||
private CharSequence myBuffer;
|
||||
private int myStartOffset;
|
||||
private int myEndOffset;
|
||||
|
||||
public class EmptyLexer extends DummyLexer {
|
||||
private static final IElementType EMPTY_TOKEN_TYPE = new IElementType("empty token", Language.ANY);
|
||||
|
||||
public void start(final CharSequence buffer, final int startOffset, final int endOffset, final int initialState) {
|
||||
myBuffer = buffer;
|
||||
myStartOffset = startOffset;
|
||||
myEndOffset = endOffset;
|
||||
public EmptyLexer() {
|
||||
super(EMPTY_TOKEN_TYPE);
|
||||
}
|
||||
|
||||
public CharSequence getBufferSequence() {
|
||||
return myBuffer;
|
||||
}
|
||||
|
||||
public int getState() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public IElementType getTokenType() {
|
||||
return (myStartOffset < myEndOffset ? EMPTY_TOKEN_TYPE : null);
|
||||
}
|
||||
|
||||
public int getTokenStart() {
|
||||
return myStartOffset;
|
||||
}
|
||||
|
||||
public int getTokenEnd() {
|
||||
return myEndOffset;
|
||||
}
|
||||
|
||||
public void advance() {
|
||||
myStartOffset = myEndOffset;
|
||||
}
|
||||
|
||||
public LexerPosition getCurrentPosition() {
|
||||
return new LexerPositionImpl(0, getState());
|
||||
}
|
||||
|
||||
public void restore(LexerPosition position) {}
|
||||
|
||||
public int getBufferEnd() {
|
||||
return myEndOffset;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -20,18 +20,14 @@
|
||||
package com.intellij.lang.properties.editor;
|
||||
|
||||
import com.intellij.lang.properties.parsing.PropertiesTokenTypes;
|
||||
import com.intellij.lexer.EmptyLexer;
|
||||
import com.intellij.lexer.DummyLexer;
|
||||
import com.intellij.lexer.LayeredLexer;
|
||||
import com.intellij.lexer.StringLiteralLexer;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
|
||||
public class PropertiesValueHighlightingLexer extends LayeredLexer {
|
||||
public PropertiesValueHighlightingLexer() {
|
||||
super(new EmptyLexer(){
|
||||
public IElementType getTokenType() {
|
||||
return getTokenStart() < getTokenEnd() ? PropertiesTokenTypes.VALUE_CHARACTERS : null;
|
||||
}
|
||||
});
|
||||
super(new DummyLexer(PropertiesTokenTypes.VALUE_CHARACTERS));
|
||||
|
||||
registerSelfStoppingLayer(new StringLiteralLexer(StringLiteralLexer.NO_QUOTE_CHAR, PropertiesTokenTypes.VALUE_CHARACTERS, true, "#!=:"),
|
||||
new IElementType[]{PropertiesTokenTypes.VALUE_CHARACTERS}, IElementType.EMPTY_ARRAY);
|
||||
|
||||
Reference in New Issue
Block a user