mapres 2.4a8__tar.gz → 2.4a9__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.4a9
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.9"
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)
60
-
61
-
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)
55
+
56
+ # direct decorator: @datamap(...)
57
+ if _cls is not None:
58
+ return wrap(_cls)
59
+
60
+ # factory: @datamap(...)
61
+ return wrap
62
+
63
+
64
+ # syntax-bound decorator factories
65
+ class _SyntaxFactory:
66
+ def __init__(self, syntax_value):
67
+ self._syntax = syntax_value
68
+
69
+ def __call__(self, **kwargs):
70
+ # allows: @datamap.double_braces(mode='config')
71
+ return datamap(syntax=self._syntax, **kwargs)
72
+
73
+ @property
74
+ def config(self):
75
+ # allows: @datamap.double_braces.config
76
+ return datamap(syntax=self._syntax, mode='config')
77
+
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)
89
+
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.4a9
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