hungerlib 3.0.dev7__py3-none-any.whl → 3.0.dev8__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"%([^%]+)%"
10
21
 
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,39 @@ 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)
38
+
25
39
 
40
+ # decorator
41
+ def datamap(_cls=None, *, syntax=Syntax.braces):
42
+ def wrap(cls):
43
+ cls.__syntax__ = syntax
44
+ return dataclass(frozen=True)(cls)
45
+ return wrap if _cls is None else wrap(_cls)
26
46
 
27
47
 
28
- def mapit(text: str, *maps, **runtime) -> str:
48
+ # core templating
49
+ def mapit(text: str, *maps, **runtime):
50
+ maps = (*get_default_maps(), *maps)
29
51
  for m in maps:
30
- # auto-instantiate dataclass classes
31
52
  if isinstance(m, type) and is_dataclass(m):
32
53
  m = m()
33
-
34
- # dataclass instance to dict
35
54
  if is_dataclass(m):
36
- pattern = m.syntax()
37
- dmap = m.as_map()
38
-
39
- # colormap-like objects to dict
55
+ pattern = m.get_syntax()
56
+ d = m.as_map()
40
57
  elif hasattr(m, "as_dict"):
41
- pattern = Syntax.ANGLES
42
- dmap = m.as_dict()
43
-
44
- # raw dict
58
+ pattern = Syntax.angles
59
+ d = m.as_dict()
45
60
  elif isinstance(m, dict):
46
- pattern = runtime.get("syntax", None)
61
+ pattern = runtime.get("syntax")
47
62
  if not pattern:
48
63
  continue
49
- dmap = m
50
-
64
+ d = m
51
65
  else:
52
66
  continue
53
-
54
- # apply this map's syntax only
55
67
  def repl(match):
56
- key = match.group(1)
57
- return str(dmap.get(key, match.group(0)))
68
+ k = match.group(1)
69
+ return str(d.get(k, match.group(0)))
58
70
  text = re.sub(pattern, repl, text)
59
-
60
71
  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.dev8
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=cDlJI5cUDfEeKgFwqaR7YaG-mzmQw1P_H_V5BCqt1FI,1695
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.dev8.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
25
+ hungerlib-3.0.dev8.dist-info/METADATA,sha256=jNLQsxYlP37Q0LQt0vOEc37LJXn9CSDpbo_CgfpM45c,1535
26
+ hungerlib-3.0.dev8.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
27
+ hungerlib-3.0.dev8.dist-info/top_level.txt,sha256=uHBMIM8b2Gt6daNkDF4uw-M2Hm2IpIVw1jOK9wC0fNQ,10
28
+ hungerlib-3.0.dev8.dist-info/RECORD,,