• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Camelcade / Perl5-IDEA / #525521660

24 Aug 2025 01:28PM UTC coverage: 75.89% (-6.3%) from 82.227%
#525521660

push

github

hurricup
Migrated coverage reporting to https://github.com/nbaztec/coveralls-jacoco-gradle-plugin

See: https://github.com/kt3k/coveralls-gradle-plugin/issues/119

14751 of 22639 branches covered (65.16%)

Branch coverage included in aggregate %.

31091 of 37767 relevant lines covered (82.32%)

0.82 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.41
/tt2/common/src/main/java/com/perl5/lang/tt2/lexer/TemplateToolkitSyntaxElements.java
1
/*
2
 * Copyright 2015-2025 Alexandr Evstigneev
3
 *
4
 * Licensed under the Apache License, Version 2.0 (the "License");
5
 * you may not use this file except in compliance with the License.
6
 * You may obtain a copy of the License at
7
 *
8
 * http://www.apache.org/licenses/LICENSE-2.0
9
 *
10
 * Unless required by applicable law or agreed to in writing, software
11
 * distributed under the License is distributed on an "AS IS" BASIS,
12
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
 * See the License for the specific language governing permissions and
14
 * limitations under the License.
15
 */
16

17
package com.perl5.lang.tt2.lexer;
18

19
import com.intellij.psi.tree.IElementType;
20
import com.intellij.psi.tree.TokenSet;
21

22
import java.util.HashMap;
23
import java.util.Map;
24

25
import static com.perl5.lang.tt2.parser.TemplateToolkitElementTypesGenerated.*;
26

27

