diff --git a/platform/platform-api/src/com/intellij/lexer/DummyLexer.java b/platform/platform-api/src/com/intellij/lexer/DummyLexer.java new file mode 100644 index 000000000000..e20f4e575e0c --- /dev/null +++ b/platform/platform-api/src/com/intellij/lexer/DummyLexer.java @@ -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; + } +} diff --git a/platform/platform-api/src/com/intellij/lexer/EmptyLexer.java b/platform/platform-api/src/com/intellij/lexer/EmptyLexer.java index 10d58ab58c95..68d5c9b9a9c3 100644 --- a/platform/platform-api/src/com/intellij/lexer/EmptyLexer.java +++ b/platform/platform-api/src/com/intellij/lexer/EmptyLexer.java @@ -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; - } - } diff --git a/plugins/properties/src/com/intellij/lang/properties/editor/PropertiesValueHighlightingLexer.java b/plugins/properties/src/com/intellij/lang/properties/editor/PropertiesValueHighlightingLexer.java index 83b863ce453a..a4e105adbc6c 100644 --- a/plugins/properties/src/com/intellij/lang/properties/editor/PropertiesValueHighlightingLexer.java +++ b/plugins/properties/src/com/intellij/lang/properties/editor/PropertiesValueHighlightingLexer.java @@ -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);