Skip to content

Commit

Permalink
修改domain=images支持。stdDomain=file-list的时候,返回前台的类型被修改为List<String>
Browse files Browse the repository at this point in the history
  • Loading branch information
entropy-cloud committed Aug 28, 2024
1 parent ddfc973 commit 93f44fe
Show file tree
Hide file tree
Showing 5 changed files with 33 additions and 26 deletions.
3 changes: 2 additions & 1 deletion docs/theory/explanation-of-delta.md
Original file line number Diff line number Diff line change
Expand Up @@ -453,8 +453,9 @@ $$

数学上可以证明,幂等性与群结构是冲突的。一旦存在幂等元素,就不可能构成群结构。

假设满足幂等性: $ a*a = a $, 那么

$$
幂等性: a * a = a \\
\begin{aligned}
a &= a*e = a * (a*a^{-1}) \\
&= a* a * a^{-1} = (a* a) * a^{-1} \\
Expand Down
12 changes: 6 additions & 6 deletions docs/tutorial/simple/10-xdsl-used-in-codegen.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ Nop平台系统化的使用DSL来解决传统软件工程中的问题,这也

## 一. XCodeGenerator的执行过程

  `App = Delta x-extends Generator<DSL>`这个公式中提到的Generator是一个抽象概念,它泛指一切针对领域结构的抽象变换机制,具体的表现可以是一个独立的代码生成工具,也可以是某种内置在程序语言内部的宏函数(Macro Function)和元编程(Meta Programming)机制。XCodeGenerator是Nop平台内置的一个通用代码生成器。
`App = Delta x-extends Generator<DSL>`这个公式中提到的Generator是一个抽象概念,它泛指一切针对领域结构的抽象变换机制,具体的表现可以是一个独立的代码生成工具,也可以是某种内置在程序语言内部的宏函数(Macro Function)和元编程(Meta Programming)机制。XCodeGenerator是Nop平台内置的一个通用代码生成器。

> 参见[地表最强的模型驱动代码生成器NopCodeGen](https://mp.weixin.qq.com/s/rd36AFh5pmjwtRFmApRswg)
Expand Down Expand Up @@ -119,8 +119,8 @@ Nop平台提供的是一个通用解析器,它会根据ImportModel模型给出

需要注意的是,这里的转换逻辑比JSON序列化复杂,因为解析得到的模型对象丢失了Excel格式和布局信息,它和ExcelWorkbook的相互转换在两个方向上是不对称的,可以看作是JSON序列化的一种非对称扩展。

> **ExcelWorkbook + ImportModel => ModelObject**
>
> **ExcelWorkbook + ImportModel => ModelObject**
>
> **ModelObject + ReportModel => ExcelWorkbook**
ImportModel是ImportExcelParser在运行时所使用的模型信息,它可以保存为imp.xml文件,以DSL的形态存在。
Expand Down Expand Up @@ -217,20 +217,20 @@ xpl模板语言是整个XLang语言家族的一部分,而XLang语言是Nop平
* XDef元模型本身也通过`xdef.xdef`来进行约束,但是在具体实现层面XDefinitionParser解析XDef模型文件的时候是手工编写的,并没有使用自动解析,否则解析XDef需要先解析`xdef.xdef`会导致循环。

* Xpl虽然采用XML语法,但是它解析后得到的抽象语法树AST与XScript是一致的,都是XLangAST。

```xml
<c:unit>
<c:for var="x" items="${list}">
...
</c:for>
<c:script>
for(let x of list){
// ...
// ...
}
</c:script>
</c:unit>
```

上面的`<c:for>`标签和`<c:script>`标签中的for语句解析得到的都是ForOfStatement。

## 六. DSL背后的统一结构构造规律
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public abstract class _UiDialogModel extends io.nop.core.resource.component.Abst
/**
*
* xml name: size
*
* sm/lg/xl/full控制不同的大小。full表示全屏
*/
private java.lang.String _size ;

Expand Down Expand Up @@ -253,7 +253,7 @@ public void setShowCloseButton(java.lang.Boolean value){
/**
*
* xml name: size
*
* sm/lg/xl/full控制不同的大小。full表示全屏
*/

public java.lang.String getSize(){
Expand Down
18 changes: 1 addition & 17 deletions nop-web/src/main/resources/_vfs/nop/web/xlib/control.xlib
Original file line number Diff line number Diff line change
Expand Up @@ -720,23 +720,7 @@
]]></source>
</view-images>

<edit-images>
<attr name="dispMeta"/>
<attr name="propMeta"/>

<source><![CDATA[
const name = propMeta?.name || dispMeta.id
return {
type: 'input-array',
"name": name,
items:{
type: 'input-text',
required:true,
placeholder: '输入图片地址'
}
}
]]></source>
</edit-images>
<edit-images x:prototype="edit-file-list" />

<edit-string-array>
<attr name="dispMeta"/>
Expand Down
22 changes: 22 additions & 0 deletions nop-xlang/src/main/resources/_vfs/nop/core/xlib/meta-prop.xlib
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,27 @@
</prop>
</source>
</domain-csv-list>

<domain-file-list outputMode="node">
<attr name="propNode"/>

<source>
<prop name="${propNode.getAttr('name')}">
<schema type="List&lt;String>"/>

<transformIn>
import io.nop.orm.support.OrmEntityHelper;
return OrmEntityHelper.joinFileList(value?.$toCsvList());
</transformIn>

<transformOut>
import io.nop.orm.support.OrmEntityHelper;
return OrmEntityHelper.parseFileList(value);
</transformOut>
</prop>
</source>
</domain-file-list>

<domain-images x:prototype="domain-file-list" />
</tags>
</lib>

0 comments on commit 93f44fe

Please sign in to comment.