Sun, 17 Feb 2013 19:07:15 +0100
Updated to Pygments 1.6.
2426
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | """ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | pygments.lexers._robotframeworklexer |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | Lexer for Robot Framework. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | :copyright: Copyright 2006-2013 by the Pygments team, see AUTHORS. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | :license: BSD, see LICENSE for details. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | """ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | # Copyright 2012 Nokia Siemens Networks Oyj |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | # |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
14 | # Licensed under the Apache License, Version 2.0 (the "License"); |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
15 | # you may not use this file except in compliance with the License. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | # You may obtain a copy of the License at |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
17 | # |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
18 | # http://www.apache.org/licenses/LICENSE-2.0 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
19 | # |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
20 | # Unless required by applicable law or agreed to in writing, software |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
21 | # distributed under the License is distributed on an "AS IS" BASIS, |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | # See the License for the specific language governing permissions and |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | # limitations under the License. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | import re |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
27 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | from pygments.lexer import Lexer |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | from pygments.token import Token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
30 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | HEADING = Token.Generic.Heading |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | SETTING = Token.Keyword.Namespace |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | IMPORT = Token.Name.Namespace |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | TC_KW_NAME = Token.Generic.Subheading |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | KEYWORD = Token.Name.Function |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | ARGUMENT = Token.String |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | VARIABLE = Token.Name.Variable |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | COMMENT = Token.Comment |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | SEPARATOR = Token.Punctuation |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | SYNTAX = Token.Punctuation |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | GHERKIN = Token.Generic.Emph |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | ERROR = Token.Error |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
46 | def normalize(string, remove=''): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | string = string.lower() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
48 | for char in remove + ' ': |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
49 | if char in string: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
50 | string = string.replace(char, '') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | return string |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
52 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | class RobotFrameworkLexer(Lexer): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | """ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | For `Robot Framework <http://robotframework.org>`_ test data. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | Supports both space and pipe separated plain text formats. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | *New in Pygments 1.6.* |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | """ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | name = 'RobotFramework' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | aliases = ['RobotFramework', 'robotframework'] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | filenames = ['*.txt', '*.robot'] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | mimetypes = ['text/x-robotframework'] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | def __init__(self, **options): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | options['tabsize'] = 2 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | options['encoding'] = 'UTF-8' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | Lexer.__init__(self, **options) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
71 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | def get_tokens_unprocessed(self, text): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | row_tokenizer = RowTokenizer() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | var_tokenizer = VariableTokenizer() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | index = 0 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | for row in text.splitlines(): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | for value, token in row_tokenizer.tokenize(row): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | for value, token in var_tokenizer.tokenize(value, token): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | if value: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | yield index, token, str(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
81 | index += len(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | class VariableTokenizer(object): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | def tokenize(self, string, token): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | var = VariableSplitter(string, identifiers='$@%') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | if var.start < 0 or token in (COMMENT, ERROR): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
89 | yield string, token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | return |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | for value, token in self._tokenize(var, string, token): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | if value: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | yield value, token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
94 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | def _tokenize(self, var, string, orig_token): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | before = string[:var.start] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
97 | yield before, orig_token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | yield var.identifier + '{', SYNTAX |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | for value, token in self.tokenize(var.base, VARIABLE): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | yield value, token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
101 | yield '}', SYNTAX |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
102 | if var.index: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
103 | yield '[', SYNTAX |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
104 | for value, token in self.tokenize(var.index, VARIABLE): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
105 | yield value, token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
106 | yield ']', SYNTAX |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
107 | for value, token in self.tokenize(string[var.end:], orig_token): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
108 | yield value, token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
109 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
110 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
111 | class RowTokenizer(object): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
112 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
113 | def __init__(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
114 | self._table = UnknownTable() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
115 | self._splitter = RowSplitter() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | testcases = TestCaseTable() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
117 | settings = SettingTable(testcases.set_default_template) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
118 | variables = VariableTable() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
119 | keywords = KeywordTable() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
120 | self._tables = {'settings': settings, 'setting': settings, |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
121 | 'metadata': settings, |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | 'variables': variables, 'variable': variables, |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
123 | 'testcases': testcases, 'testcase': testcases, |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | 'keywords': keywords, 'keyword': keywords, |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | 'userkeywords': keywords, 'userkeyword': keywords} |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
126 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | def tokenize(self, row): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | commented = False |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | heading = False |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | for index, value in enumerate(self._splitter.split(row)): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | # First value, and every second after that, is a separator. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | index, separator = divmod(index-1, 2) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | if value.startswith('#'): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | commented = True |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | elif index == 0 and value.startswith('*'): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | self._table = self._start_table(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | heading = True |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | for value, token in self._tokenize(value, index, commented, |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | separator, heading): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
140 | yield value, token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
141 | self._table.end_row() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | def _start_table(self, header): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | name = normalize(header, remove='*') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
145 | return self._tables.get(name, UnknownTable()) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | def _tokenize(self, value, index, commented, separator, heading): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | if commented: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | yield value, COMMENT |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | elif separator: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | yield value, SEPARATOR |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | elif heading: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | yield value, HEADING |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | else: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | for value, token in self._table.tokenize(value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | yield value, token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | class RowSplitter(object): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | _space_splitter = re.compile('( {2,})') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | _pipe_splitter = re.compile('((?:^| +)\|(?: +|$))') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
162 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | def split(self, row): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | splitter = (row.startswith('| ') and self._split_from_pipes |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | or self._split_from_spaces) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
166 | for value in splitter(row.rstrip()): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | yield value |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | yield '\n' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | def _split_from_spaces(self, row): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | yield '' # Start with (pseudo)separator similarly as with pipes |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
172 | for value in self._space_splitter.split(row): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
173 | yield value |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
174 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
175 | def _split_from_pipes(self, row): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
176 | _, separator, rest = self._pipe_splitter.split(row, 1) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
177 | yield separator |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
178 | while self._pipe_splitter.search(rest): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | cell, separator, rest = self._pipe_splitter.split(rest, 1) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | yield cell |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | yield separator |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | yield rest |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | class Tokenizer(object): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
186 | _tokens = None |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | def __init__(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | self._index = 0 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
190 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | def tokenize(self, value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | values_and_tokens = self._tokenize(value, self._index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
193 | self._index += 1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
194 | if isinstance(values_and_tokens, type(Token)): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
195 | values_and_tokens = [(value, values_and_tokens)] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
196 | return values_and_tokens |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
197 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
198 | def _tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
199 | index = min(index, len(self._tokens) - 1) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | return self._tokens[index] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | def _is_assign(self, value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | if value.endswith('='): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
204 | value = value[:-1].strip() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
205 | var = VariableSplitter(value, identifiers='$@') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
206 | return var.start == 0 and var.end == len(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
207 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
208 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
209 | class Comment(Tokenizer): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
210 | _tokens = (COMMENT,) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
211 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
212 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
213 | class Setting(Tokenizer): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
214 | _tokens = (SETTING, ARGUMENT) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
215 | _keyword_settings = ('suitesetup', 'suiteprecondition', 'suiteteardown', |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
216 | 'suitepostcondition', 'testsetup', 'testprecondition', |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
217 | 'testteardown', 'testpostcondition', 'testtemplate') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
218 | _import_settings = ('library', 'resource', 'variables') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
219 | _other_settings = ('documentation', 'metadata', 'forcetags', 'defaulttags', |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
220 | 'testtimeout') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
221 | _custom_tokenizer = None |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
222 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
223 | def __init__(self, template_setter=None): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
224 | Tokenizer.__init__(self) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
225 | self._template_setter = template_setter |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
226 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
227 | def _tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
228 | if index == 1 and self._template_setter: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
229 | self._template_setter(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
230 | if index == 0: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
231 | normalized = normalize(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
232 | if normalized in self._keyword_settings: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
233 | self._custom_tokenizer = KeywordCall(support_assign=False) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
234 | elif normalized in self._import_settings: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
235 | self._custom_tokenizer = ImportSetting() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
236 | elif normalized not in self._other_settings: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
237 | return ERROR |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
238 | elif self._custom_tokenizer: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
239 | return self._custom_tokenizer.tokenize(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
240 | return Tokenizer._tokenize(self, value, index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
241 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
242 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
243 | class ImportSetting(Tokenizer): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
244 | _tokens = (IMPORT, ARGUMENT) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
245 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
246 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
247 | class TestCaseSetting(Setting): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
248 | _keyword_settings = ('setup', 'precondition', 'teardown', 'postcondition', |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
249 | 'template') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | _import_settings = () |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | _other_settings = ('documentation', 'tags', 'timeout') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
252 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
253 | def _tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
254 | if index == 0: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
255 | type = Setting._tokenize(self, value[1:-1], index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
256 | return [('[', SYNTAX), (value[1:-1], type), (']', SYNTAX)] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
257 | return Setting._tokenize(self, value, index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
258 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
259 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
260 | class KeywordSetting(TestCaseSetting): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
261 | _keyword_settings = ('teardown',) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
262 | _other_settings = ('documentation', 'arguments', 'return', 'timeout') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
263 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
264 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
265 | class Variable(Tokenizer): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
266 | _tokens = (SYNTAX, ARGUMENT) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
267 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
268 | def _tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
269 | if index == 0 and not self._is_assign(value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
270 | return ERROR |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
271 | return Tokenizer._tokenize(self, value, index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
272 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
273 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
274 | class KeywordCall(Tokenizer): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
275 | _tokens = (KEYWORD, ARGUMENT) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
276 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
277 | def __init__(self, support_assign=True): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
278 | Tokenizer.__init__(self) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
279 | self._keyword_found = not support_assign |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
280 | self._assigns = 0 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
281 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
282 | def _tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
283 | if not self._keyword_found and self._is_assign(value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
284 | self._assigns += 1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
285 | return SYNTAX # VariableTokenizer tokenizes this later. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
286 | if self._keyword_found: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
287 | return Tokenizer._tokenize(self, value, index - self._assigns) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
288 | self._keyword_found = True |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
289 | return GherkinTokenizer().tokenize(value, KEYWORD) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
290 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
291 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
292 | class GherkinTokenizer(object): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
293 | _gherkin_prefix = re.compile('^(Given|When|Then|And) ', re.IGNORECASE) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
294 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
295 | def tokenize(self, value, token): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
296 | match = self._gherkin_prefix.match(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
297 | if not match: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
298 | return [(value, token)] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
299 | end = match.end() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
300 | return [(value[:end], GHERKIN), (value[end:], token)] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
301 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
302 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
303 | class TemplatedKeywordCall(Tokenizer): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
304 | _tokens = (ARGUMENT,) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
305 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
306 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
307 | class ForLoop(Tokenizer): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
308 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
309 | def __init__(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
310 | Tokenizer.__init__(self) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
311 | self._in_arguments = False |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
312 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
313 | def _tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
314 | token = self._in_arguments and ARGUMENT or SYNTAX |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
315 | if value.upper() in ('IN', 'IN RANGE'): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
316 | self._in_arguments = True |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
317 | return token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
318 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
319 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
320 | class _Table(object): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
321 | _tokenizer_class = None |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
322 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
323 | def __init__(self, prev_tokenizer=None): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
324 | self._tokenizer = self._tokenizer_class() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
325 | self._prev_tokenizer = prev_tokenizer |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
326 | self._prev_values_on_row = [] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
327 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
328 | def tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
329 | if self._continues(value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
330 | self._tokenizer = self._prev_tokenizer |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
331 | yield value, SYNTAX |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
332 | else: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
333 | for value_and_token in self._tokenize(value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
334 | yield value_and_token |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
335 | self._prev_values_on_row.append(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
336 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
337 | def _continues(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
338 | return value == '...' and all(self._is_empty(t) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
339 | for t in self._prev_values_on_row) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
340 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
341 | def _is_empty(self, value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
342 | return value in ('', '\\') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
343 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
344 | def _tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
345 | return self._tokenizer.tokenize(value) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
346 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
347 | def end_row(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
348 | self.__init__(prev_tokenizer=self._tokenizer) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
349 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
350 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
351 | class UnknownTable(_Table): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
352 | _tokenizer_class = Comment |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
353 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
354 | def _continues(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
355 | return False |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
356 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
357 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
358 | class VariableTable(_Table): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
359 | _tokenizer_class = Variable |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
360 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
361 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
362 | class SettingTable(_Table): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
363 | _tokenizer_class = Setting |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
364 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
365 | def __init__(self, template_setter, prev_tokenizer=None): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
366 | _Table.__init__(self, prev_tokenizer) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
367 | self._template_setter = template_setter |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
368 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
369 | def _tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
370 | if index == 0 and normalize(value) == 'testtemplate': |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
371 | self._tokenizer = Setting(self._template_setter) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
372 | return _Table._tokenize(self, value, index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
373 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
374 | def end_row(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
375 | self.__init__(self._template_setter, prev_tokenizer=self._tokenizer) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
376 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
377 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
378 | class TestCaseTable(_Table): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
379 | _setting_class = TestCaseSetting |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
380 | _test_template = None |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
381 | _default_template = None |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
382 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
383 | @property |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
384 | def _tokenizer_class(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
385 | if self._test_template or (self._default_template and |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
386 | self._test_template is not False): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
387 | return TemplatedKeywordCall |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
388 | return KeywordCall |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
389 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
390 | def _continues(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
391 | return index > 0 and _Table._continues(self, value, index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
392 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
393 | def _tokenize(self, value, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
394 | if index == 0: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
395 | if value: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
396 | self._test_template = None |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
397 | return GherkinTokenizer().tokenize(value, TC_KW_NAME) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
398 | if index == 1 and self._is_setting(value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
399 | if self._is_template(value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
400 | self._test_template = False |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
401 | self._tokenizer = self._setting_class(self.set_test_template) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
402 | else: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
403 | self._tokenizer = self._setting_class() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
404 | if index == 1 and self._is_for_loop(value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
405 | self._tokenizer = ForLoop() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
406 | if index == 1 and self._is_empty(value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
407 | return [(value, SYNTAX)] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
408 | return _Table._tokenize(self, value, index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
409 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
410 | def _is_setting(self, value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
411 | return value.startswith('[') and value.endswith(']') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
412 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
413 | def _is_template(self, value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
414 | return normalize(value) == '[template]' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
415 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
416 | def _is_for_loop(self, value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
417 | return value.startswith(':') and normalize(value, remove=':') == 'for' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
418 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
419 | def set_test_template(self, template): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
420 | self._test_template = self._is_template_set(template) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
421 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
422 | def set_default_template(self, template): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
423 | self._default_template = self._is_template_set(template) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
424 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
425 | def _is_template_set(self, template): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
426 | return normalize(template) not in ('', '\\', 'none', '${empty}') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
427 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
428 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
429 | class KeywordTable(TestCaseTable): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
430 | _tokenizer_class = KeywordCall |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
431 | _setting_class = KeywordSetting |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
432 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
433 | def _is_template(self, value): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
434 | return False |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
435 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
436 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
437 | # Following code copied directly from Robot Framework 2.7.5. |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
438 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
439 | class VariableSplitter: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
440 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
441 | def __init__(self, string, identifiers): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
442 | self.identifier = None |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
443 | self.base = None |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
444 | self.index = None |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
445 | self.start = -1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
446 | self.end = -1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
447 | self._identifiers = identifiers |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
448 | self._may_have_internal_variables = False |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
449 | try: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
450 | self._split(string) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
451 | except ValueError: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
452 | pass |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
453 | else: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
454 | self._finalize() |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
455 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
456 | def get_replaced_base(self, variables): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
457 | if self._may_have_internal_variables: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
458 | return variables.replace_string(self.base) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
459 | return self.base |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
460 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
461 | def _finalize(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
462 | self.identifier = self._variable_chars[0] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
463 | self.base = ''.join(self._variable_chars[2:-1]) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
464 | self.end = self.start + len(self._variable_chars) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
465 | if self._has_list_variable_index(): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
466 | self.index = ''.join(self._list_variable_index_chars[1:-1]) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
467 | self.end += len(self._list_variable_index_chars) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
468 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
469 | def _has_list_variable_index(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
470 | return self._list_variable_index_chars\ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
471 | and self._list_variable_index_chars[-1] == ']' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
472 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
473 | def _split(self, string): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
474 | start_index, max_index = self._find_variable(string) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
475 | self.start = start_index |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
476 | self._open_curly = 1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
477 | self._state = self._variable_state |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
478 | self._variable_chars = [string[start_index], '{'] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
479 | self._list_variable_index_chars = [] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
480 | self._string = string |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
481 | start_index += 2 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
482 | for index, char in enumerate(string[start_index:]): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
483 | index += start_index # Giving start to enumerate only in Py 2.6+ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
484 | try: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
485 | self._state(char, index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
486 | except StopIteration: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
487 | return |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
488 | if index == max_index and not self._scanning_list_variable_index(): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
489 | return |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
490 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
491 | def _scanning_list_variable_index(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
492 | return self._state in [self._waiting_list_variable_index_state, |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
493 | self._list_variable_index_state] |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
494 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
495 | def _find_variable(self, string): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
496 | max_end_index = string.rfind('}') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
497 | if max_end_index == -1: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
498 | raise ValueError('No variable end found') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
499 | if self._is_escaped(string, max_end_index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
500 | return self._find_variable(string[:max_end_index]) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
501 | start_index = self._find_start_index(string, 1, max_end_index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
502 | if start_index == -1: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
503 | raise ValueError('No variable start found') |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
504 | return start_index, max_end_index |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
505 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
506 | def _find_start_index(self, string, start, end): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
507 | index = string.find('{', start, end) - 1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
508 | if index < 0: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
509 | return -1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
510 | if self._start_index_is_ok(string, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
511 | return index |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
512 | return self._find_start_index(string, index+2, end) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
513 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
514 | def _start_index_is_ok(self, string, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
515 | return string[index] in self._identifiers\ |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
516 | and not self._is_escaped(string, index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
517 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
518 | def _is_escaped(self, string, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
519 | escaped = False |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
520 | while index > 0 and string[index-1] == '\\': |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
521 | index -= 1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
522 | escaped = not escaped |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
523 | return escaped |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
524 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
525 | def _variable_state(self, char, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
526 | self._variable_chars.append(char) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
527 | if char == '}' and not self._is_escaped(self._string, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
528 | self._open_curly -= 1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
529 | if self._open_curly == 0: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
530 | if not self._is_list_variable(): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
531 | raise StopIteration |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
532 | self._state = self._waiting_list_variable_index_state |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
533 | elif char in self._identifiers: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
534 | self._state = self._internal_variable_start_state |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
535 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
536 | def _is_list_variable(self): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
537 | return self._variable_chars[0] == '@' |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
538 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
539 | def _internal_variable_start_state(self, char, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
540 | self._state = self._variable_state |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
541 | if char == '{': |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
542 | self._variable_chars.append(char) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
543 | self._open_curly += 1 |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
544 | self._may_have_internal_variables = True |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
545 | else: |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
546 | self._variable_state(char, index) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
547 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
548 | def _waiting_list_variable_index_state(self, char, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
549 | if char != '[': |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
550 | raise StopIteration |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
551 | self._list_variable_index_chars.append(char) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
552 | self._state = self._list_variable_index_state |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
553 | |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
554 | def _list_variable_index_state(self, char, index): |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
555 | self._list_variable_index_chars.append(char) |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
556 | if char == ']': |
da76c71624de
Updated to Pygments 1.6.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
557 | raise StopIteration |