初始化工程
This commit is contained in:
156
Config/Tools/Luban/Templates/python-json/schema.sbn
Normal file
156
Config/Tools/Luban/Templates/python-json/schema.sbn
Normal file
@@ -0,0 +1,156 @@
|
||||
from enum import Enum
|
||||
{{
|
||||
|
||||
func table_key_list
|
||||
table = $0
|
||||
varName = $1
|
||||
indexList = table.index_list |array.each do; ret varName + '.' + (format_property_name __code_style $0.index_field.name); end;
|
||||
ret array.join indexList ', '
|
||||
end
|
||||
|
||||
func table_param_name_list
|
||||
table = $0
|
||||
paramList = table.index_list |array.each do; ret $0.index_field.name; end
|
||||
ret array.join paramList ', '
|
||||
end
|
||||
}}
|
||||
|
||||
{{~for enum in __enums~}}
|
||||
{{~if enum.comment != '' ~}}
|
||||
'''
|
||||
{{enum.comment | html.escape}}
|
||||
'''
|
||||
{{~end~}}
|
||||
class {{full_name enum}}(Enum):
|
||||
{{~ for item in enum.items ~}}
|
||||
{{~if item.comment_or_alias != '' ~}}
|
||||
'''
|
||||
{{item.comment_or_alias | html.escape}}
|
||||
'''
|
||||
{{~end~}}
|
||||
{{item.name}} = {{item.value}}
|
||||
{{~end~}}
|
||||
{{~if enum.items.empty?~}}
|
||||
pass
|
||||
{{~end~}}
|
||||
|
||||
{{~end~}}
|
||||
|
||||
{{~for bean in __beans
|
||||
name = (full_name bean)
|
||||
~}}
|
||||
class {{name}} {{if bean.parent_def_type}}({{full_name bean.parent_def_type}}){{end}}:
|
||||
{{~if bean.is_abstract_type~}}
|
||||
_childrenTypes = None
|
||||
@staticmethod
|
||||
def fromJson(_json_):
|
||||
childrenTypes = {{name}}._childrenTypes
|
||||
if not childrenTypes:
|
||||
childrenTypes = {{name}}._childrenTypes = {
|
||||
{{~ for child in bean.hierarchy_not_abstract_children~}}
|
||||
'{{impl_data_type child bean}}': {{name}},
|
||||
{{~end~}}
|
||||
}
|
||||
type = _json_['$type']
|
||||
child = {{name}}._childrenTypes.get(type)
|
||||
if child != None:
|
||||
return child(_json_)
|
||||
else:
|
||||
raise Exception()
|
||||
{{~end~}}
|
||||
def __init__(self, _json_):
|
||||
{{~if bean.parent_def_type~}}
|
||||
{{full_name bean.parent_def_type}}.__init__(self, _json_)
|
||||
{{~end~}}
|
||||
{{~ for field in bean.export_fields ~}}
|
||||
{{deserialize_field ('self.' + (format_field_name __code_style field.name)) '_json_' field.name field.ctype}}
|
||||
{{~end~}}
|
||||
{{~if bean.export_fields.empty?}}
|
||||
pass
|
||||
{{~end~}}
|
||||
|
||||
{{~end~}}
|
||||
|
||||
{{~for table in __tables
|
||||
value_type = table.value_ttype
|
||||
~}}
|
||||
class {{full_name table}}:
|
||||
{{~if table.is_map_table ~}}
|
||||
|
||||
def __init__(self, _json_ ):
|
||||
self._dataMap = {}
|
||||
self._dataList = []
|
||||
|
||||
for _json2_ in _json_:
|
||||
{{deserialize '_v' '_json2_' value_type}}
|
||||
self._dataList.append(_v)
|
||||
self._dataMap[_v.{{format_field_name __code_style table.index_field.name}}] = _v
|
||||
|
||||
def getDataMap(self) : return self._dataMap
|
||||
def getDataList(self) : return self._dataList
|
||||
|
||||
def get(self, key) : return self._dataMap.get(key)
|
||||
{{~else if table.is_union_index~}}
|
||||
|
||||
def __init__(self, _json_ ):
|
||||
self._dataMap = {}
|
||||
self._dataList = []
|
||||
|
||||
for _json2_ in _json_:
|
||||
{{deserialize '_v' '_json2_' value_type}}
|
||||
self._dataList.append(_v)
|
||||
self._dataMap[({{table_key_list table '_v'}})] = _v
|
||||
|
||||
def getDataMap(self) : return self._dataMap
|
||||
def getDataList(self) : return self._dataList
|
||||
|
||||
def get(self, {{table_param_name_list table}}) : return self._dataMap.get(({{table_param_name_list table}}))
|
||||
|
||||
{{~else if table.is_list_table ~}}
|
||||
|
||||
def __init__(self, _json_ ):
|
||||
self._dataList = []
|
||||
{{~for idx in table.index_list~}}
|
||||
self._dataMap_{{idx.index_field.name}} = {}
|
||||
{{~end~}}
|
||||
for _json2_ in _json_:
|
||||
{{deserialize '_v' '_json2_' value_type}}
|
||||
self._dataList.append(_v)
|
||||
{{~for idx in table.index_list~}}
|
||||
self._dataMap_{{idx.index_field.name}}[_v.{{format_property_name __code_style idx.index_field.name}}] = _v
|
||||
{{~end~}}
|
||||
|
||||
def getDataList(self) : return self._dataList
|
||||
|
||||
def get(self, index) : return self._dataList[index]
|
||||
{{~for idx in table.index_list~}}
|
||||
def get_by_{{format_property_name __code_style idx.index_field.name}}(self, key): return self._dataMap_{{idx.index_field.name}}.get(key)
|
||||
{{~end~}}
|
||||
{{~else~}}
|
||||
|
||||
def __init__(self, _json_):
|
||||
if (len(_json_) != 1): raise Exception('table mode=one, but size != 1')
|
||||
{{deserialize 'self._data' '_json_[0]' value_type}}
|
||||
|
||||
def getData(self) : return self._data
|
||||
|
||||
{{~ for field in value_type.def_bean.hierarchy_export_fields ~}}
|
||||
{{~if field.comment != ''
|
||||
name = format_field_name __code_style field.name
|
||||
~}}
|
||||
'''
|
||||
{{escape_comment field.comment}}
|
||||
'''
|
||||
{{~end~}}
|
||||
def {{name}}(self) : return self._data.{{name}}
|
||||
{{~end~}}
|
||||
{{~end~}}
|
||||
|
||||
{{~end~}}
|
||||
|
||||
|
||||
class {{str_full_name __full_name}}:
|
||||
def __init__(self, loader):
|
||||
{{~for table in __tables ~}}
|
||||
self.{{format_method_name __code_style table.name}} = {{full_name table}}(loader('{{table.output_data_file}}'));
|
||||
{{~end~}}
|
||||
Reference in New Issue
Block a user