From 97641c088c44dd60f63e697466c73613a1c63262 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 02 Jul 2022 21:37:01 +0800
Subject: [PATCH] Merge branch 'master' of http://120.27.238.55:7000/r/farmer-cms
---
src/main/java/com/xcong/farmer/cms/cms/node/PartNode.java | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 102 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/xcong/farmer/cms/cms/node/PartNode.java b/src/main/java/com/xcong/farmer/cms/cms/node/PartNode.java
new file mode 100644
index 0000000..3866f09
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/cms/node/PartNode.java
@@ -0,0 +1,102 @@
+package com.xcong.farmer.cms.cms.node;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.StrUtil;
+import com.xcong.farmer.cms.cms.template.Configuration;
+import org.jsoup.nodes.Element;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class PartNode extends Configuration {
+
+ private Element element;
+ private Element originalElement;
+ private String html;
+
+ public PartNode(Element element) {
+ this.element = element.clone();
+ this.originalElement = element;
+ }
+
+ public void parser() {
+ this.html = parser(this.element, null);
+ }
+
+ public String parser(Element element, Map<String, Object> tagDataMap) {
+ AttrNode attrNode = new AttrNode(element, tagDataMap);
+ attrNode.parser();
+// attrNode.runDataInject();
+
+ StringBuilder result = new StringBuilder();
+ if (CollUtil.isNotEmpty(element.children())) {
+ Object parseData = attrNode.getData();
+ if (tagDataMap == null) {
+ tagDataMap = new HashMap<>();
+ }
+
+ if (parseData == null) {
+ // 特殊处理。 如果有子节点标签@child,但数据中没有子节点数据,则将该子节点直接删除即直接返回空字符串
+ if (!"@child".equals(attrNode.getTag())) {
+ for (Element children : element.children()) {
+ String html = parser(children, tagDataMap);
+ result.append(html);
+ }
+ } else {
+ return "";
+ }
+ } else {
+ if (parseData instanceof List) {
+ List list = (List) parseData;
+
+ int i = 1;
+ for (Object o : list) {
+ if (StrUtil.isNotBlank(attrNode.getField())) {
+ Map<String, Object> data = new HashMap<>();
+ data.put("index", i);
+ data.put("state", o);
+ tagDataMap.put(attrNode.getField(), data);
+ }
+
+ StringBuilder listHtml = new StringBuilder();
+ for (Element children : element.children()) {
+ String html = parser(children, tagDataMap);
+ listHtml.append(html);
+ }
+ result.append(listHtml);
+ i++;
+ }
+
+ } else if (parseData instanceof Map) {
+ if (StrUtil.isNotBlank(attrNode.getField())) {
+ Map<String, Object> data = new HashMap<>();
+ data.put("index", 1);
+ data.put("state", parseData);
+ tagDataMap.put(attrNode.getField(), data);
+ }
+
+ for (Element children : element.children()) {
+ String html = parser(children, tagDataMap);
+ result.append(html);
+ }
+ }
+ }
+ }
+
+ if (attrNode.tagsEnum != null && attrNode.tagsEnum.getType() == 1) {
+ this.put(attrNode.getField(), result.toString());
+ }
+
+ attrNode.getElement().append(result.toString());
+ return attrNode.getElement().toString();
+ }
+
+ public Element getElement() {
+ return element;
+ }
+
+ public String getHtml() {
+ return html;
+ }
+}
--
Gitblit v1.9.1