hungerlib 3.0.dev7__py3-none-any.whl → 3.0.dev9__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
hungerlib/datamap.py CHANGED
@@ -1,18 +1,31 @@
1
1
  import re
2
2
  from dataclasses import dataclass, fields, is_dataclass
3
3
 
4
+ # default maps
5
+ _default_maps = []
4
6
 
7
+ def set_default_maps(*maps):
8
+ global _default_maps
9
+ _default_maps = list(maps)
10
+
11
+ def get_default_maps():
12
+ return _default_maps
13
+
14
+
15
+ # syntax patterns
5
16
  class Syntax:
6
- BRACES = r"\{([^{}]+)\}"
7
- DOLLARS = r"\$\{([^{}]+)\}"
8
- ANGLES = r"<([^<>]+)>"
9
- PERCENTS = r"%([^%]+)%"
17
+ braces = r"\{([^{}]+)\}"
18
+ dollars = r"\$\{([^{}]+)\}"
19
+ angles = r"<([^<>]+)>"
20
+ percents = r"%([^%]+)%"
21
+
10
22
 
23
+ # base datamap
11
24
  @dataclass(frozen=True)
12
25
  class DataMap:
13
- __syntax__: str = Syntax.BRACES
26
+ __syntax__: str = Syntax.braces
14
27
 
15
- def as_map(self) -> dict:
28
+ def as_map(self):
16
29
  return {
17
30
  f.name: getattr(self, f.name)
18
31
  for f in fields(self)
@@ -20,41 +33,48 @@ class DataMap:
20
33
  }
21
34
 
22
35
  @classmethod
23
- def syntax(cls) -> str:
24
- return getattr(cls, "__syntax__", Syntax.BRACES)
36
+ def get_syntax(cls):
37
+ return getattr(cls, "__syntax__", Syntax.braces)
25
38
 
26
39
 
40
+ # decorator
41
+ def datamap(_cls=None, *, syntax=Syntax.braces):
42
+ def wrap(cls):
43
+ cls.__syntax__ = syntax
44
+ cls = type(cls.__name__, (DataMap,), dict(cls.__dict__))
45
+ return dataclass(frozen=True)(cls)
46
+ return wrap if _cls is None else wrap(_cls)
47
+
48
+
49
+ # core templating
50
+ def mapit(text: str, *maps, **runtime):
51
+ maps = (*get_default_maps(), *maps)
27
52
 
28
- def mapit(text: str, *maps, **runtime) -> str:
29
53
  for m in maps:
30
- # auto-instantiate dataclass classes
31
54
  if isinstance(m, type) and is_dataclass(m):
32
55
  m = m()
33
56
 
34
- # dataclass instance to dict
35
57
  if is_dataclass(m):
36
- pattern = m.syntax()
37
- dmap = m.as_map()
58
+ pattern = m.get_syntax()
59
+ d = m.as_map()
38
60
 
39
- # colormap-like objects to dict
40
61
  elif hasattr(m, "as_dict"):
41
- pattern = Syntax.ANGLES
42
- dmap = m.as_dict()
62
+ pattern = Syntax.angles
63
+ d = m.as_dict()
43
64
 
44
- # raw dict
45
65
  elif isinstance(m, dict):
46
- pattern = runtime.get("syntax", None)
66
+ pattern = runtime.get("syntax")
47
67
  if not pattern:
48
68
  continue
49
- dmap = m
69
+ d = m
50
70
 
51
71
  else:
52
72
  continue
53
73
 
54
- # apply this map's syntax only
55
74
  def repl(match):
56
- key = match.group(1)
57
- return str(dmap.get(key, match.group(0)))
75
+ k = match.group(1)
76
+ return str(d.get(k, match.group(0)))
77
+
58
78
  text = re.sub(pattern, repl, text)
59
79
 
60
80
  return text
