mapres 2.4a8__tar.gz → 2.4a10__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mapres
3
- Version: 2.4a8
3
+ Version: 2.4a10
4
4
  Summary: A powerfull mapping utility
5
5
  Author: iFamished
6
6
  License: MIT
@@ -7,7 +7,7 @@ build-backend = "setuptools.build_meta"
7
7
 
8
8
  [project]
9
9
  name = "mapres"
10
- version = "2.4-alpha.8"
10
+ version = "2.4-alpha.10"
11
11
  description = "A powerfull mapping utility"
12
12
  readme = "README.md"
13
13
  requires-python = ">=3.9"
@@ -12,6 +12,7 @@ class syntax:
12
12
  paren_dollar = r'\$\(([^)]+)\)' # $(value)
13
13
  colons = r':([^:\n]+):' # :value:
14
14
 
15
+
15
16
  @dataclass
16
17
  class DataMap:
17
18
  '''Core datamap class. Contains logic used to make datamaps'''
@@ -38,13 +39,8 @@ class DataMap:
38
39
  return getattr(cls, '__syntax__', syntax.double_braces)
39
40
 
40
41
 
41
- # decorator
42
- def datamap(
43
- _cls = None,
44
- *,
45
- syntax: str = syntax.double_braces,
46
- mode: bool | str | None = None,
47
- ):
42
+ # main decorator factory
43
+ def datamap(_cls=None, *, syntax=syntax.double_braces, mode=None):
48
44
  '''@datamap decorator with optional values'''
49
45
  def wrap(cls):
50
46
  cls.__syntax__ = syntax
@@ -56,16 +52,40 @@ def datamap(
56
52
  if rules_obj is not None:
57
53
  setattr(cls, 'rules', rules_obj)
58
54
  return dataclass(frozen=False)(cls)
59
- return wrap if _cls is None else wrap(_cls)
55
+ if _cls is not None:
56
+ return wrap(_cls)
57
+ return wrap
58
+
59
+
60
+ # syntax-bound decorator factories
61
+ class _SyntaxFactory:
62
+ def __init__(self, syntax_value):
63
+ self._syntax = syntax_value
64
+
65
+ def __call__(self, _cls=None, **kwargs):
66
+ # Case 1: bare decorator: @datamap.colons
67
+ if _cls is not None and isinstance(_cls, type):
68
+ return datamap(_cls, syntax=self._syntax)
69
+
70
+ # Case 2: decorator with args: @datamap.colons(mode='config')
71
+ return datamap(syntax=self._syntax, **kwargs)
72
+
73
+ @property
74
+ def config(self):
75
+ # Case 3: @datamap.colons.config
76
+ return datamap(syntax=self._syntax, mode='config')
77
+
60
78
 
79
+ # build syntax shortcuts
80
+ datamap.double_braces = _SyntaxFactory(syntax.double_braces)
81
+ datamap.angles = _SyntaxFactory(syntax.angles)
82
+ datamap.dollars = _SyntaxFactory(syntax.dollars)
83
+ datamap.percents = _SyntaxFactory(syntax.percents)
84
+ datamap.at_tags = _SyntaxFactory(syntax.at_tags)
85
+ datamap.hash_tags = _SyntaxFactory(syntax.hash_tags)
86
+ datamap.pipe_tags = _SyntaxFactory(syntax.pipe_tags)
87
+ datamap.paren_dollar = _SyntaxFactory(syntax.paren_dollar)
88
+ datamap.colons = _SyntaxFactory(syntax.colons)
61
89
 
62
- # decorator shortcuts
63
- datamap.double_braces = datamap(syntax=syntax.double_braces)
64
- datamap.angles = datamap(syntax=syntax.angles)
65
- datamap.dollars = datamap(syntax=syntax.dollars)
66
- datamap.percents = datamap(syntax=syntax.percents)
67
- datamap.at_tags = datamap(syntax=syntax.at_tags)
68
- datamap.hash_tags = datamap(syntax=syntax.hash_tags)
69
- datamap.pipe_tags = datamap(syntax=syntax.pipe_tags)
70
- datamap.paren_dollar = datamap(syntax=syntax.paren_dollar)
71
- datamap.colons = datamap(syntax=syntax.colons)
90
+ # global mode shortcut
91
+ datamap.config = datamap(mode='config')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mapres
3
- Version: 2.4a8
3
+ Version: 2.4a10
4
4
  Summary: A powerfull mapping utility
5
5
  Author: iFamished
6
6
  License: MIT
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes