| | # -*- coding: utf-8 -*- |
---|
| | """ |
---|
| | PostgreSQL SQL lexer |
---|
| | """ |
---|
| | |
---|
| | from pygments.lexers.sql import SqlLexer |
---|
| | from pygments.token import Name, Keyword |
---|
| | |
---|
| | __all__ = ['PostgreSQLLexer'] |
---|
| | |
---|
| | class PostgreSQLLexer(SqlLexer): |
---|
| | name = 'PostgreSQL' |
---|
| | aliases = ['postgresql', 'postgres'] |
---|
| | filenames = ['*.sql'] # just to have one if you want to use |
---|
| | |
---|
| | EXTRA_KEYWORDS = ['partition', 'over', 'rank', 'ntile', |
---|
| | 'first_value', 'last_value', 'row_number', 'nulls', |
---|
| | 'range', 'unbounded', 'preceding', 'following', 'trunc', |
---|
| | 'nth_value', 'dense_rank', 'lag', 'lead', |
---|
| | 'round', 'make_interval', 'date_trunc'] |
---|
| | |
---|
| | def get_tokens_unprocessed(self, text): |
---|
| | for index, token, value in SqlLexer.get_tokens_unprocessed(self, text): |
---|
| | if token is Name and value in self.EXTRA_KEYWORDS: |
---|
| | yield index, Keyword, value |
---|
| | else: |
---|
| | yield index, token, value |
---|
| | |
---|
|