@@ -0,0 +1,6 @@
1
+ from .ascii import ColorMap, ASCII_COLOR_MAP
2
+
3
+ __all__ = [
4
+ 'ColorMap',
5
+ 'ASCII_COLOR_MAP',
6
+ ]
@@ -0,0 +1,30 @@
1
+ from hungerlib import datamap, Syntax, mapit, set_default_maps
2
+
3
+ # ascii colormap
4
+ @datamap(syntax=Syntax.angles)
5
+ class ColorMap:
6
+ black: str = "\033[30m"
7
+ dark_blue: str = "\033[34m"
8
+ dark_green: str = "\033[32m"
9
+ dark_aqua: str = "\033[36m"
10
+ dark_red: str = "\033[31m"
11
+ dark_purple: str = "\033[35m"
12
+ gold: str = "\033[33m"
13
+ gray: str = "\033[37m"
14
+ dark_gray: str = "\033[90m"
15
+ blue: str = "\033[94m"
16
+ green: str = "\033[92m"
17
+ aqua: str = "\033[96m"
18
+ red: str = "\033[91m"
19
+ light_purple: str = "\033[95m"
20
+ yellow: str = "\033[93m"
21
+ white: str = "\033[97m"
22
+ reset: str = "\033[0m"
23
+ bold: str = "\033[1m"
24
+ italic: str = "\033[3m"
25
+
26
+ def as_dict(self):
27
+ return {f"<{k}>": getattr(self, k) for k in self.__dataclass_fields__}
28
+
29
+
30
+ ASCII_COLOR_MAP = ColorMap()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hungerlib
3
- Version: 3.0.dev7
3
+ Version: 3.0.dev9
4
4
  Summary: Powerful automation library for Pterodactyl.
5
5
  Author: iFamished
6
6
  License: MIT
@@ -1,5 +1,5 @@
1
1
  hungerlib/__init__.py,sha256=4Pq93TuN6ObGHypPxjXsAbCPUu2hlwRnj5GMpr8rnNg,782
2
- hungerlib/datamap.py,sha256=6yDMqa698nEOPGGaoEqUHA88bzumT-tGEZlW0iJ3U7I,1450
2
+ hungerlib/datamap.py,sha256=mpL8Zvu68vHWKcr1bpXr2VWcYFRwek-mduPred1_k58,1768
3
3
  hungerlib/messagerouter.py,sha256=Zyz_N93hTfV0SvzHDMT0l5fDYgjIpYMVIEvigm5lh8U,4285
4
4
  hungerlib/panel.py,sha256=WMKBVh9MUM1KEYbvYwLFVzLCMZW4Dopfcxs09FEvfhU,2123
5
5
  hungerlib/addons/__init__.py,sha256=-wTg8YkIc_-99JY5Vyf3LcV1xdCOyIgoIBgPm98ByBQ,540
@@ -16,11 +16,13 @@ hungerlib/api/databases.py,sha256=xxPGMsqZQZ8eP0tSgNVB3i9m-3tdR5ws2aqbMmJDH2c,84
16
16
  hungerlib/api/filemanager.py,sha256=kB5NP3ELQzY1uW6JWVN1g4dekVl8Kk-u9cK7N5dsg3w,2050
17
17
  hungerlib/api/schedule.py,sha256=3gdl0jiIOScdVXWy4aOef-KIoKqUopbI8b1dPgXf5Vg,953
18
18
  hungerlib/api/startup.py,sha256=hKhBjpLMVYa3jjq6ahqm2N32B_fu-bZnOJTZ-P57v4M,434
19
+ hungerlib/maps/__init__.py,sha256=MWBJMa8-fM-mMuedbVLePKkApEsFM-uRTOfz6nyGnws,98
20
+ hungerlib/maps/ascii.py,sha256=J1AlZxm9xhR1Fi0V2EaxFB09RXU7ZRDwPwiFcccG7-s,819
19
21
  hungerlib/servers/__init__.py,sha256=iL2KajxhGHLdvGzEujTaEQmj1wvoHEB5f23YMu1gpyQ,133
20
22
  hungerlib/servers/generic.py,sha256=IOztlMuSCjrW37HJdqGu1762GMBTJlakjFI-6NoawAw,8789
21
23
  hungerlib/servers/minecraft.py,sha256=MasT_sRtHDuPWopo1Aa_tVtCVd-_n5zEysYIRykAY64,3176
22
- hungerlib-3.0.dev7.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
23
- hungerlib-3.0.dev7.dist-info/METADATA,sha256=Afu4FdiaepzoXF97n5diEG9lImoiGSRi0qXR98rEOJE,1535
24
- hungerlib-3.0.dev7.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
25
- hungerlib-3.0.dev7.dist-info/top_level.txt,sha256=uHBMIM8b2Gt6daNkDF4uw-M2Hm2IpIVw1jOK9wC0fNQ,10
26
- hungerlib-3.0.dev7.dist-info/RECORD,,
24
+ hungerlib-3.0.dev9.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
25
+ hungerlib-3.0.dev9.dist-info/METADATA,sha256=Eg-1tHMSZkGioqZviURMu11SKA10xDImVxyltqfPIg4,1535
26
+ hungerlib-3.0.dev9.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
27
+ hungerlib-3.0.dev9.dist-info/top_level.txt,sha256=uHBMIM8b2Gt6daNkDF4uw-M2Hm2IpIVw1jOK9wC0fNQ,10
28
+ hungerlib-3.0.dev9.dist-info/RECORD,,