28
public class TemplateToolkitSyntaxElements {
×
29
  public static final TokenSet OPEN_TAGS = TokenSet.create(
1✔
30
    TT2_OPEN_TAG,
31
    TT2_OUTLINE_TAG
32
  );
33

34
  public static final TokenSet ATOMIC_EXPRESSIONS = TokenSet.create(
1✔
35
    FILTER_DIRECTIVE,
36
    WRAPPER_DIRECTIVE,
37
    DEBUG_DIRECTIVE,
38
    NEXT_DIRECTIVE,
39
    LAST_DIRECTIVE,
40
    RETURN_DIRECTIVE,
41
    STOP_DIRECTIVE,
42
    CLEAR_DIRECTIVE,
43
    DEFAULT_DIRECTIVE,
44
    INSERT_DIRECTIVE,
45
    INCLUDE_DIRECTIVE,
46
    PROCESS_DIRECTIVE,
47
    CALL_DIRECTIVE,
48
    THROW_DIRECTIVE,
49
    SET_DIRECTIVE,
50
    GET_DIRECTIVE
51
  );
52

53
  public static final Map<String, IElementType> KEYWORDS = new HashMap<>();
1✔
54
  public static final TokenSet KEYWORDS_TOKENSET;
55

56
  public static final Map<String, IElementType> TEXT_OPERATORS = new HashMap<>();
1✔
57
  public static final TokenSet TEXT_OPERATORS_TOKENSET;
58

59
  public static final TokenSet KEYWORDS_OR_TEXT_OPERATORS_TOKENSET;
60

61
  public static final TokenSet SYMBOLIC_OPERATORS_TOKENSET = TokenSet.create(
1✔
62
    TT2_ASSIGN,
63
    TT2_PERIOD,
64

65
    TT2_CONCAT,
66
    TT2_RANGE,
67
    TT2_EQUAL,
68
    TT2_NOT_EQUAL,
69
    TT2_LT,
70
    TT2_LE,
71
    TT2_GT,
72
    TT2_GE,
73
    TT2_AND,
74
    TT2_OR,
75
    TT2_NOT,
76
    TT2_QUESTION,
77
    TT2_COLON,
78
    TT2_PLUS,
79
    TT2_MINUS,
80
    TT2_MINUS_UNARY,
81
    TT2_MUL,
82
    TT2_DIV,
83
    TT2_MOD
84
  );
85

86
  public static final TokenSet ALL_OPERATORS_TOKENSET;
87

88
  public static final TokenSet POSSIBLE_IDENTIFIERS;
89

90
  static {
91
    KEYWORDS.put("GET", TT2_GET);
1✔
92
    KEYWORDS.put("SET", TT2_SET);
1✔
93
    KEYWORDS.put("CALL", TT2_CALL);
1✔
94
    KEYWORDS.put("DEFAULT", TT2_DEFAULT);
1✔
95
    KEYWORDS.put("INSERT", TT2_INSERT);
1✔
96
    KEYWORDS.put("INCLUDE", TT2_INCLUDE);
1✔
97
    KEYWORDS.put("PROCESS", TT2_PROCESS);
1✔
98
    KEYWORDS.put("WRAPPER", TT2_WRAPPER);
1✔
99
    KEYWORDS.put("BLOCK", TT2_BLOCK);
1✔
100
    KEYWORDS.put("END", TT2_END);
1✔
101
    KEYWORDS.put("IF", TT2_IF);
1✔
102
    KEYWORDS.put("UNLESS", TT2_UNLESS);
1✔
103
    KEYWORDS.put("ELSIF", TT2_ELSIF);
1✔
104
    KEYWORDS.put("ELSE", TT2_ELSE);
1✔
105
    KEYWORDS.put("SWITCH", TT2_SWITCH);
1✔
106
    KEYWORDS.put("CASE", TT2_CASE);
1✔
107
    KEYWORDS.put("FOREACH", TT2_FOREACH);
1✔
108
    KEYWORDS.put("FOR", TT2_FOREACH);
1✔
109
    KEYWORDS.put("WHILE", TT2_WHILE);
1✔
110
    KEYWORDS.put("FILTER", TT2_FILTER);
1✔
111
    KEYWORDS.put("USE", TT2_USE);
1✔
112
    KEYWORDS.put("MACRO", TT2_MACRO);
1✔
113
    KEYWORDS.put("PERL", TT2_PERL);
1✔
114
    KEYWORDS.put("RAWPERL", TT2_RAWPERL);
1✔
115
    KEYWORDS.put("TRY", TT2_TRY);
1✔
116
    KEYWORDS.put("IN", TT2_IN);
1✔
117
    KEYWORDS.put("THROW", TT2_THROW);
1✔
118
    KEYWORDS.put("CATCH", TT2_CATCH);
1✔
119
    KEYWORDS.put("FINAL", TT2_FINAL);
1✔
120
    KEYWORDS.put("NEXT", TT2_NEXT);
1✔
121
    KEYWORDS.put("LAST", TT2_LAST);
1✔
122
    KEYWORDS.put("BREAK", TT2_LAST);
1✔
123
    KEYWORDS.put("RETURN", TT2_RETURN);
1✔
124
    KEYWORDS.put("STOP", TT2_STOP);
1✔
125
    KEYWORDS.put("CLEAR", TT2_CLEAR);
1✔
126
    KEYWORDS.put("META", TT2_META);
1✔
127
    KEYWORDS.put("TAGS", TT2_TAGS);
1✔
128
    KEYWORDS.put("DEBUG", TT2_DEBUG);
1✔
129

130
    KEYWORDS.put("on", TT2_ON);
1✔
131
    KEYWORDS.put("off", TT2_OFF);
1✔
132
    KEYWORDS.put("format", TT2_FORMAT);
1✔
133

134
    KEYWORDS_TOKENSET = TokenSet.create(KEYWORDS.values().toArray(IElementType.EMPTY_ARRAY));
1✔
135

136
    // see https://github.com/abw/Template2/blob/master/parser/Grammar.pm.skel
137
    TEXT_OPERATORS.put("div", TT2_DIV_TEXT);
1✔
138
    TEXT_OPERATORS.put("and", TT2_AND_TEXT);
1✔
139
    TEXT_OPERATORS.put("or", TT2_OR_TEXT);
1✔
140
    TEXT_OPERATORS.put("not", TT2_NOT_TEXT);
1✔
141
    TEXT_OPERATORS.put("mod", TT2_MOD_TEXT);
1✔
142

143
    TEXT_OPERATORS.put("DIV", TT2_DIV_TEXT);
1✔
144
    TEXT_OPERATORS.put("AND", TT2_AND_TEXT);
1✔
145
    TEXT_OPERATORS.put("OR", TT2_OR_TEXT);
1✔
146
    TEXT_OPERATORS.put("NOT", TT2_NOT_TEXT);
1✔
147
    TEXT_OPERATORS.put("MOD", TT2_MOD_TEXT);
1✔
148

149
    TEXT_OPERATORS_TOKENSET = TokenSet.create(TEXT_OPERATORS.values().toArray(IElementType.EMPTY_ARRAY));
1✔
150

151
    KEYWORDS_OR_TEXT_OPERATORS_TOKENSET = TokenSet.orSet(
1✔
152
      KEYWORDS_TOKENSET, TEXT_OPERATORS_TOKENSET
153
    );
154

155
    ALL_OPERATORS_TOKENSET = TokenSet.orSet(TEXT_OPERATORS_TOKENSET, SYMBOLIC_OPERATORS_TOKENSET);
1✔
156

157
    POSSIBLE_IDENTIFIERS = TokenSet.create(
1✔
158
      TT2_ON,
159
      TT2_OFF,
160
      TT2_FORMAT
161
    );
162
  }
1✔
163
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc