~dricottone/huttese-apk

ref: 0aefaebac3a764012a753e3d73c159ed66f15f79 huttese-apk/sr.ht/py3-pygments/0001-lexers-add-Hare.patch -rw-r--r-- 4.1 KiB
0aefaeba — Drew DeVault Update build.yml in preparation for 3.15 upgrade 2 years ago
                                                                                
b7c90e6f Drew DeVault
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
From d5d3351836fde35cbbad374d50685353eb38ddbc Mon Sep 17 00:00:00 2001
From: Drew DeVault <sir@cmpwn.com>
Date: Fri, 4 Feb 2022 13:09:04 +0100
Subject: [PATCH] lexers: add Hare

---
 pygments/lexers/_mapping.py |  1 +
 pygments/lexers/hare.py     | 69 +++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+)
 create mode 100644 pygments/lexers/hare.py

diff --git a/pygments/lexers/_mapping.py b/pygments/lexers/_mapping.py
index 40120a87..873b30f8 100644
--- a/pygments/lexers/_mapping.py
+++ b/pygments/lexers/_mapping.py
@@ -198,6 +198,7 @@ LEXERS = {
     'HamlLexer': ('pygments.lexers.html', 'Haml', ('haml',), ('*.haml',), ('text/x-haml',)),
     'HandlebarsHtmlLexer': ('pygments.lexers.templates', 'HTML+Handlebars', ('html+handlebars',), ('*.handlebars', '*.hbs'), ('text/html+handlebars', 'text/x-handlebars-template')),
     'HandlebarsLexer': ('pygments.lexers.templates', 'Handlebars', ('handlebars',), (), ()),
+    'HareLexer': ('pygments.lexers.hare', 'Hare', ('hare',), ('*.ha',), ('text/x-hare',)),
     'HaskellLexer': ('pygments.lexers.haskell', 'Haskell', ('haskell', 'hs'), ('*.hs',), ('text/x-haskell',)),
     'HaxeLexer': ('pygments.lexers.haxe', 'Haxe', ('haxe', 'hxsl', 'hx'), ('*.hx', '*.hxsl'), ('text/haxe', 'text/x-haxe', 'text/x-hx')),
     'HexdumpLexer': ('pygments.lexers.hexdump', 'Hexdump', ('hexdump',), (), ()),
diff --git a/pygments/lexers/hare.py b/pygments/lexers/hare.py
new file mode 100644
index 00000000..f501d670
--- /dev/null
+++ b/pygments/lexers/hare.py
@@ -0,0 +1,69 @@
+"""
+    :copyright: Copyright 2006-2017 by the Pygments team, see AUTHORS.
+    :license: BSD, see LICENSE for details.
+"""
+
+import re
+
+from pygments.lexer import RegexLexer, include, bygroups, inherit, words, \
+    default
+from pygments.token import Text, Comment, Operator, Keyword, Name, String, \
+    Number, Punctuation
+
+__all__ = ['HareLexer']
+
+class HareLexer(RegexLexer):
+    name = 'Hare'
+    aliases = ['hare']
+    filenames = ['*.ha']
+    mimetypes = ['text/x-hare']
+
+    _ws = r'(?:\s|//.*?\n|/[*].*?[*]/)+'
+    _ws1 = r'\s*(?:/[*].*?[*]/\s*)?'
+
+    tokens = {
+        'whitespace': [
+            (r'^use.*;', Comment.Preproc),
+            (r'@[a-z]+', Comment.Preproc),
+            (r'\n', Text),
+            (r'\s+', Text),
+            (r'//.*?$', Comment.Single),
+        ],
+        'statements': [
+            (r'(L?)(")', bygroups(String.Affix, String), 'string'),
+            (r"(L?)(')(\\.|\\[0-7]{1,3}|\\x[a-fA-F0-9]{1,2}|[^\\\'\n])(')",
+             bygroups(String.Affix, String.Char, String.Char, String.Char)),
+            (r'(\d+\.\d*|\.\d+|\d+)[eE][+-]?\d+[LlUu]*', Number.Float),
+            (r'(\d+\.\d*|\.\d+|\d+[fF])[fF]?', Number.Float),
+            (r'0x[0-9a-fA-F]+[LlUu]*', Number.Hex),
+            (r'0o[0-7]+[LlUu]*', Number.Oct),
+            (r'\d+[zui]?(\d+)?', Number.Integer),
+            (r'[~!%^&*+=|?:<>/-]', Operator),
+            (words('as', 'is'), Operator),
+            (r'[()\[\],.{};]', Punctuation),
+            (words(('abort', 'alloc', 'append', 'assert', 'case', 'char',
+                'const', 'def', 'defer', 'delete', 'else', 'enum', 'export',
+                'fn', 'for', 'free', 'if', 'let', 'len', 'match', 'offset',
+                'return', 'static', 'struct', 'switch', 'type', 'union',
+                'yield'),
+                suffix=r'\b'), Keyword),
+            (r'(bool|int|uint|uintptr|u8|u16|u32|u64|i8|i16|i32|i64|f32|f64|null|void|nullable|rune|size)\b',
+             Keyword.Type),
+            (r'(true|false|null)\b', Name.Builtin),
+            ('[a-zA-Z_]\w*', Name),
+        ],
+        'string': [
+            (r'"', String, '#pop'),
+            (r'\\([\\abfnrtv"\']|x[a-fA-F0-9]{2,4}|'
+             r'u[a-fA-F0-9]{4}|U[a-fA-F0-9]{8}|[0-7]{1,3})', String.Escape),
+            (r'[^\\"\n]+', String),  # all other characters
+            (r'\\', String),  # stray backslash
+        ],
+        'root': [
+            include('whitespace'),
+            include('statements'),
+        ],
+    }
+
+    def __init__(self, **options):
+        RegexLexer.__init__(self, **options)
-- 
2.35.1