1 package com
.intellij
.codeInsight
.template
.impl
;
3 import com
.intellij
.codeInsight
.template
.Expression
;
4 import com
.intellij
.psi
.tree
.IElementType
;
5 import com
.intellij
.util
.text
.CharArrayUtil
;
7 import java
.util
.ArrayList
;
10 import org
.jetbrains
.annotations
.NonNls
;
13 * Created by IntelliJ IDEA.
14 * User: Maxim.Mossienko
17 * To change this template use File | Settings | File Templates.
19 public class TemplateImplUtil
{
20 public static boolean validateTemplateText(String s
) {
21 TemplateTextLexer lexer
= new TemplateTextLexer();
22 lexer
.start(s
,0,s
.length(),0);
25 IElementType tokenType
= lexer
.getTokenType();
26 if (tokenType
== null) break;
27 int start
= lexer
.getTokenStart();
28 if (tokenType
== TemplateTokenType
.VARIABLE
){
29 if (start
== end
) return false;
30 end
= lexer
.getTokenEnd();
39 public static void parseVariables(CharSequence text
, ArrayList variables
, Set predefinedVars
) {
40 TemplateTextLexer lexer
= new TemplateTextLexer();
41 lexer
.start(text
, 0, text
.length(),0);
44 IElementType tokenType
= lexer
.getTokenType();
45 if (tokenType
== null) break;
46 int start
= lexer
.getTokenStart();
47 int end
= lexer
.getTokenEnd();
48 String token
= text
.subSequence(start
, end
).toString();
49 if (tokenType
== TemplateTokenType
.VARIABLE
){
50 String name
= token
.substring(1, token
.length() - 1);
51 boolean isFound
= false;
53 if (predefinedVars
!=null && predefinedVars
.contains(name
) && !name
.equals(TemplateImpl
.SELECTION
)){
57 for (Object variable1
: variables
) {
58 Variable variable
= (Variable
)variable1
;
59 if (variable
.getName().equals(name
)) {
67 variables
.add(new Variable(name
, "", "", true));
74 public static Expression
parseTemplate(@NonNls String text
) {
75 return MacroParser
.parse(text
);