12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import {isBasicData, isNull} from "planning-tools";
- import {IRenderProcessor, isNameValue, isNgxModuleValue, NgxModuleData, KeyValue, ProcessorData} from "../input.ts";
- import {isBoolean} from "lodash";
- /**
- * 渲染基础类型的数据,int,string,bool
- * @param lines
- * @param k
- * @param value
- */
- export const renderBasicData = (lines: string[], k: string, value: any)=>{
- if (!isBasicData(value)){
- return false
- }
- if (isBoolean(value)){
- value = value ? 'on': 'off'
- }
- lines.push(`${k} ${value};`)
- return true
- }
- /**
- * 自定义输入项的通用渲染规则,
- * @param values
- * @param processor 自定义渲染方法,仅能处理一级,别搞多
- */
- export const renderInputLines = (values: any, processor?: IRenderProcessor) => {
- console.log('renderLines',values)
- const lines: string[] = [];
- const httpLines:string[] = [];
- Object.keys(values).forEach(k=>{
- let value = values[k];
- if (isNull(value)){
- return;
- }
- const processData: ProcessorData = {
- lines,
- httpLines,
- key: k,
- value: value
- }
- if (processor?.(processData)){
- return;
- }
- if (isNgxModuleValue(value)){
- const ngxData = value as NgxModuleData
- ngxData.lines?.forEach((item: string)=>lines.push(`${item}`))
- ngxData.http?.forEach(line=>httpLines.push(line))
- return;
- }
- if (renderBasicData(lines,k,value)){
- return;
- }
- if (Array.isArray(value) && value.length){
- const firstValue = value[0]
- if (isNgxModuleValue(firstValue)){
- value.forEach((data: NgxModuleData)=>{
- data.http?.forEach(line=>httpLines.push(line))
- data.lines?.forEach(line=>lines.push(`${line}`))
- })
- }else if (isNameValue(firstValue)){
- value.forEach((data: KeyValue)=>{
- lines.push(`${data.name} ${data.value};`)
- })
- }else if (isBasicData(firstValue)){
- value = value.join(' ')
- lines.push(`${k} ${value};`)
- }
- }else {
- console.warn('data format not valid', k, value)
- }
- })
- return { lines, httpLines}
- }
|