buildz 0.4.3__tar.gz → 0.4.5__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 (149) hide show
  1. {buildz-0.4.3/buildz.egg-info → buildz-0.4.5}/PKG-INFO +1 -1
  2. buildz-0.4.5/buildz/__init__.py +7 -0
  3. buildz-0.4.5/buildz/__main__.py +6 -0
  4. buildz-0.4.5/buildz/argx.py +54 -0
  5. buildz-0.4.5/buildz/demo/ioc/deal.py +19 -0
  6. buildz-0.4.5/buildz/demo/ioc/help.py +7 -0
  7. buildz-0.4.5/buildz/demo/res/conf/ioc.js +20 -0
  8. buildz-0.4.5/buildz/demo/res/conf/main.js +54 -0
  9. buildz-0.4.5/buildz/demo/res/conf/xf.js +21 -0
  10. buildz-0.4.5/buildz/demo/res/help/default.js +9 -0
  11. buildz-0.4.5/buildz/demo/res/help/ioc.js +165 -0
  12. buildz-0.4.5/buildz/demo/res/help/xf.js +35 -0
  13. buildz-0.4.5/buildz/demo/res/test.js +13 -0
  14. buildz-0.4.5/buildz/demo/test.py +42 -0
  15. buildz-0.4.5/buildz/demo/xf/deal.py +16 -0
  16. buildz-0.4.5/buildz/demo/xf/help.py +8 -0
  17. {buildz-0.4.3/buildz/demo → buildz-0.4.5/buildz/demos}/ioc/test.py +4 -0
  18. {buildz-0.4.3/buildz/demo → buildz-0.4.5/buildz/demos}/ioc/test_conf/data1.js +9 -1
  19. buildz-0.4.5/buildz/demos/xf/test.js +12 -0
  20. buildz-0.4.5/buildz/demos/xf/test.py +13 -0
  21. buildz-0.4.5/buildz/fz/__init__.py +6 -0
  22. buildz-0.4.5/buildz/fz/dirz.py +46 -0
  23. buildz-0.4.5/buildz/fz/lsf.py +62 -0
  24. buildz-0.4.5/buildz/ioc/__init__.py +5 -0
  25. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc/confs.py +69 -0
  26. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/base.py +2 -1
  27. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/calls.py +1 -0
  28. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/deals.js +16 -0
  29. buildz-0.4.5/buildz/ioc/ioc_deal/conf/ioc_lists.js +23 -0
  30. buildz-0.4.5/buildz/ioc/ioc_deal/conf/join_lists.js +17 -0
  31. buildz-0.4.5/buildz/ioc/ioc_deal/conf/list_lists.js +17 -0
  32. buildz-0.4.5/buildz/ioc/ioc_deal/conf/map_lists.js +17 -0
  33. buildz-0.4.5/buildz/ioc/ioc_deal/ioc.py +19 -0
  34. buildz-0.4.5/buildz/ioc/ioc_deal/join.py +19 -0
  35. buildz-0.4.5/buildz/ioc/ioc_deal/list.py +19 -0
  36. buildz-0.4.5/buildz/ioc/ioc_deal/map.py +19 -0
  37. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/obj.py +1 -1
  38. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/ref.py +1 -1
  39. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/val.py +1 -1
  40. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/__init__.py +2 -2
  41. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/__main__.py +2 -2
  42. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/build.py +2 -2
  43. buildz-0.4.5/buildz/old_version/keys.py +232 -0
  44. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/__init__.py +3 -3
  45. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/base.py +1 -1
  46. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/buff.py +1 -1
  47. buildz-0.4.5/buildz/old_version/xconfz/fc.py +8 -0
  48. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/fc_item.py +2 -2
  49. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/fc_list.py +2 -2
  50. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/fc_map.py +2 -2
  51. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/fc_set.py +1 -1
  52. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/fc_str.py +1 -1
  53. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/fc_type.py +3 -3
  54. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/fmt_base.py +1 -1
  55. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/fmt_str.py +5 -5
  56. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/fmt_type.py +4 -4
  57. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/mg.py +4 -4
  58. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/mg_fmt.py +6 -6
  59. buildz-0.4.5/buildz/xf/__init__.py +8 -0
  60. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/strz.py +11 -1
  61. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/read.py +9 -1
  62. buildz-0.4.5/buildz/xf/xargs.py +26 -0
  63. {buildz-0.4.3 → buildz-0.4.5/buildz.egg-info}/PKG-INFO +1 -1
  64. buildz-0.4.5/buildz.egg-info/SOURCES.txt +143 -0
  65. {buildz-0.4.3 → buildz-0.4.5}/setup.py +1 -1
  66. buildz-0.4.3/buildz/ioc/__init__.py +0 -3
  67. buildz-0.4.3/buildz/xconfz/fc.py +0 -8
  68. buildz-0.4.3/buildz/xf/__init__.py +0 -5
  69. buildz-0.4.3/buildz.egg-info/SOURCES.txt +0 -113
  70. {buildz-0.4.3 → buildz-0.4.5}/LICENSE +0 -0
  71. {buildz-0.4.3 → buildz-0.4.5}/MANIFEST.in +0 -0
  72. {buildz-0.4.3 → buildz-0.4.5}/README.md +0 -0
  73. {buildz-0.4.3/buildz/demo → buildz-0.4.5/buildz/demos}/ioc/test_conf/base.js +0 -0
  74. {buildz-0.4.3/buildz/demo → buildz-0.4.5/buildz/demos}/ioc/test_conf/data2.js +0 -0
  75. {buildz-0.4.3/buildz/demo → buildz-0.4.5/buildz/demos}/ioc/test_conf/data3.js +0 -0
  76. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/init.py +0 -0
  77. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc/base.py +0 -0
  78. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc/conf.py +0 -0
  79. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/call.py +0 -0
  80. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/call_defaults.js +0 -0
  81. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/call_lists.js +0 -0
  82. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/calls_defaults.js +0 -0
  83. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/calls_lists.js +0 -0
  84. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/env_lists.js +0 -0
  85. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/mcall_defaults.js +0 -0
  86. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/mcall_lists.js +0 -0
  87. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/obj_cst_lists.js +0 -0
  88. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/obj_defaults.js +0 -0
  89. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/obj_lists.js +0 -0
  90. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/obj_set_lists.js +0 -0
  91. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/ovar_lists.js +0 -0
  92. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/ref_lists.js +0 -0
  93. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/conf/var_lists.js +0 -0
  94. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/demo.py +0 -0
  95. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/env.py +0 -0
  96. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/mcall.py +0 -0
  97. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/ovar.py +0 -0
  98. {buildz-0.4.3 → buildz-0.4.5}/buildz/ioc/ioc_deal/var.py +0 -0
  99. {buildz-0.4.3 → buildz-0.4.5}/buildz/keys.py +0 -0
  100. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/base.py +0 -0
  101. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/confz.py +0 -0
  102. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/demo.confz +0 -0
  103. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/demo.py +0 -0
  104. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/run.confz +0 -0
  105. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/test.confz +0 -0
  106. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/test.py +0 -0
  107. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/testc.py +0 -0
  108. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/testf.py +0 -0
  109. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/testz.py +0 -0
  110. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/value.confz +0 -0
  111. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/demo/x/x.py +0 -0
  112. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/dj.txt +0 -0
  113. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/test_loader copy.py +0 -0
  114. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/test_loader.py +0 -0
  115. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/test_writer.py +0 -0
  116. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/tools.py +0 -0
  117. {buildz-0.4.3/buildz → buildz-0.4.5/buildz/old_version}/xconfz/file.py +0 -0
  118. {buildz-0.4.3 → buildz-0.4.5}/buildz/pyz.py +0 -0
  119. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/file.py +0 -0
  120. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/base.py +0 -0
  121. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/buffer.py +0 -0
  122. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/listz.py +0 -0
  123. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/lr.py +0 -0
  124. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/lrval.py +0 -0
  125. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/mapz.py +0 -0
  126. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/nextz.py +0 -0
  127. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/reval.py +0 -0
  128. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/setz.py +0 -0
  129. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/spc.py +0 -0
  130. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/deal/spt.py +0 -0
  131. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/exp.py +0 -0
  132. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/item.py +0 -0
  133. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/mg.py +0 -0
  134. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/loader/pos.py +0 -0
  135. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/mapz.py +0 -0
  136. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/test_write.py +0 -0
  137. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/write.py +0 -0
  138. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/writer/base.py +0 -0
  139. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/writer/conf.py +0 -0
  140. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/writer/deal/jsonval.py +0 -0
  141. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/writer/deal/listz.py +0 -0
  142. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/writer/deal/mapz.py +0 -0
  143. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/writer/deal/reval.py +0 -0
  144. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/writer/deal/strz.py +0 -0
  145. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/writer/itemz.py +0 -0
  146. {buildz-0.4.3 → buildz-0.4.5}/buildz/xf/writer/mg.py +0 -0
  147. {buildz-0.4.3 → buildz-0.4.5}/buildz.egg-info/dependency_links.txt +0 -0
  148. {buildz-0.4.3 → buildz-0.4.5}/buildz.egg-info/top_level.txt +0 -0
  149. {buildz-0.4.3 → buildz-0.4.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: buildz
3
- Version: 0.4.3
3
+ Version: 0.4.5
4
4
  Summary: a json-like 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,7 @@
1
+ #coding=utf-8
2
+
3
+ __version__="0.4.5"
4
+
5
+ __author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
6
+
7
+ from .argx import fetch as args
@@ -0,0 +1,6 @@
1
+ #coding=utf-8
2
+ from .demo.test import test
3
+ if __name__=="__main__":
4
+ test()
5
+
6
+ pass
@@ -0,0 +1,54 @@
1
+ #coding=utf-8
2
+ import sys
3
+ def fetch(argv = None):
4
+ r"""
5
+ format: a b c -a 123 -b456 --c=789 +d -x"??? ???" y z
6
+ return: [a,b,c,y,z], {a:123,b:456,c:789,d:1,x:'??? ???'}
7
+ """
8
+ if argv is None:
9
+ argv = sys.argv[1:]
10
+ lists, maps = [],{}
11
+ argv = [str(k).strip() for k in argv]
12
+ argv = [k for k in argv if k!=""]
13
+ i = 0
14
+ while i<len(argv):
15
+ v = argv[i]
16
+ if v in ["-", "--", "+"]or v[0] not in "+-":
17
+ lists.append(v)
18
+ i+=1
19
+ continue
20
+ if v[0] == "+":
21
+ key = v[1:]
22
+ val = 1
23
+ else:
24
+ if v[1]=="-":
25
+ kv = v[2:]
26
+ x = kv.split("=")
27
+ key = x[0]
28
+ val = "=".join(x[1:])
29
+ if len(val)==0:
30
+ val = 1
31
+ else:
32
+ key = v[1]
33
+ if len(v)>2:
34
+ val = argv[2:]
35
+ else:
36
+ if i+1>=len(argv):
37
+ val = 1
38
+ else:
39
+ val = argv[i+1]
40
+ i+=1
41
+ if key not in maps:
42
+ maps[key] = []
43
+ maps[key].append(val)
44
+ i+=1
45
+ for k in maps:
46
+ v = maps[k]
47
+ if len(v)==1:
48
+ maps[k] = v[0]
49
+ return lists, maps
50
+
51
+ pass
52
+
53
+
54
+
@@ -0,0 +1,19 @@
1
+ #coding=utf-8
2
+ from buildz import xf, argx, pyz, ioc, fz
3
+
4
+ class Deal:
5
+ def deal(self):
6
+ args, maps = argx.fetch()
7
+ if len(args)<3:
8
+ print("need params 1 to be filepath, params 2 to be data_id")
9
+ return
10
+ dp = args[1]
11
+ fps = fz.search(dp, ".*\.js$")
12
+ confs = ioc.build()
13
+ confs.add_fps(fps)
14
+ id = args[2]
15
+ rst = confs.get(id)
16
+ print(f"get {id}: {rst}")
17
+ return rst
18
+
19
+ pass
@@ -0,0 +1,7 @@
1
+ #coding=utf-8
2
+ from buildz import xf, argx, pyz, ioc
3
+
4
+ from ..test import Help as BaseHelp
5
+ class Help(BaseHelp):
6
+ pass
7
+ pass
@@ -0,0 +1,20 @@
1
+ {
2
+ datas: [
3
+ {
4
+ id: help.ioc
5
+ type: object
6
+ source: buildz.demo.ioc.help.Help
7
+ construct: {
8
+ maps: {
9
+ dp: [ref, help.dir]
10
+ fp: [val, ioc.js]
11
+ }
12
+ }
13
+ }
14
+ {
15
+ id: deal.ioc
16
+ type: object
17
+ source: buildz.demo.ioc.deal.Deal
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ datas: [
3
+ {
4
+ id: help.dir
5
+ type: join
6
+ data: [
7
+ [var, buildz.demo.test.dp]
8
+ [val, res/help]
9
+ ]
10
+ }
11
+ {
12
+ id: help.default, type: object, source: buildz.demo.test.Help
13
+ construct: {
14
+ args: [(ref, help.dir), (val, default.js)]
15
+ }
16
+ }
17
+ {
18
+ id: demo, type: object, source: buildz.demo.test.Deal
19
+ construct: {
20
+ //args: []
21
+ maps: {
22
+ conf: {
23
+ type: ioc
24
+ key: conf
25
+ }
26
+ deals: {
27
+ type: val
28
+ // 这里让test.Deal自己查id对应的object,也可以写成在配置里直接映射好,但写起来比较麻烦
29
+ data: {
30
+ ioc: {
31
+ deal: deal.ioc
32
+ help: help.ioc
33
+ },
34
+ xf: {
35
+ deal: deal.xf
36
+ help: help.xf
37
+ }
38
+ }
39
+ }
40
+ default: {
41
+ type: ref
42
+ key: help.default
43
+ }
44
+ }
45
+ }
46
+ }
47
+ {
48
+ id: run
49
+ type: mcall
50
+ source: demo
51
+ method: run
52
+ }
53
+ ]
54
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ datas: [
3
+ {
4
+ id: help.xf
5
+ type: object
6
+ source: buildz.demo.xf.help.Help
7
+ construct: {
8
+ args: [
9
+ [ref, help.dir]
10
+ [val, xf.js]
11
+ ]
12
+ }
13
+ }
14
+ {
15
+ id: deal.xf
16
+ type: object
17
+ source: buildz.demo.xf.deal.Deal
18
+ construct: {}
19
+ }
20
+ ]
21
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ text=
3
+ r"""run
4
+ python -m buildz xf -h
5
+ or
6
+ python -m buildz ioc -h
7
+ to see help
8
+ """
9
+ }
@@ -0,0 +1,165 @@
1
+ {
2
+ text=
3
+ r"""
4
+ xf格式的ioc控制反转配置文件读取和生成对象
5
+ 配置文件格式:
6
+ {
7
+ id: 配置文件id,默认null
8
+ //在配置文件配置的环境变量
9
+ envs: {
10
+ id: val
11
+ ...
12
+ }
13
+ // 数据配置项处理逻辑,一般不用管
14
+ deals: {
15
+ {
16
+ type: 要处理的数据类型
17
+ build: 函数import的路径
18
+ args: [] // 列表入参
19
+ maps: {} // 字典入参
20
+ }
21
+ }
22
+ namespace: 命名空间
23
+ locals: [
24
+ 本地数据配置项
25
+ ]
26
+ datas: [
27
+ 全局数据配置项
28
+ ]
29
+ }
30
+
31
+ 预设的数据项格式
32
+ 1, 数据val:
33
+ {
34
+ // 查找id,可选
35
+ id: id
36
+ type: val
37
+ data: any thing
38
+ }
39
+ 简写:
40
+ [[id, val], data] -> [val, data]
41
+
42
+ 2, 对象object:
43
+ {
44
+ id: id
45
+ type: object
46
+ source: 导入路径+调用方法/类
47
+ single: 1 //是否单例,默认是
48
+ construct:{
49
+ args: [
50
+ ...
51
+ ]
52
+ maps: {
53
+ key: {...}
54
+ }
55
+ }
56
+ sets: {
57
+ key: {...}
58
+ }
59
+ calls: [
60
+ ...
61
+ ]
62
+ }
63
+ 简写:
64
+ [[id, object, single], source, construct, sets, calls] -> [object, source]
65
+
66
+ 3, 引用
67
+ {
68
+ id: id
69
+ type: ref
70
+ key: 引导数据id
71
+ }
72
+ 简写:
73
+ [[id, ref], key] -> [ref, key]
74
+
75
+ 4, 环境变量
76
+ {
77
+ id: id
78
+ type: env
79
+ key: 环境变量key
80
+ }
81
+ 简写:
82
+ [[id, env], key] -> [env, key]
83
+
84
+ 5, 对象方法调用:
85
+ {
86
+ id: id
87
+ type: mcall
88
+ source: 对象id
89
+ method: 调用方法
90
+ args: [...]
91
+ maps: {key:...}
92
+ }->
93
+ [[id, mcall], source, method, args, maps]->[mcall, source, method]
94
+ 6, 函数调用:
95
+ {
96
+ id:id
97
+ type:call
98
+ method: import路径+"."+方法名
99
+ args: [...]
100
+ maps: {key:...}
101
+ }->
102
+ [[id, call], method, args, maps]->[call, method]
103
+
104
+ 7,对象变量
105
+ {
106
+ id:id
107
+ type: ovar
108
+ source: string
109
+ key: string
110
+ }->
111
+ [[id, ovar], source, key] -> [ovar, source, key]
112
+
113
+ 8, 代码变量
114
+ {
115
+ id:id
116
+ type: var
117
+ key: string
118
+ }->
119
+ [[id, ovar], source, key] -> [ovar, source, key]
120
+
121
+
122
+ 9,ioc字段
123
+ {
124
+ id:id
125
+ type: ioc
126
+ //default conf
127
+ key: string = conf, confs, sid
128
+ }->
129
+ [[id, ioc], key] -> [ioc]
130
+
131
+ 10, list
132
+ {
133
+ id: id
134
+ type: list
135
+ data: [...]
136
+ }
137
+ 11,map
138
+ {
139
+ id:id
140
+ type:map
141
+ data: {
142
+ k: ...
143
+ }
144
+ }
145
+ 12, join:
146
+ //文件路径合并
147
+ {
148
+ id:id
149
+ type: join
150
+ data: [...]
151
+ }
152
+ 13, 函数调用:
153
+ {
154
+ id:id
155
+ type:calls
156
+ calls: [...]
157
+ }->
158
+ [[id, calls], calls]->[calls, method]
159
+
160
+
161
+ 运行:
162
+ python -m buildz ioc 文件夹路径 数据id
163
+ """
164
+
165
+ }
@@ -0,0 +1,35 @@
1
+ {
2
+ text=
3
+ r"""在json格式基础上加了些其他东西,让配置写起来更简单:
4
+ 1,字符串可以不用引号括起来,程序判断字段不是整数,小数,布尔型等类型后,当字段是字符串
5
+ 2,可以写注释,//,#,/**/, ###...###,其中/*note*/和###note###是多行注释
6
+ 3,分号;和逗号,和换行\n等价,等于号=和冒号:等价,括号()和中括号[]等价
7
+ 4,加了python的字符串书写方式:"...", '...', r"...",r'...', r'''...'''
8
+ 5,输出格式化
9
+ 6,可配置化
10
+
11
+ 运行以下命令会打印文件名格式化后的样式:
12
+ python -m buildz xf 文件名
13
+
14
+ 比如:
15
+
16
+ 文件test.js:
17
+ ---------
18
+ {
19
+ name: 测试配置
20
+ data: [
21
+ (1,.2,.03,4e-4,500)
22
+ {
23
+ // 中文当key
24
+ 代号=嘿嘿
25
+ age = ???
26
+ # 字符串里有特殊符合,还是要用引号括起来
27
+ 'a:b':"{c,d,e,f}"
28
+ }
29
+ ]
30
+ }
31
+ ---------
32
+ 运行:
33
+ python -m buildz xf test.js
34
+ """
35
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ name: 测试配置
3
+ data: [
4
+ (1,.2,.03,4e-4,500)
5
+ {
6
+ // 中文当key
7
+ 代号=嘿嘿
8
+ age = ???
9
+ # 字符串里有特殊符合,还是要用引号括起来
10
+ 'a:b':"{c,d,e,f}"
11
+ }
12
+ ]
13
+ }
@@ -0,0 +1,42 @@
1
+ #coding=utf-8
2
+ from buildz import xf, argx, pyz, ioc, fz
3
+ from os.path import dirname, join
4
+ class Help:
5
+ def __init__(self, dp, fp):
6
+ fp = join(dp, fp)
7
+ self.text = xf.loads(xf.fread(fp))['text']
8
+ def deal(self):
9
+ print(self.text)
10
+
11
+ pass
12
+ class Deal:
13
+ def __init__(self, conf, deals, default):
14
+ self.deals = {}
15
+ self.default = default
16
+ for md in deals:
17
+ self.deals[md] = {}
18
+ refs = deals[md]
19
+ for key in refs:
20
+ ref = refs[key]
21
+ obj = conf.get(ref)
22
+ self.deals[md][key] = obj
23
+ def run(self):
24
+ args, maps = argx.fetch()
25
+ if len(args)==0:
26
+ return self.default.deal()
27
+ md = args[0]
28
+ help = "h" in maps or "help" in maps
29
+ key = "deal" if not help else "help"
30
+ obj = self.deals[md][key]
31
+ obj.deal()
32
+
33
+ pass
34
+ dp = dirname(__file__)
35
+ def test():
36
+ fps = fz.search(join(dp, 'res', 'conf'), ".*\.js")
37
+ confs = ioc.build()
38
+ confs.add_fps(fps)
39
+ confs.get("run")
40
+
41
+ pass
42
+
@@ -0,0 +1,16 @@
1
+ #coding=utf-8
2
+ from buildz import xf, argx, pyz, ioc
3
+
4
+ class Deal:
5
+ def deal(self):
6
+ args, maps = argx.fetch()
7
+ if len(args)<2:
8
+ print("need params 1 to be filepath")
9
+ return
10
+ fp = args[1]
11
+ obj = xf.loads(xf.fread(fp))
12
+ s = xf.dumps(obj, format=1, deep=1)
13
+ print(s)
14
+ pass
15
+
16
+ pass
@@ -0,0 +1,8 @@
1
+ #coding=utf-8
2
+ from buildz import xf, argx, pyz, ioc
3
+ from ..test import Help as BaseHelp
4
+ class Help(BaseHelp):
5
+ pass
6
+ pass
7
+
8
+
@@ -1,6 +1,7 @@
1
1
  #
2
2
  from buildz.ioc import build
3
3
  from buildz import xf
4
+ from buildz import argx
4
5
  import os
5
6
  join = os.path.join
6
7
  class Test:
@@ -11,6 +12,8 @@ class Test:
11
12
  def run(self):
12
13
  print(f"get obj:{self}")
13
14
  print("get_obj.obj:", self.obj)
15
+ print(f"ioc: {self.ioc}")
16
+ print(f"ioc env: {self.ioc.get_env('path')}")
14
17
 
15
18
  pass
16
19
  fps = xf.loads("[data1.js, data2.js, data3.js]")[:2]
@@ -30,6 +33,7 @@ def test():
30
33
  print(f"obj: {obj}")
31
34
  print("DO CALLS")
32
35
  confs.get("data1.calls")
36
+ print("ARGS: ", argx.fetch())
33
37
 
34
38
  pass
35
39
 
@@ -22,6 +22,14 @@
22
22
  sets: [
23
23
  [obj, [ref, test]]
24
24
  [obj1, [ovar, null, args]]
25
+ [ioc, [ioc, conf]]
26
+ {
27
+ key: conf
28
+ val: {
29
+ type: ioc
30
+ key: conf
31
+ }
32
+ }
25
33
  ],
26
34
  calls: [
27
35
  [mcall, null, run, [], {}]
@@ -37,7 +45,7 @@
37
45
  }
38
46
  {
39
47
  id: test.obj
40
- val: test.show
48
+ data: test.show
41
49
  }
42
50
  {
43
51
  id: calls
@@ -0,0 +1,12 @@
1
+ {
2
+ // test
3
+ list: [
4
+ 1,2,3,,,[a,b,c]
5
+ ]
6
+ map: {
7
+ 0: 1, 2:3
8
+ 4:5, 6:7
9
+ 8:9, 10:11
10
+ money: 1024000
11
+ }
12
+ }
@@ -0,0 +1,13 @@
1
+ from buildz import xf
2
+
3
+ from os.path import join, dirname
4
+ dp = dirname(__file__)
5
+ fp = join(dp, "test.js")
6
+
7
+ s = xf.fread(fp)
8
+ obj = xf.loads(s)
9
+
10
+ rs = xf.dumps(obj, format=1, deep = 1)
11
+ print(rs)
12
+ args = xf.args()
13
+ print("args from cmd:", args)
@@ -0,0 +1,6 @@
1
+ #coding=utf-8
2
+ #author:
3
+ from .dirz import dirs, FileDeal
4
+ from .lsf import lists, search
5
+
6
+ __author__ = "Zzz, emails: 1174534295@qq.com, 1309458652@qq.com"
@@ -0,0 +1,46 @@
1
+ #coding=utf-8
2
+ import os
3
+ #列出文件夹下所有文件和文件更新时间
4
+ #文件访问处理方法
5
+ #建议visit读取文件
6
+ #catch处理目录访问异常
7
+ class FileDeal:
8
+ def __init__(self, *argv, **maps):
9
+ self.init(*argv, **maps)
10
+ def result(self):
11
+ return None
12
+ def init(self, *argv, **maps):
13
+ pass
14
+ def work(self, *argv, **maps):
15
+ return self.dirs(*argv, **maps)
16
+ def dirs(self, filepath, depth = 0):
17
+ dirs(filepath, self, depth)
18
+ return self.result()
19
+ def visit(self, filepath, isdir, depth):
20
+ return True
21
+ def catch(self, filepath, isdir, depth, exp):
22
+ pass
23
+ def deal(self, filepath, isdir, depth, exp = None):
24
+ if exp is None:
25
+ return self.visit(filepath, isdir, depth)
26
+ else:
27
+ return self.catch(filepath, isdir, depth, exp)
28
+ def __call__(self, *argv, **maps):
29
+ return self.deal(*argv, **maps)
30
+
31
+ pass
32
+ #遍历文件/文件夹filepath
33
+ def dirs(filepath, fc=FileDeal(), depth = 0):
34
+ isdir = os.path.isdir(filepath)
35
+ visit = fc(filepath, isdir, depth)
36
+ if isdir and visit:
37
+ try:
38
+ files = os.listdir(filepath)
39
+ except Exception as exp:
40
+ fc(filepath, isdir, depth, exp)
41
+ return
42
+ files = [os.path.join(filepath, file) for file in files]
43
+ [dirs(fp, fc, depth+1) for fp in files]
44
+
45
+ pass
46
+
@@ -0,0 +1,62 @@
1
+ #coding=utf-8
2
+
3
+ from . import dirz
4
+
5
+ import re
6
+ class ListsDeal(dirz.FileDeal):
7
+ def result(self):
8
+ return self.fps, self.errors
9
+ def init(self):
10
+ super().init()
11
+ self.fps = []
12
+ self.errors = []
13
+ def visit(self, fp, isdir, depth):
14
+ self.fps.append([fp, isdir])
15
+ return True
16
+ def catch(self, fp, isdir, depth, exp):
17
+ self.errors.append([fp, isdir, exp])
18
+
19
+ pass
20
+
21
+ class FileSearchDeal(dirz.FileDeal):
22
+ def init(self, pt_fp=None, pt = None):
23
+ super().init()
24
+ self.pt_fp = pt_fp
25
+ if type(pt) == str:
26
+ pt = pt.encode()
27
+ self.pt = pt
28
+ self.rst = []
29
+ def result(self):
30
+ return self.rst
31
+ def visit(self, filepath, isdir, depth):
32
+ if isdir:
33
+ return True
34
+ if self.pt_fp is not None and len(re.findall(self.pt_fp, filepath))==0:
35
+ return False
36
+ if self.pt is not None:
37
+ try:
38
+ with open(filepath, 'rb') as f:
39
+ s = f.read()
40
+ except Exception as exp:
41
+ print("fread exp in :", filepath, "exp:", exp)
42
+ return False
43
+ if len(re.findall(self.pt, s))==0:
44
+ return False
45
+ #print("find:", filepath)
46
+ self.rst.append(filepath)
47
+ return False
48
+ def catch(self, filepath, isdir, depth, exp):
49
+ print(f"exp in {filepath} isdir={isdir}: {exp}")
50
+ pass
51
+
52
+ pass
53
+
54
+
55
+ def lists(fp):
56
+ return ListsDeal().dirs(fp)
57
+
58
+ pass
59
+ def search(dp, pt_fp = None, pt = None):
60
+ return FileSearchDeal(pt_fp, pt).dirs(dp)
61
+
62
+ pass