conversionToYzJson function

List<ResultModel> conversionToYzJson(
  1. String orignJson,
  2. WidgetType type
)

解析ast生成的json,转换成适用于yingzi的格式

Implementation

/// 解析ast生成的json,转换成适用于yingzi的格式
///
// {
//   'name':'functionName',
//   'body':'resultString'
// }
List<ResultModel> conversionToYzJson(String orignJson, WidgetType type) {
  List list = jsonDecode(orignJson)['root'];
  List<ResultModel> modelList = [];
  list.forEach((element) {
    Map resultDic = conversionFunction(element['body']);

    // 如果是widget (—type w)类型,直接返回
    // 如果是页面类型(-type p)类型,再嵌套一层
    if (type == WidgetType.page) {
      resultDic = {
        'key': '',
        'presentMode': '',
        'state': {'initState': [], 'build': [], 'dispose': []},
        'xVar': {},
        'xActions': {},
        'rootWidget': resultDic
      };
    }

    String resultJson = jsonEncode(resultDic);

    modelList.add(ResultModel(
        functionName: element['name'], resultJsonString: resultJson));
  });
  return modelList;
}