buildz 0.5.1__tar.gz → 0.5.3__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.
Files changed (139) hide show
  1. {buildz-0.5.1/buildz.egg-info → buildz-0.5.3}/PKG-INFO +1 -1
  2. buildz-0.5.3/buildz/ioc/base.py +4 -0
  3. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc/base.py +4 -0
  4. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc/conf.py +18 -14
  5. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc/confs.py +24 -10
  6. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/base.py +32 -8
  7. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/call.py +2 -2
  8. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/calls.py +2 -2
  9. buildz-0.5.3/buildz/ioc/ioc_deal/deal.py +86 -0
  10. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/env.py +2 -2
  11. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/ioc.py +2 -2
  12. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/join.py +2 -2
  13. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/list.py +2 -2
  14. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/map.py +2 -2
  15. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/mcall.py +2 -2
  16. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/obj.py +2 -2
  17. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/ovar.py +2 -2
  18. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/ref.py +2 -2
  19. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/var.py +2 -2
  20. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/xfile.py +2 -2
  21. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/__init__.py +2 -2
  22. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/file.py +7 -1
  23. buildz-0.5.3/buildz/xf/loaderz/deal/listz.py +35 -0
  24. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/deal/lr.py +14 -5
  25. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/deal/mapz.py +18 -1
  26. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/deal/nextz.py +12 -4
  27. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/deal/reval.py +3 -0
  28. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/deal/spc.py +0 -4
  29. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/mg.py +27 -5
  30. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/test.py +6 -5
  31. buildz-0.5.3/buildz/xf/loaderz/test1.py +7 -0
  32. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/readz.py +11 -2
  33. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/write.py +8 -1
  34. {buildz-0.5.1 → buildz-0.5.3/buildz.egg-info}/PKG-INFO +1 -1
  35. {buildz-0.5.1 → buildz-0.5.3}/buildz.egg-info/SOURCES.txt +2 -0
  36. {buildz-0.5.1 → buildz-0.5.3}/setup.py +1 -1
  37. buildz-0.5.1/buildz/ioc/ioc_deal/deal.py +0 -40
  38. buildz-0.5.1/buildz/xf/loaderz/deal/listz.py +0 -19
  39. {buildz-0.5.1 → buildz-0.5.3}/LICENSE +0 -0
  40. {buildz-0.5.1 → buildz-0.5.3}/MANIFEST.in +0 -0
  41. {buildz-0.5.1 → buildz-0.5.3}/README.md +0 -0
  42. {buildz-0.5.1 → buildz-0.5.3}/buildz/__init__.py +0 -0
  43. {buildz-0.5.1 → buildz-0.5.3}/buildz/__main__.py +0 -0
  44. {buildz-0.5.1 → buildz-0.5.3}/buildz/argx.py +0 -0
  45. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/ioc/deal.py +0 -0
  46. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/ioc/help.py +0 -0
  47. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/myers/deal.py +0 -0
  48. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/myers/help.py +0 -0
  49. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/conf/ioc.js +0 -0
  50. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/conf/main.js +0 -0
  51. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/conf/myers.js +0 -0
  52. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/conf/search.js +0 -0
  53. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/conf/xf.js +0 -0
  54. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/help/default.js +0 -0
  55. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/help/ioc.js +0 -0
  56. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/help/myers.js +0 -0
  57. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/help/search.js +0 -0
  58. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/help/xf.js +0 -0
  59. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/res/test.js +0 -0
  60. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/search/deal.py +0 -0
  61. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/search/help.py +0 -0
  62. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/test.py +0 -0
  63. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/xf/deal.py +0 -0
  64. {buildz-0.5.1 → buildz-0.5.3}/buildz/demo/xf/help.py +0 -0
  65. {buildz-0.5.1 → buildz-0.5.3}/buildz/fz/__init__.py +0 -0
  66. {buildz-0.5.1 → buildz-0.5.3}/buildz/fz/dirz.py +0 -0
  67. {buildz-0.5.1 → buildz-0.5.3}/buildz/fz/fio.py +0 -0
  68. {buildz-0.5.1 → buildz-0.5.3}/buildz/fz/lsf.py +0 -0
  69. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/__init__.py +0 -0
  70. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/init.py +0 -0
  71. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  72. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  73. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  74. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  75. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/deal_lists.js +0 -0
  76. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/deals.js +0 -0
  77. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  78. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/ioc_lists.js +0 -0
  79. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/join_lists.js +0 -0
  80. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/list_lists.js +0 -0
  81. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/map_lists.js +0 -0
  82. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  83. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  84. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  85. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  86. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  87. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  88. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  89. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  90. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  91. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/xfile_defaults.js +0 -0
  92. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/conf/xfile_lists.js +0 -0
  93. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/demo.py +0 -0
  94. {buildz-0.5.1 → buildz-0.5.3}/buildz/ioc/ioc_deal/val.py +0 -0
  95. {buildz-0.5.1 → buildz-0.5.3}/buildz/pyz.py +0 -0
  96. {buildz-0.5.1 → buildz-0.5.3}/buildz/tz/__init__.py +0 -0
  97. {buildz-0.5.1 → buildz-0.5.3}/buildz/tz/myers_diff.py +0 -0
  98. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/__main__.py +0 -0
  99. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/base.py +0 -0
  100. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/buffer.py +0 -0
  101. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/listz.py +0 -0
  102. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/lr.py +0 -0
  103. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/lrval.py +0 -0
  104. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/mapz.py +0 -0
  105. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/nextz.py +0 -0
  106. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/reval.py +0 -0
  107. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/setz.py +0 -0
  108. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/spc.py +0 -0
  109. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/spt.py +0 -0
  110. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/deal/strz.py +0 -0
  111. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/exp.py +0 -0
  112. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/item.py +0 -0
  113. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/mg.py +0 -0
  114. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loader/pos.py +0 -0
  115. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/base.py +0 -0
  116. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/buffer.py +0 -0
  117. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/deal/lrval.py +0 -0
  118. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/deal/setz.py +0 -0
  119. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/deal/spt.py +0 -0
  120. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/deal/strz.py +0 -0
  121. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/exp.py +0 -0
  122. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/item.py +0 -0
  123. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/loaderz/pos.py +0 -0
  124. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/mapz.py +0 -0
  125. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/read.py +0 -0
  126. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/stack.py +0 -0
  127. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/writer/base.py +0 -0
  128. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/writer/conf.py +0 -0
  129. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/writer/deal/jsonval.py +0 -0
  130. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/writer/deal/listz.py +0 -0
  131. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/writer/deal/mapz.py +0 -0
  132. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/writer/deal/reval.py +0 -0
  133. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/writer/deal/strz.py +0 -0
  134. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/writer/itemz.py +0 -0
  135. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/writer/mg.py +0 -0
  136. {buildz-0.5.1 → buildz-0.5.3}/buildz/xf/xargs.py +0 -0
  137. {buildz-0.5.1 → buildz-0.5.3}/buildz.egg-info/dependency_links.txt +0 -0
  138. {buildz-0.5.1 → buildz-0.5.3}/buildz.egg-info/top_level.txt +0 -0
  139. {buildz-0.5.1 → buildz-0.5.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.5.1
3
+ Version: 0.5.3
4
4
  Summary: a json-base file format's read and write code by python, and codes to read and product object from configure file in such format
5
5
  Home-page: https://github.com/buildCodeZ/buildz
6
6
  Author: Zzz
@@ -0,0 +1,4 @@
1
+ #coding=utf-8
2
+
3
+ from .ioc.base import *
4
+ from .ioc_deal.base import BaseDeal, FormatDeal
@@ -47,6 +47,7 @@ class EncapeData(Base):
47
47
  raise IOCError("only dict can be a parent: "+pid)
48
48
  data = dict(data)
49
49
  self.update_maps(data, pdt, replace=0)
50
+ del data['parent']
50
51
  self.data = data
51
52
  self.sid = conf.id
52
53
  self.src = src
@@ -57,5 +58,8 @@ class EncapeData(Base):
57
58
  type = conf.confs.get_data_type(data, 0, conf.default_type())
58
59
  self.type = type
59
60
  self.info = info
61
+ def deal(self, remove = False):
62
+ return self.conf.get(self, src = self.src, info=self.info, remove = remove)
63
+
60
64
 
61
65
  pass
@@ -3,6 +3,7 @@ from buildz import xf, pyz
3
3
  from buildz.xf import g as xg
4
4
  import json
5
5
  from .base import Base, EncapeData,IOCError
6
+ from builtins import id as _id
6
7
  class Conf(Base):
7
8
  """
8
9
  配置文件格式:
@@ -84,6 +85,7 @@ class Conf(Base):
84
85
  self._default_type = xf.g(conf, default_type = None)
85
86
  self.envs = xf.g(conf, envs = {})
86
87
  self.confs.flush_env(self.envs)
88
+ self.confs.update_env(self.envs)
87
89
  for _type in list(self.deals.keys()):
88
90
  conf = self.deals[_type]
89
91
  if type(conf) in [list, tuple]:
@@ -114,17 +116,7 @@ class Conf(Base):
114
116
  def get_env(self, id, search_confs = True):
115
117
  if self.confs.global_env and search_confs:
116
118
  return self.confs.get_env(id, self.id)
117
- ids = self.confs.env_ids(id)
118
- envs = self.envs
119
- find = None
120
- for id in ids:
121
- if type(envs)!=dict:
122
- envs = None
123
- break
124
- if id not in envs:
125
- envs = None
126
- break
127
- envs = envs[id]
119
+ envs = self.confs.get_env_maps(id, self.envs)
128
120
  if envs is not None:
129
121
  return envs
130
122
  if not search_confs:
@@ -145,12 +137,20 @@ class Conf(Base):
145
137
  self.do_init()
146
138
  if id in self.datas:
147
139
  obj = self.datas[id]
148
- return EncapeData(obj, self, local = False, src=src, info = info)
140
+ edata = EncapeData(obj, self, local = False, src=src, info = info)
141
+ if _id(obj) != _id(edata.data):
142
+ # 有parent,做了填充,用填充后的替换
143
+ self.datas[id] = edata.data
144
+ return edata
149
145
  if not local:
150
146
  return None
151
147
  if id in self.locals:
152
148
  obj = self.locals[id]
153
- return EncapeData(obj, self, local = True, src=src, info = info)
149
+ edata = EncapeData(obj, self, local = True, src=src, info = info)
150
+ if _id(obj) != _id(edata.data):
151
+ # 有parent,做了填充,用填充后的替换
152
+ self.locals[id] = edata.data
153
+ return edata
154
154
  if not search_confs:
155
155
  return None
156
156
  return self.confs.get_data(id, self.id, src=src, info = info)
@@ -164,7 +164,11 @@ class Conf(Base):
164
164
  """
165
165
  根据data id获取data对象,处理逻辑:根据data id查配置,根据配置的type查deal,返回deal处理过的配置
166
166
  """
167
- conf = self.get_data(id, src = src, info = info)
167
+ self.do_init()
168
+ if type(id) == EncapeData:
169
+ conf = id
170
+ else:
171
+ conf = self.get_data(id, src = src, info = info)
168
172
  if conf is None:
169
173
  raise IOCError(f"can't find conf of {id}")
170
174
  return None
@@ -55,6 +55,7 @@ class Confs(Base):
55
55
  data = xf.args()
56
56
  env = data['env']
57
57
  self.envs_args = env
58
+ self.flush_env(self.envs_args)
58
59
  def build_env_args_buildz(self):
59
60
  args, maps = argx.fetch()
60
61
  e = xf.get(maps, e = [])
@@ -63,22 +64,25 @@ class Confs(Base):
63
64
  env = [k.split("=") for k in env]
64
65
  env = {k[0]:"=".join(k[1:]) for k in env}
65
66
  self.envs_args = env
67
+ self.flush_env(self.envs_args)
68
+ def build_env_args(self):
69
+ if self.args_type == "xf":
70
+ self.build_env_args_xf()
71
+ else:
72
+ self.build_env_args_buildz()
66
73
  def get_env_args(self, id, sid=None):
67
- if self.envs_args is not None:
68
- if self.args_type == "xf":
69
- self.build_env_args_xf()
70
- else:
71
- self.build_env_args_buildz()
72
- return xf.get(self.envs_args, id)
74
+ if self.envs_args is None:
75
+ self.build_env_args()
76
+ return self.get_env_maps(id, self.envs_args)
73
77
  def get_env_local(self, id, sid=None):
74
78
  if sid is not None and not self.global_env:
75
79
  val = self.confs[sid].get_env(id, False)
76
80
  if val is not None:
77
81
  return val
78
82
  return None
79
- def get_env_conf(self, id, sid=None):
83
+ def get_env_maps(self, id, maps):
80
84
  ids = self.env_ids(id)
81
- envs = self.envs
85
+ envs = maps
82
86
  for id in ids:
83
87
  if type(envs)!=dict:
84
88
  envs = None
@@ -88,6 +92,8 @@ class Confs(Base):
88
92
  break
89
93
  envs = envs[id]
90
94
  return envs
95
+ def get_env_conf(self, id, sid=None):
96
+ return self.get_env_maps(id, self.envs)
91
97
  def get_env(self, id, sid=None):
92
98
  for key in self.env_orders:
93
99
  fc = self.env_fcs[key]
@@ -117,6 +123,8 @@ class Confs(Base):
117
123
  obj = {id:val}
118
124
  self.flush_env(obj)
119
125
  self.update_maps(self.envs, obj)
126
+ def update_env(self, obj):
127
+ self.update_maps(self.envs, obj)
120
128
  def set_deal(self, type, fc):
121
129
  self.deals[type] = fc
122
130
  def init_fp(self, fp):
@@ -205,7 +213,7 @@ class Confs(Base):
205
213
  self.data_index_type = xf.g(conf, data_index_type = [0,1])
206
214
  self.deal_key_type = xf.g(conf, deal_key_type = 'type')
207
215
  self.deal_index_type = xf.g(conf, deal_index_type = 0)
208
- self.env_orders = xf.g(conf, env_orders = ['args', 'sys', 'local', 'conf'])
216
+ self.env_orders = xf.g(conf, env_orders = ['sys', 'local', 'conf'])
209
217
  self.env_fcs = {
210
218
  'args': self.get_env_args,
211
219
  'sys': self.get_env_sys,
@@ -221,6 +229,8 @@ class Confs(Base):
221
229
  self.envs = {}
222
230
  self.envs_args = None
223
231
  self.mark_init = False
232
+ if 'args' in self.env_orders:
233
+ self.build_env_args()
224
234
  def do_init(self):
225
235
  if self.mark_init:
226
236
  return
@@ -239,6 +249,7 @@ class Confs(Base):
239
249
  obj = obj[self.data_index_id[1]]
240
250
  return obj
241
251
  def get_data_type(self, obj, type_first = 1, default = None):
252
+ self.do_init()
242
253
  if type(obj)==dict:
243
254
  if self.data_key_type not in obj:
244
255
  return default
@@ -314,7 +325,10 @@ class Confs(Base):
314
325
  根据data id获取data对象,处理逻辑:根据data id查配置,根据配置的type查deal,返回deal处理过的配置
315
326
  """
316
327
  self.do_init()
317
- conf = self.get_data(id, sid, src=src, info = info)
328
+ if type(id) == EncapeData:
329
+ conf = id
330
+ else:
331
+ conf = self.get_data(id, sid, src=src, info = info)
318
332
  if conf is None:
319
333
  raise IOCError(f"confs: can't find conf of {id}")
320
334
  return None
@@ -117,11 +117,38 @@ class FormatData(Base):
117
117
 
118
118
  pass
119
119
 
120
-
121
120
  class BaseDeal(Base):
122
- def init(self, name = "BaseDeal", fp_lists = None, fp_defaults = None, df_fp_lists=None, df_fp_defaults=None):
123
- self.singles = {}
124
- self.sources = {}
121
+ """
122
+ 基础处理类,加了一些方便处理的方法,自己写的处理可以不用继承这个
123
+ 自己实现的处理类,要实现两个方法:__call__(self, edata:EncapeData)和remove(self, edata:EncapeData)
124
+ 其中remove可以只写个空方法
125
+ """
126
+ def get_obj(self, data, conf, src = None, info = None):
127
+ if type(data) not in [list, dict, tuple]:
128
+ i = conf.confs.data_index_type[0]
129
+ data = [conf.default_type(), data]
130
+ if i != 0:
131
+ data.reverse()
132
+ _type = conf.confs.get_data_type(data, 1, conf.default_type())
133
+ edata = EncapeData(data, conf, local=True, type=_type, src = src, info = info)
134
+ return edata()
135
+ deal = conf.get_deal(edata.type)
136
+ if deal is None:
137
+ return None
138
+ return deal(edata)
139
+ def deal(self, edata:EncapeData):
140
+ """
141
+ """
142
+ return None
143
+ def remove(self, edata:EncapeData):
144
+ return None
145
+
146
+ pass
147
+ class FormatDeal(BaseDeal):
148
+ """
149
+ 格式化处理类,加了自动装填,但感觉不太好用(一方面忘记写注释,写的时间久了,不知道要怎么用了,另一方面不好扩展,再一方面自动填充要消耗时间))
150
+ """
151
+ def init(self, name = "FormatDeal", fp_lists = None, fp_defaults = None, df_fp_lists=None, df_fp_defaults=None):
125
152
  if fp_lists is None:
126
153
  fp_lists = df_fp_lists
127
154
  if fp_defaults is None:
@@ -145,13 +172,10 @@ class BaseDeal(Base):
145
172
  data.reverse()
146
173
  _type = conf.confs.get_data_type(data, 1, conf.default_type())
147
174
  edata = EncapeData(data, conf, local=True, type=_type, src = src, info = info)
175
+ return edata()
148
176
  deal = conf.get_deal(edata.type)
149
177
  if deal is None:
150
178
  return None
151
179
  return deal(edata)
152
- def deal(self, edata:EncapeData):
153
- return None
154
- def remove(self, edata:EncapeData):
155
- return None
156
180
 
157
181
  pass
@@ -1,11 +1,11 @@
1
1
  #
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class CallDeal(BaseDeal):
8
+ class CallDeal(FormatDeal):
9
9
  """
10
10
  函数调用call:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class CallsDeal(BaseDeal):
8
+ class CallsDeal(FormatDeal):
9
9
  """
10
10
  函数调用序列calls:
11
11
  {
@@ -0,0 +1,86 @@
1
+ #coding=utf-8
2
+ from ..ioc.base import Base, EncapeData,IOCError
3
+ from .base import FormatData,FormatDeal
4
+ from buildz import xf, pyz
5
+ import os
6
+ dp = os.path.dirname(__file__)
7
+ join = os.path.join
8
+ class DealDeal(FormatDeal):
9
+ """
10
+ 扩展的好处是自定义格式,除了id,type和parent字段,其他字段可以自己加
11
+ 假设生成个test.Demo,构造函数只有一个字段val
12
+ {
13
+ id: test
14
+ type: object
15
+ source: test.Demo
16
+ construct: {
17
+ args: [
18
+ (val, 'demo')
19
+ ]
20
+ }
21
+ }
22
+ 自己写个生成特定对象的处理类:
23
+ 配置文件1 def_demo.js:
24
+ {
25
+ datas:[
26
+ {
27
+ id: obj.demo.deal
28
+ type: object
29
+ source: test.BuildDemo
30
+ }
31
+ {
32
+ id: demo.deal
33
+ type: deal
34
+ source: obj.demo.deal
35
+ target: demo.deal
36
+ }
37
+ ]
38
+ //inits初始化
39
+ inits: [
40
+ demo.deal
41
+ ]
42
+ }
43
+ 配置文件2 demo.js:
44
+ //只有datas的时候可以简写成只写datas列表里的数据
45
+ [
46
+ {
47
+ id: test
48
+ type: demo.deal
49
+ val: "demo"
50
+ }
51
+ ]
52
+ 调用后会注册到conf的deal上,用于扩展deals配置
53
+ deal字段deal:
54
+ {
55
+ id:id
56
+ type: deal
57
+ target: type
58
+ source: id # 要求source实现了方法__call__(self, edata:EncapeData)
59
+ }
60
+ 简写:
61
+ [[id, deal], target, source]
62
+ [deal, target, source]
63
+ 例:
64
+ [deal, target, source] //
65
+ """
66
+ def init(self, fp_lists=None, fp_defaults=None):
67
+ super().init("DealDeal", fp_lists, fp_defaults, join(dp, "conf", "deal_lists.js"), None)
68
+ def deal(self, edata:EncapeData):
69
+ data = edata.data
70
+ source = xf.g(data, source=None)
71
+ if source is None:
72
+ raise IOCError("not source in dealdeal")
73
+ target = xf.g(data, target=None)
74
+ if target is None:
75
+ raise IOCError("not target in dealdeal")
76
+ obj = edata.conf.get(source)
77
+ if obj is None:
78
+ raise IOCError("source object not found in dealdeal")
79
+ targets = target
80
+ if type(targets) != list:
81
+ targets = [targets]
82
+ for target in targets:
83
+ edata.conf.set_deal(target, obj)
84
+ return None
85
+
86
+ pass
@@ -1,11 +1,11 @@
1
1
  #
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class EnvDeal(BaseDeal):
8
+ class EnvDeal(FormatDeal):
9
9
  """
10
10
  环境变量env:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #coding=utf-8
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class IOCObjectDeal(BaseDeal):
8
+ class IOCObjectDeal(FormatDeal):
9
9
  """
10
10
  ioc字段ioc:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #coding=utf-8
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class JoinDeal(BaseDeal):
8
+ class JoinDeal(FormatDeal):
9
9
  """
10
10
  文件路径合并join:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #coding=utf-8
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class ListDeal(BaseDeal):
8
+ class ListDeal(FormatDeal):
9
9
  """
10
10
  list:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #coding=utf-8
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class MapDeal(BaseDeal):
8
+ class MapDeal(FormatDeal):
9
9
  """
10
10
  map:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class MethodCallDeal(BaseDeal):
8
+ class MethodCallDeal(FormatDeal):
9
9
  """
10
10
  对象方法调用:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #
2
2
  from ..ioc.base import Base, EncapeData,IOCError
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class ObjectDeal(BaseDeal):
8
+ class ObjectDeal(FormatDeal):
9
9
  """
10
10
  对象object:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class ObjectVarDeal(BaseDeal):
8
+ class ObjectVarDeal(FormatDeal):
9
9
  """
10
10
  对象变量ovar:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #coding=utf-8
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class RefDeal(BaseDeal):
8
+ class RefDeal(FormatDeal):
9
9
  """
10
10
  引用ref:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class VarDeal(BaseDeal):
8
+ class VarDeal(FormatDeal):
9
9
  """
10
10
  代码变量var:
11
11
  {
@@ -1,11 +1,11 @@
1
1
  #
2
2
  from ..ioc.base import Base, EncapeData
3
- from .base import FormatData,BaseDeal
3
+ from .base import FormatData,FormatDeal
4
4
  from buildz import xf, pyz
5
5
  import os
6
6
  dp = os.path.dirname(__file__)
7
7
  join = os.path.join
8
- class XfileDeal(BaseDeal):
8
+ class XfileDeal(FormatDeal):
9
9
  """
10
10
  配置文件载入xfile/xf:
11
11
  {
@@ -1,6 +1,6 @@
1
1
 
2
- from .readz import loads, load
3
- from .write import dumps, dump
2
+ from .readz import loads, load, loadf
3
+ from .write import dumps, dump, dumpf
4
4
  from .file import *
5
5
  from .mapz import *
6
6
  from .xargs import fetch as args
@@ -38,4 +38,10 @@ def fread_c(filepath, coding = 'utf-8'):
38
38
  s = bread(filepath)
39
39
  return decode_c(s, coding)
40
40
 
41
- pass
41
+ pass
42
+
43
+ def fwrite(filepath, content, mode = 'w'):
44
+ with open(filepath, mode) as f:
45
+ f.write(content)
46
+
47
+ pass
@@ -0,0 +1,35 @@
1
+ from .. import base
2
+ from .. import item
3
+ from .. import exp
4
+ from . import lr
5
+ class ListDeal(lr.LRDeal):
6
+ """
7
+ 分隔符,有分隔符后将缓存的数据当作字符串
8
+ """
9
+ def init(self, left, right):
10
+ super().init(left, right, 'list')
11
+ def types(self):
12
+ return ['']
13
+ def build(self, obj):
14
+ val = obj.val
15
+ if type(val)!=list:
16
+ obj.is_val = 1
17
+ return obj
18
+ if len(val)==0:
19
+ obj.val = ''
20
+ obj.is_val = 1
21
+ return obj
22
+ if len(val)>1:
23
+ opt = val[1]
24
+ if opt.type=='kv':
25
+ return None
26
+ return self.build_arr(val)
27
+ def build_arr(self, arr):
28
+ rst = []
29
+ for _item in arr:
30
+ if not _item.is_val:
31
+ raise Exception(f"error in list:{_item}")
32
+ rst.append(_item.val)
33
+ return item.Item(rst, type='list', is_val = 1)
34
+
35
+ pass
@@ -26,17 +26,26 @@ class LRDeal(base.BaseDeal):
26
26
  buffer.clean()
27
27
  if len(rm)>0:
28
28
  _arr.append(item.Item(rm ,type = '', is_val=False))
29
+ # dts = []
30
+ # for k in _arr:
31
+ # _k = mg.build(k)
32
+ # if item.is_null(_k):
33
+ # continue
34
+ # dts.append(_k)
35
+ #dts = [mg.build(k) for k in _arr]
36
+ dts = mg.build_arr(_arr)
37
+ obj = self.build_arr(dts)
38
+ rst.append(obj)
39
+ return True
40
+ def to_vals(self, _arr, mg):
29
41
  dts = []
30
42
  for k in _arr:
31
43
  _k = mg.build(k)
32
44
  if item.is_null(_k):
33
45
  continue
34
46
  dts.append(_k)
35
- #dts = [mg.build(k) for k in _arr]
36
- obj = self.build(dts)
37
- rst.append(obj)
38
- return True
39
- def build(self, obj):
47
+ return dts
48
+ def build_arr(self, obj):
40
49
  return item.Item(obj, type = self.type, is_val=True)
41
50
  """
42
51
  分隔符,有分隔符后将缓存的数据当作字符串
@@ -8,7 +8,24 @@ class MapDeal(lr.LRDeal):
8
8
  """
9
9
  def init(self, left, right):
10
10
  super().init(left, right, "map")
11
- def build(self, arr):
11
+ def types(self):
12
+ return ['']
13
+ def build(self, obj):
14
+ val = obj.val
15
+ if type(val)!=list:
16
+ obj.is_val = 1
17
+ return obj
18
+ if len(val)==0:
19
+ obj.val = ''
20
+ obj.is_val = 1
21
+ return obj
22
+ if len(val)%3!=0:
23
+ return None
24
+ opt = val[1]
25
+ if opt.type!='kv':
26
+ return None
27
+ return self.build_arr(val)
28
+ def build_arr(self, arr):
12
29
  rst = {}
13
30
  if len(arr)%3!=0:
14
31
  raise Exception(f"u f in map: {arr}")