comparison vendor/symfony/translation/Extractor/PhpExtractor.php @ 17:129ea1e6d783

Update, including to Drupal core 8.6.10
author Chris Cannam
date Thu, 28 Feb 2019 13:21:36 +0000
parents 1fec387a4317
children af1871eacc83
comparison
equal deleted inserted replaced
16:c2387f117808 17:129ea1e6d783
35 /** 35 /**
36 * The sequence that captures translation messages. 36 * The sequence that captures translation messages.
37 * 37 *
38 * @var array 38 * @var array
39 */ 39 */
40 protected $sequences = array( 40 protected $sequences = [
41 array( 41 [
42 '->', 42 '->',
43 'trans', 43 'trans',
44 '(', 44 '(',
45 self::MESSAGE_TOKEN, 45 self::MESSAGE_TOKEN,
46 ',', 46 ',',
47 self::METHOD_ARGUMENTS_TOKEN, 47 self::METHOD_ARGUMENTS_TOKEN,
48 ',', 48 ',',
49 self::DOMAIN_TOKEN, 49 self::DOMAIN_TOKEN,
50 ), 50 ],
51 array( 51 [
52 '->', 52 '->',
53 'transChoice', 53 'transChoice',
54 '(', 54 '(',
55 self::MESSAGE_TOKEN, 55 self::MESSAGE_TOKEN,
56 ',', 56 ',',
57 self::METHOD_ARGUMENTS_TOKEN, 57 self::METHOD_ARGUMENTS_TOKEN,
58 ',', 58 ',',
59 self::METHOD_ARGUMENTS_TOKEN, 59 self::METHOD_ARGUMENTS_TOKEN,
60 ',', 60 ',',
61 self::DOMAIN_TOKEN, 61 self::DOMAIN_TOKEN,
62 ), 62 ],
63 array( 63 [
64 '->', 64 '->',
65 'trans', 65 'trans',
66 '(', 66 '(',
67 self::MESSAGE_TOKEN, 67 self::MESSAGE_TOKEN,
68 ), 68 ],
69 array( 69 [
70 '->', 70 '->',
71 'transChoice', 71 'transChoice',
72 '(', 72 '(',
73 self::MESSAGE_TOKEN, 73 self::MESSAGE_TOKEN,
74 ), 74 ],
75 ); 75 ];
76 76
77 /** 77 /**
78 * {@inheritdoc} 78 * {@inheritdoc}
79 */ 79 */
80 public function extract($resource, MessageCatalogue $catalog) 80 public function extract($resource, MessageCatalogue $catalog)
154 */ 154 */
155 private function getValue(\Iterator $tokenIterator) 155 private function getValue(\Iterator $tokenIterator)
156 { 156 {
157 $message = ''; 157 $message = '';
158 $docToken = ''; 158 $docToken = '';
159 $docPart = '';
159 160
160 for (; $tokenIterator->valid(); $tokenIterator->next()) { 161 for (; $tokenIterator->valid(); $tokenIterator->next()) {
161 $t = $tokenIterator->current(); 162 $t = $tokenIterator->current();
163 if ('.' === $t) {
164 // Concatenate with next token
165 continue;
166 }
162 if (!isset($t[1])) { 167 if (!isset($t[1])) {
163 break; 168 break;
164 } 169 }
165 170
166 switch ($t[0]) { 171 switch ($t[0]) {
167 case T_START_HEREDOC: 172 case T_START_HEREDOC:
168 $docToken = $t[1]; 173 $docToken = $t[1];
169 break; 174 break;
170 case T_ENCAPSED_AND_WHITESPACE: 175 case T_ENCAPSED_AND_WHITESPACE:
171 case T_CONSTANT_ENCAPSED_STRING: 176 case T_CONSTANT_ENCAPSED_STRING:
172 $message .= $t[1]; 177 if ('' === $docToken) {
178 $message .= PhpStringTokenParser::parse($t[1]);
179 } else {
180 $docPart = $t[1];
181 }
173 break; 182 break;
174 case T_END_HEREDOC: 183 case T_END_HEREDOC:
175 return PhpStringTokenParser::parseDocString($docToken, $message); 184 $message .= PhpStringTokenParser::parseDocString($docToken, $docPart);
185 $docToken = '';
186 $docPart = '';
187 break;
188 case T_WHITESPACE:
189 break;
176 default: 190 default:
177 break 2; 191 break 2;
178 } 192 }
179 }
180
181 if ($message) {
182 $message = PhpStringTokenParser::parse($message);
183 } 193 }
184 194
185 return $message; 195 return $message;
186 } 196 }
187 197
208 $tokenIterator->next(); 218 $tokenIterator->next();
209 continue; 219 continue;
210 } elseif (self::MESSAGE_TOKEN === $item) { 220 } elseif (self::MESSAGE_TOKEN === $item) {
211 $message = $this->getValue($tokenIterator); 221 $message = $this->getValue($tokenIterator);
212 222
213 if (count($sequence) === ($sequenceKey + 1)) { 223 if (\count($sequence) === ($sequenceKey + 1)) {
214 break; 224 break;
215 } 225 }
216 } elseif (self::METHOD_ARGUMENTS_TOKEN === $item) { 226 } elseif (self::METHOD_ARGUMENTS_TOKEN === $item) {
217 $this->skipMethodArgument($tokenIterator); 227 $this->skipMethodArgument($tokenIterator);
218 } elseif (self::DOMAIN_TOKEN === $item) { 228 } elseif (self::DOMAIN_TOKEN === $item) {