eric6/ThirdParty/Pygments/pygments/lexers/_postgres_builtins.py

changeset 7701
25f42e208e08
parent 7547
21b0534faebc
child 7983
54c5cfbb1e29
equal deleted inserted replaced
7700:a3cf077a8db3 7701:25f42e208e08
3 pygments.lexers._postgres_builtins 3 pygments.lexers._postgres_builtins
4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 4 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5 5
6 Self-updating data files for PostgreSQL lexer. 6 Self-updating data files for PostgreSQL lexer.
7 7
8 :copyright: Copyright 2006-2019 by the Pygments team, see AUTHORS. 8 :copyright: Copyright 2006-2020 by the Pygments team, see AUTHORS.
9 :license: BSD, see LICENSE for details. 9 :license: BSD, see LICENSE for details.
10 """ 10 """
11 11
12 12
13 # Autogenerated: please edit them if you like wasting your time. 13 # Autogenerated: please edit them if you like wasting your time.
34 'ASC', 34 'ASC',
35 'ASSERTION', 35 'ASSERTION',
36 'ASSIGNMENT', 36 'ASSIGNMENT',
37 'ASYMMETRIC', 37 'ASYMMETRIC',
38 'AT', 38 'AT',
39 'ATTACH',
39 'ATTRIBUTE', 40 'ATTRIBUTE',
40 'AUTHORIZATION', 41 'AUTHORIZATION',
41 'BACKWARD', 42 'BACKWARD',
42 'BEFORE', 43 'BEFORE',
43 'BEGIN', 44 'BEGIN',
47 'BIT', 48 'BIT',
48 'BOOLEAN', 49 'BOOLEAN',
49 'BOTH', 50 'BOTH',
50 'BY', 51 'BY',
51 'CACHE', 52 'CACHE',
53 'CALL',
52 'CALLED', 54 'CALLED',
53 'CASCADE', 55 'CASCADE',
54 'CASCADED', 56 'CASCADED',
55 'CASE', 57 'CASE',
56 'CAST', 58 'CAST',
66 'CLUSTER', 68 'CLUSTER',
67 'COALESCE', 69 'COALESCE',
68 'COLLATE', 70 'COLLATE',
69 'COLLATION', 71 'COLLATION',
70 'COLUMN', 72 'COLUMN',
73 'COLUMNS',
71 'COMMENT', 74 'COMMENT',
72 'COMMENTS', 75 'COMMENTS',
73 'COMMIT', 76 'COMMIT',
74 'COMMITTED', 77 'COMMITTED',
75 'CONCURRENTLY', 78 'CONCURRENTLY',
76 'CONFIGURATION', 79 'CONFIGURATION',
80 'CONFLICT',
77 'CONNECTION', 81 'CONNECTION',
78 'CONSTRAINT', 82 'CONSTRAINT',
79 'CONSTRAINTS', 83 'CONSTRAINTS',
80 'CONTENT', 84 'CONTENT',
81 'CONTINUE', 85 'CONTINUE',
83 'COPY', 87 'COPY',
84 'COST', 88 'COST',
85 'CREATE', 89 'CREATE',
86 'CROSS', 90 'CROSS',
87 'CSV', 91 'CSV',
92 'CUBE',
88 'CURRENT', 93 'CURRENT',
89 'CURRENT_CATALOG', 94 'CURRENT_CATALOG',
90 'CURRENT_DATE', 95 'CURRENT_DATE',
91 'CURRENT_ROLE', 96 'CURRENT_ROLE',
92 'CURRENT_SCHEMA', 97 'CURRENT_SCHEMA',
108 'DEFERRED', 113 'DEFERRED',
109 'DEFINER', 114 'DEFINER',
110 'DELETE', 115 'DELETE',
111 'DELIMITER', 116 'DELIMITER',
112 'DELIMITERS', 117 'DELIMITERS',
118 'DEPENDS',
113 'DESC', 119 'DESC',
120 'DETACH',
114 'DICTIONARY', 121 'DICTIONARY',
115 'DISABLE', 122 'DISABLE',
116 'DISCARD', 123 'DISCARD',
117 'DISTINCT', 124 'DISTINCT',
118 'DO', 125 'DO',
134 'EXCLUDING', 141 'EXCLUDING',
135 'EXCLUSIVE', 142 'EXCLUSIVE',
136 'EXECUTE', 143 'EXECUTE',
137 'EXISTS', 144 'EXISTS',
138 'EXPLAIN', 145 'EXPLAIN',
146 'EXPRESSION',
139 'EXTENSION', 147 'EXTENSION',
140 'EXTERNAL', 148 'EXTERNAL',
141 'EXTRACT', 149 'EXTRACT',
142 'FALSE', 150 'FALSE',
143 'FAMILY', 151 'FAMILY',
153 'FREEZE', 161 'FREEZE',
154 'FROM', 162 'FROM',
155 'FULL', 163 'FULL',
156 'FUNCTION', 164 'FUNCTION',
157 'FUNCTIONS', 165 'FUNCTIONS',
166 'GENERATED',
158 'GLOBAL', 167 'GLOBAL',
159 'GRANT', 168 'GRANT',
160 'GRANTED', 169 'GRANTED',
161 'GREATEST', 170 'GREATEST',
162 'GROUP', 171 'GROUP',
172 'GROUPING',
173 'GROUPS',
163 'HANDLER', 174 'HANDLER',
164 'HAVING', 175 'HAVING',
165 'HEADER', 176 'HEADER',
166 'HOLD', 177 'HOLD',
167 'HOUR', 178 'HOUR',
169 'IF', 180 'IF',
170 'ILIKE', 181 'ILIKE',
171 'IMMEDIATE', 182 'IMMEDIATE',
172 'IMMUTABLE', 183 'IMMUTABLE',
173 'IMPLICIT', 184 'IMPLICIT',
185 'IMPORT',
174 'IN', 186 'IN',
187 'INCLUDE',
175 'INCLUDING', 188 'INCLUDING',
176 'INCREMENT', 189 'INCREMENT',
177 'INDEX', 190 'INDEX',
178 'INDEXES', 191 'INDEXES',
179 'INHERIT', 192 'INHERIT',
200 'LABEL', 213 'LABEL',
201 'LANGUAGE', 214 'LANGUAGE',
202 'LARGE', 215 'LARGE',
203 'LAST', 216 'LAST',
204 'LATERAL', 217 'LATERAL',
205 'LC_COLLATE',
206 'LC_CTYPE',
207 'LEADING', 218 'LEADING',
208 'LEAKPROOF', 219 'LEAKPROOF',
209 'LEAST', 220 'LEAST',
210 'LEFT', 221 'LEFT',
211 'LEVEL', 222 'LEVEL',
216 'LOCAL', 227 'LOCAL',
217 'LOCALTIME', 228 'LOCALTIME',
218 'LOCALTIMESTAMP', 229 'LOCALTIMESTAMP',
219 'LOCATION', 230 'LOCATION',
220 'LOCK', 231 'LOCK',
232 'LOCKED',
233 'LOGGED',
221 'MAPPING', 234 'MAPPING',
222 'MATCH', 235 'MATCH',
223 'MATERIALIZED', 236 'MATERIALIZED',
224 'MAXVALUE', 237 'MAXVALUE',
238 'METHOD',
225 'MINUTE', 239 'MINUTE',
226 'MINVALUE', 240 'MINVALUE',
227 'MODE', 241 'MODE',
228 'MONTH', 242 'MONTH',
229 'MOVE', 243 'MOVE',
230 'NAME', 244 'NAME',
231 'NAMES', 245 'NAMES',
232 'NATIONAL', 246 'NATIONAL',
233 'NATURAL', 247 'NATURAL',
234 'NCHAR', 248 'NCHAR',
249 'NEW',
235 'NEXT', 250 'NEXT',
251 'NFC',
252 'NFD',
253 'NFKC',
254 'NFKD',
236 'NO', 255 'NO',
237 'NONE', 256 'NONE',
257 'NORMALIZE',
258 'NORMALIZED',
238 'NOT', 259 'NOT',
239 'NOTHING', 260 'NOTHING',
240 'NOTIFY', 261 'NOTIFY',
241 'NOTNULL', 262 'NOTNULL',
242 'NOWAIT', 263 'NOWAIT',
247 'OBJECT', 268 'OBJECT',
248 'OF', 269 'OF',
249 'OFF', 270 'OFF',
250 'OFFSET', 271 'OFFSET',
251 'OIDS', 272 'OIDS',
273 'OLD',
252 'ON', 274 'ON',
253 'ONLY', 275 'ONLY',
254 'OPERATOR', 276 'OPERATOR',
255 'OPTION', 277 'OPTION',
256 'OPTIONS', 278 'OPTIONS',
257 'OR', 279 'OR',
258 'ORDER', 280 'ORDER',
259 'ORDINALITY', 281 'ORDINALITY',
282 'OTHERS',
260 'OUT', 283 'OUT',
261 'OUTER', 284 'OUTER',
262 'OVER', 285 'OVER',
263 'OVERLAPS', 286 'OVERLAPS',
264 'OVERLAY', 287 'OVERLAY',
288 'OVERRIDING',
265 'OWNED', 289 'OWNED',
266 'OWNER', 290 'OWNER',
291 'PARALLEL',
267 'PARSER', 292 'PARSER',
268 'PARTIAL', 293 'PARTIAL',
269 'PARTITION', 294 'PARTITION',
270 'PASSING', 295 'PASSING',
271 'PASSWORD', 296 'PASSWORD',
281 'PRIMARY', 306 'PRIMARY',
282 'PRIOR', 307 'PRIOR',
283 'PRIVILEGES', 308 'PRIVILEGES',
284 'PROCEDURAL', 309 'PROCEDURAL',
285 'PROCEDURE', 310 'PROCEDURE',
311 'PROCEDURES',
286 'PROGRAM', 312 'PROGRAM',
313 'PUBLICATION',
287 'QUOTE', 314 'QUOTE',
288 'RANGE', 315 'RANGE',
289 'READ', 316 'READ',
290 'REAL', 317 'REAL',
291 'REASSIGN', 318 'REASSIGN',
292 'RECHECK', 319 'RECHECK',
293 'RECURSIVE', 320 'RECURSIVE',
294 'REF', 321 'REF',
295 'REFERENCES', 322 'REFERENCES',
323 'REFERENCING',
296 'REFRESH', 324 'REFRESH',
297 'REINDEX', 325 'REINDEX',
298 'RELATIVE', 326 'RELATIVE',
299 'RELEASE', 327 'RELEASE',
300 'RENAME', 328 'RENAME',
308 'RETURNS', 336 'RETURNS',
309 'REVOKE', 337 'REVOKE',
310 'RIGHT', 338 'RIGHT',
311 'ROLE', 339 'ROLE',
312 'ROLLBACK', 340 'ROLLBACK',
341 'ROLLUP',
342 'ROUTINE',
343 'ROUTINES',
313 'ROW', 344 'ROW',
314 'ROWS', 345 'ROWS',
315 'RULE', 346 'RULE',
316 'SAVEPOINT', 347 'SAVEPOINT',
317 'SCHEMA', 348 'SCHEMA',
349 'SCHEMAS',
318 'SCROLL', 350 'SCROLL',
319 'SEARCH', 351 'SEARCH',
320 'SECOND', 352 'SECOND',
321 'SECURITY', 353 'SECURITY',
322 'SELECT', 354 'SELECT',
326 'SERVER', 358 'SERVER',
327 'SESSION', 359 'SESSION',
328 'SESSION_USER', 360 'SESSION_USER',
329 'SET', 361 'SET',
330 'SETOF', 362 'SETOF',
363 'SETS',
331 'SHARE', 364 'SHARE',
332 'SHOW', 365 'SHOW',
333 'SIMILAR', 366 'SIMILAR',
334 'SIMPLE', 367 'SIMPLE',
368 'SKIP',
335 'SMALLINT', 369 'SMALLINT',
336 'SNAPSHOT', 370 'SNAPSHOT',
337 'SOME', 371 'SOME',
372 'SQL',
338 'STABLE', 373 'STABLE',
339 'STANDALONE', 374 'STANDALONE',
340 'START', 375 'START',
341 'STATEMENT', 376 'STATEMENT',
342 'STATISTICS', 377 'STATISTICS',
343 'STDIN', 378 'STDIN',
344 'STDOUT', 379 'STDOUT',
345 'STORAGE', 380 'STORAGE',
381 'STORED',
346 'STRICT', 382 'STRICT',
347 'STRIP', 383 'STRIP',
384 'SUBSCRIPTION',
348 'SUBSTRING', 385 'SUBSTRING',
386 'SUPPORT',
349 'SYMMETRIC', 387 'SYMMETRIC',
350 'SYSID', 388 'SYSID',
351 'SYSTEM', 389 'SYSTEM',
352 'TABLE', 390 'TABLE',
353 'TABLES', 391 'TABLES',
392 'TABLESAMPLE',
354 'TABLESPACE', 393 'TABLESPACE',
355 'TEMP', 394 'TEMP',
356 'TEMPLATE', 395 'TEMPLATE',
357 'TEMPORARY', 396 'TEMPORARY',
358 'TEXT', 397 'TEXT',
359 'THEN', 398 'THEN',
399 'TIES',
360 'TIME', 400 'TIME',
361 'TIMESTAMP', 401 'TIMESTAMP',
362 'TO', 402 'TO',
363 'TRAILING', 403 'TRAILING',
364 'TRANSACTION', 404 'TRANSACTION',
405 'TRANSFORM',
365 'TREAT', 406 'TREAT',
366 'TRIGGER', 407 'TRIGGER',
367 'TRIM', 408 'TRIM',
368 'TRUE', 409 'TRUE',
369 'TRUNCATE', 410 'TRUNCATE',
370 'TRUSTED', 411 'TRUSTED',
371 'TYPE', 412 'TYPE',
372 'TYPES', 413 'TYPES',
414 'UESCAPE',
373 'UNBOUNDED', 415 'UNBOUNDED',
374 'UNCOMMITTED', 416 'UNCOMMITTED',
375 'UNENCRYPTED', 417 'UNENCRYPTED',
376 'UNION', 418 'UNION',
377 'UNIQUE', 419 'UNIQUE',
410 'XMLATTRIBUTES', 452 'XMLATTRIBUTES',
411 'XMLCONCAT', 453 'XMLCONCAT',
412 'XMLELEMENT', 454 'XMLELEMENT',
413 'XMLEXISTS', 455 'XMLEXISTS',
414 'XMLFOREST', 456 'XMLFOREST',
457 'XMLNAMESPACES',
415 'XMLPARSE', 458 'XMLPARSE',
416 'XMLPI', 459 'XMLPI',
417 'XMLROOT', 460 'XMLROOT',
418 'XMLSERIALIZE', 461 'XMLSERIALIZE',
462 'XMLTABLE',
419 'YEAR', 463 'YEAR',
420 'YES', 464 'YES',
421 'ZONE', 465 'ZONE',
422 ) 466 )
423 467
450 'json', 494 'json',
451 'jsonb', 495 'jsonb',
452 'line', 496 'line',
453 'lseg', 497 'lseg',
454 'macaddr', 498 'macaddr',
499 'macaddr8',
455 'money', 500 'money',
456 'numeric', 501 'numeric',
457 'path', 502 'path',
458 'pg_lsn', 503 'pg_lsn',
504 'pg_snapshot',
459 'point', 505 'point',
460 'polygon', 506 'polygon',
461 'real', 507 'real',
462 'serial', 508 'serial',
463 'serial2', 509 'serial2',
481 'xml', 527 'xml',
482 ) 528 )
483 529
484 PSEUDO_TYPES = ( 530 PSEUDO_TYPES = (
485 'any', 531 'any',
532 'anyarray',
533 'anycompatible',
534 'anycompatiblearray',
535 'anycompatiblenonarray',
536 'anycompatiblerange',
486 'anyelement', 537 'anyelement',
487 'anyarray', 538 'anyenum',
488 'anynonarray', 539 'anynonarray',
489 'anyenum',
490 'anyrange', 540 'anyrange',
491 'cstring', 541 'cstring',
542 'event_trigger',
543 'fdw_handler',
544 'index_am_handler',
492 'internal', 545 'internal',
493 'language_handler', 546 'language_handler',
494 'fdw_handler', 547 'pg_ddl_command',
495 'record', 548 'record',
549 'table_am_handler',
496 'trigger', 550 'trigger',
551 'tsm_handler',
552 'unknown',
497 'void', 553 'void',
498 'opaque',
499 ) 554 )
500 555
501 # Remove 'trigger' from types 556 # Remove 'trigger' from types
502 PSEUDO_TYPES = tuple(sorted(set(PSEUDO_TYPES) - set(map(str.lower, KEYWORDS)))) 557 PSEUDO_TYPES = tuple(sorted(set(PSEUDO_TYPES) - set(map(str.lower, KEYWORDS))))
503 558
517 572
518 from pygments.util import format_lines 573 from pygments.util import format_lines
519 574
520 # One man's constant is another man's variable. 575 # One man's constant is another man's variable.
521 SOURCE_URL = 'https://github.com/postgres/postgres/raw/master' 576 SOURCE_URL = 'https://github.com/postgres/postgres/raw/master'
522 KEYWORDS_URL = SOURCE_URL + '/doc/src/sgml/keywords.sgml' 577 KEYWORDS_URL = SOURCE_URL + '/src/include/parser/kwlist.h'
523 DATATYPES_URL = SOURCE_URL + '/doc/src/sgml/datatype.sgml' 578 DATATYPES_URL = SOURCE_URL + '/doc/src/sgml/datatype.sgml'
524 579
525 def update_myself(): 580 def update_myself():
526 data_file = list(urlopen(DATATYPES_URL)) 581 content = urlopen(DATATYPES_URL).read().decode('utf-8', errors='ignore')
582 data_file = list(content.splitlines())
527 datatypes = parse_datatypes(data_file) 583 datatypes = parse_datatypes(data_file)
528 pseudos = parse_pseudos(data_file) 584 pseudos = parse_pseudos(data_file)
529 585
530 keywords = parse_keywords(urlopen(KEYWORDS_URL)) 586 content = urlopen(KEYWORDS_URL).read().decode('utf-8', errors='ignore')
587 keywords = parse_keywords(content)
588
531 update_consts(__file__, 'DATATYPES', datatypes) 589 update_consts(__file__, 'DATATYPES', datatypes)
532 update_consts(__file__, 'PSEUDO_TYPES', pseudos) 590 update_consts(__file__, 'PSEUDO_TYPES', pseudos)
533 update_consts(__file__, 'KEYWORDS', keywords) 591 update_consts(__file__, 'KEYWORDS', keywords)
534 592
535 def parse_keywords(f): 593 def parse_keywords(f):
536 kw = [] 594 kw = []
537 for m in re.finditer( 595 for m in re.finditer(r'PG_KEYWORD\("(.+?)"', f):
538 r'\s*<entry><token>([^<]+)</token></entry>\s*' 596 kw.append(m.group(1).upper())
539 r'<entry>([^<]+)</entry>', f.read()):
540 kw.append(m.group(1))
541 597
542 if not kw: 598 if not kw:
543 raise ValueError('no keyword found') 599 raise ValueError('no keyword found')
544 600
545 kw.sort() 601 kw.sort()
574 return dt 630 return dt
575 631
576 def parse_pseudos(f): 632 def parse_pseudos(f):
577 dt = [] 633 dt = []
578 re_start = re.compile(r'\s*<table id="datatype-pseudotypes-table">') 634 re_start = re.compile(r'\s*<table id="datatype-pseudotypes-table">')
579 re_entry = re.compile(r'\s*<entry><type>([^<]+)</></entry>') 635 re_entry = re.compile(r'\s*<entry><type>(.+?)</type></entry>')
580 re_end = re.compile(r'\s*</table>') 636 re_end = re.compile(r'\s*</table>')
581 637
582 f = iter(f) 638 f = iter(f)
583 for line in f: 639 for line in f:
584 if re_start.match(line) is not None: 640 if re_start.match(line) is not None:
597 raise ValueError('end of pseudo datatypes table not found') 653 raise ValueError('end of pseudo datatypes table not found')
598 654
599 if not dt: 655 if not dt:
600 raise ValueError('pseudo datatypes not found') 656 raise ValueError('pseudo datatypes not found')
601 657
658 dt.sort()
602 return dt 659 return dt
603 660
604 def update_consts(filename, constname, content): 661 def update_consts(filename, constname, content):
605 with open(filename) as f: 662 with open(filename) as f:
606 data = f.read() 663 data = f.read()
613 (constname,)) 670 (constname,))
614 671
615 new_block = format_lines(constname, content) 672 new_block = format_lines(constname, content)
616 data = data[:m.start()] + new_block + data[m.end():] 673 data = data[:m.start()] + new_block + data[m.end():]
617 674
618 with open(filename, 'w') as f: 675 with open(filename, 'w', newline='\n') as f:
619 f.write(data) 676 f.write(data)
620 677
621 update_myself() 678 update_myself()

eric ide

mercurial