diff --git a/confluence/src/main/java/org/jetbrains/jet/lexer/JetMacro.java b/confluence/src/main/java/org/jetbrains/jet/lexer/JetMacro.java
index 124be8a0220..21e93c4548c 100644
--- a/confluence/src/main/java/org/jetbrains/jet/lexer/JetMacro.java
+++ b/confluence/src/main/java/org/jetbrains/jet/lexer/JetMacro.java
@@ -6,11 +6,13 @@ import com.atlassian.renderer.RenderContext;
import com.atlassian.renderer.v2.RenderMode;
import com.atlassian.renderer.v2.macro.BaseMacro;
import com.atlassian.renderer.v2.macro.MacroException;
+import com.intellij.psi.TokenType;
import com.intellij.psi.tree.IElementType;
import org.apache.velocity.VelocityContext;
import java.io.IOException;
import java.io.StringReader;
+import java.util.HashMap;
import java.util.Map;
/**
@@ -29,6 +31,7 @@ public class JetMacro extends BaseMacro {
@Override
public String execute(Map map, String code, RenderContext renderContext) throws MacroException {
+ code = code.trim();
VelocityContext context = new VelocityContext(MacroUtils.defaultVelocityContext());
String renderedTemplate = VelocityUtils.getRenderedTemplate("template.velocity", context);
@@ -39,23 +42,49 @@ public class JetMacro extends BaseMacro {
"
"
);
- _JetLexer jetLexer = new _JetLexer(new StringReader(code));
+ _JetLexer jetLexer = new _JetLexer(new StringReader(""));
jetLexer.reset(code, 0, code.length(), _JetLexer.YYINITIAL);
+
+ Map
styleMap = new HashMap();
+ styleMap.put(JetTokens.BLOCK_COMMENT, "comment");
+ styleMap.put(JetTokens.DOC_COMMENT, "comment");
+ styleMap.put(JetTokens.EOL_COMMENT, "comment");
+ styleMap.put(JetTokens.WHITE_SPACE, "whitespace");
+ styleMap.put(JetTokens.INTEGER_LITERAL, "number");
+ styleMap.put(JetTokens.FLOAT_LITERAL, "number");
+ styleMap.put(JetTokens.OPEN_QUOTE, "string");
+ styleMap.put(JetTokens.REGULAR_STRING_PART, "string");
+ styleMap.put(JetTokens.ESCAPE_SEQUENCE, "escape");
+ styleMap.put(JetTokens.LONG_TEMPLATE_ENTRY_START, "escape");
+ styleMap.put(JetTokens.LONG_TEMPLATE_ENTRY_END, "escape");
+ styleMap.put(JetTokens.SHORT_TEMPLATE_ENTRY_START, "escape");
+ styleMap.put(JetTokens.ESCAPE_SEQUENCE, "escape");
+ styleMap.put(JetTokens.CLOSING_QUOTE, "string");
+ styleMap.put(JetTokens.CHARACTER_LITERAL, "string");
+ styleMap.put(JetTokens.LABEL_IDENTIFIER, "label");
+ styleMap.put(JetTokens.ATAT, "label");
+ styleMap.put(JetTokens.FIELD_IDENTIFIER, "field");
+ styleMap.put(JetTokens.RAW_STRING_LITERAL, "string");
+ styleMap.put(TokenType.BAD_CHARACTER, "bad");
+
while (true) {
try {
IElementType token = jetLexer.advance();
if (token == null) break;
CharSequence yytext = jetLexer.yytext();
- String style;
+ String style = null;
if (token instanceof JetKeywordToken) {
style = "keyword";
- } else if (token == JetTokens.BLOCK_COMMENT || token == JetTokens.DOC_COMMENT || token == JetTokens.EOL_COMMENT) {
- style = "comment";
} else if (token == JetTokens.IDENTIFIER) {
-
- style = "softkeyword";
- } else if (token == JetTokens.WHITE_SPACE) {
- style = "whitespace";
+ for (IElementType softKeyword : JetTokens.SOFT_KEYWORDS.asSet()) {
+ if (((JetKeywordToken) softKeyword).getValue().equals(yytext.toString())) {
+ style = "softkeyword";
+ break;
+ }
+ }
+ style = style == null ? "plain" : style;
+ } else if (styleMap.containsKey(token)) {
+ style = styleMap.get(token);
} else {
style = "plain";
}
diff --git a/confluence/src/main/java/org/jetbrains/jet/lexer/JetTokens.java b/confluence/src/main/java/org/jetbrains/jet/lexer/JetTokens.java
index 07b418207bf..d50cc507f1a 100644
--- a/confluence/src/main/java/org/jetbrains/jet/lexer/JetTokens.java
+++ b/confluence/src/main/java/org/jetbrains/jet/lexer/JetTokens.java
@@ -62,7 +62,7 @@ public interface JetTokens {
JetKeywordToken CAPITALIZED_THIS_KEYWORD = JetKeywordToken.keyword("This");
- JetToken AS_SAFE = new JetToken("as?");
+ JetToken AS_SAFE = JetKeywordToken.keyword("AS_SAFE");//new JetToken("as?");
JetToken IDENTIFIER = new JetToken("IDENTIFIER");
JetToken LABEL_IDENTIFIER = new JetToken("LABEL_IDENTIFIER");
@@ -150,7 +150,7 @@ public interface JetTokens {
TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD,
IN_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, CONTINUE_KEYWORD, OBJECT_KEYWORD, IF_KEYWORD,
ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD, TRY_KEYWORD, WHEN_KEYWORD,
- NOT_IN, NOT_IS, CAPITALIZED_THIS_KEYWORD
+ NOT_IN, NOT_IS, CAPITALIZED_THIS_KEYWORD, AS_SAFE
);
TokenSet SOFT_KEYWORDS = TokenSet.create(WRAPS_KEYWORD, IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, GET_KEYWORD,
diff --git a/confluence/src/main/java/org/jetbrains/jet/lexer/_JetLexer.java b/confluence/src/main/java/org/jetbrains/jet/lexer/_JetLexer.java
index 9cd77cca9cc..b2d384a2623 100644
--- a/confluence/src/main/java/org/jetbrains/jet/lexer/_JetLexer.java
+++ b/confluence/src/main/java/org/jetbrains/jet/lexer/_JetLexer.java
@@ -1,4 +1,4 @@
-/* The following code was generated by JFlex 1.4.3 on 7/12/11 5:50 PM */
+/* The following code was generated by JFlex 1.4.3 on 7/12/11 6:40 PM */
/* It's an automatically generated code. Do not modify it. */
package org.jetbrains.jet.lexer;
@@ -14,7 +14,7 @@ import org.jetbrains.jet.lexer.JetTokens;
/**
* This class is a scanner generated by
* JFlex 1.4.3
- * on 7/12/11 5:50 PM from the specification file
+ * on 7/12/11 6:40 PM from the specification file
* /Users/abreslav/work/jet/confluence/../idea/src/org/jetbrains/jet/lexer/Jet.flex
*/
class _JetLexer implements FlexLexer {
diff --git a/confluence/src/main/resources/jet.css b/confluence/src/main/resources/jet.css
index 48a99ba0d84..ebdf70be7da 100644
--- a/confluence/src/main/resources/jet.css
+++ b/confluence/src/main/resources/jet.css
@@ -5,4 +5,35 @@
.jet.keyword {
font-weight: bold;
color: #369;
-}
\ No newline at end of file
+}
+
+.jet.softkeyword {
+ color: #369;
+}
+
+.jet.comment {
+ color : green;
+}
+
+.jet.number {
+ color : blue;
+}
+.jet.string {
+ color : #000099;
+ font-weight: bold;
+}
+.jet.escape {
+ font-weight: bold;
+ color : black;
+}
+.jet.label {
+ color : blue;
+}
+.jet.field {
+ color : blue;
+ font-weight: bold;
+}
+.jet.bad {
+ background-color : #FF9999;
+ color:black;
+}
diff --git a/idea/src/org/jetbrains/jet/lexer/JetTokens.java b/idea/src/org/jetbrains/jet/lexer/JetTokens.java
index 07b418207bf..d50cc507f1a 100644
--- a/idea/src/org/jetbrains/jet/lexer/JetTokens.java
+++ b/idea/src/org/jetbrains/jet/lexer/JetTokens.java
@@ -62,7 +62,7 @@ public interface JetTokens {
JetKeywordToken CAPITALIZED_THIS_KEYWORD = JetKeywordToken.keyword("This");
- JetToken AS_SAFE = new JetToken("as?");
+ JetToken AS_SAFE = JetKeywordToken.keyword("AS_SAFE");//new JetToken("as?");
JetToken IDENTIFIER = new JetToken("IDENTIFIER");
JetToken LABEL_IDENTIFIER = new JetToken("LABEL_IDENTIFIER");
@@ -150,7 +150,7 @@ public interface JetTokens {
TRUE_KEYWORD, FALSE_KEYWORD, IS_KEYWORD,
IN_KEYWORD, THROW_KEYWORD, RETURN_KEYWORD, BREAK_KEYWORD, CONTINUE_KEYWORD, OBJECT_KEYWORD, IF_KEYWORD,
ELSE_KEYWORD, WHILE_KEYWORD, DO_KEYWORD, TRY_KEYWORD, WHEN_KEYWORD,
- NOT_IN, NOT_IS, CAPITALIZED_THIS_KEYWORD
+ NOT_IN, NOT_IS, CAPITALIZED_THIS_KEYWORD, AS_SAFE
);
TokenSet SOFT_KEYWORDS = TokenSet.create(WRAPS_KEYWORD, IMPORT_KEYWORD, WHERE_KEYWORD, BY_KEYWORD, GET_KEYWORD,
diff --git a/idea/testData/psi/Precedence.txt b/idea/testData/psi/Precedence.txt
index 578dcf46a8d..93567f53e3b 100644
--- a/idea/testData/psi/Precedence.txt
+++ b/idea/testData/psi/Precedence.txt
@@ -807,7 +807,7 @@ JetFile: Precedence.jet
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
- PsiElement(as?)('as?')
+ PsiElement(AS_SAFE)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
NULLABLE_TYPE
@@ -829,7 +829,7 @@ JetFile: Precedence.jet
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
- PsiElement(as?)('as?')
+ PsiElement(AS_SAFE)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
@@ -865,7 +865,7 @@ JetFile: Precedence.jet
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
- PsiElement(as?)('as?')
+ PsiElement(AS_SAFE)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
FUNCTION_TYPE
@@ -1029,7 +1029,7 @@ JetFile: Precedence.jet
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
- PsiElement(as?)('as?')
+ PsiElement(AS_SAFE)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
NULLABLE_TYPE
@@ -1058,7 +1058,7 @@ JetFile: Precedence.jet
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
- PsiElement(as?)('as?')
+ PsiElement(AS_SAFE)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
USER_TYPE
@@ -1101,7 +1101,7 @@ JetFile: Precedence.jet
PsiElement(IDENTIFIER)('t')
PsiWhiteSpace(' ')
OPERATION_REFERENCE
- PsiElement(as?)('as?')
+ PsiElement(AS_SAFE)('as?')
PsiWhiteSpace(' ')
TYPE_REFERENCE
FUNCTION_TYPE