From cdc40723190d605822bd569a66ada24a9d3b6d7c Mon Sep 17 00:00:00 2001 From: Sunil Shetye Date: Wed, 16 Oct 2024 20:44:03 +0530 Subject: do not count SplitBlock inside SuperBlockDiagram replace with the exact XPath SplitBlock => /XcosDiagram/mxGraphModel/root/SplitBlock --- blocks/eda-frontend/public/splitblock.xsl | 6 +++--- blocks/eda-frontend/src/utils/GalleryUtils.js | 18 ++++++++++-------- blocks/xcos2xml/ports/port.xsl | 16 +++++----------- blocks/xcos2xml/replacesplitblocks.sh | 4 ++-- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/blocks/eda-frontend/public/splitblock.xsl b/blocks/eda-frontend/public/splitblock.xsl index 115d03d0..15cec80b 100644 --- a/blocks/eda-frontend/public/splitblock.xsl +++ b/blocks/eda-frontend/public/splitblock.xsl @@ -236,7 +236,7 @@ - + @@ -439,7 +439,7 @@ - + @@ -455,7 +455,7 @@ - + diff --git a/blocks/eda-frontend/src/utils/GalleryUtils.js b/blocks/eda-frontend/src/utils/GalleryUtils.js index d43f5870..cebfd93c 100644 --- a/blocks/eda-frontend/src/utils/GalleryUtils.js +++ b/blocks/eda-frontend/src/utils/GalleryUtils.js @@ -20,7 +20,13 @@ const getSplitXsltProcessor = async () => { return processor } -const splitBlock = / { + const result = contextNode.evaluate(xpath, contextNode, null, XPathResult.NUMBER_TYPE, null) + + return result.numberValue +} export const transformXcos = async (xmlDoc) => { const splitProcessor = await getSplitXsltProcessor() @@ -36,9 +42,7 @@ const removeOneSplit = (xmlDoc, count, splitProcessor) => { } xmlDoc = splitProcessor.transformToDocument(xmlDoc) - const dataDump = new XMLSerializer().serializeToString(xmlDoc) - const matches = dataDump.match(splitBlock) - const newCount = matches ? matches.length : 0 + const newCount = countNodesByXPath(splitBlockXPathCount, xmlDoc) if (newCount !== count - 1) { console.error('newCount=', newCount, ', count=', count) throw new Error('count mismatch') @@ -59,8 +63,7 @@ const removeSplits1 = (xmlDoc, splitProcessor) => { return removeNextSplit(xmlDoc, count, splitProcessor) } - const dataDump = new XMLSerializer().serializeToString(xmlDoc) - const count = dataDump.match(splitBlock).length + const count = countNodesByXPath(splitBlockXPathCount, xmlDoc) console.log('count=', count) if (count === 0) { return xmlDoc @@ -87,8 +90,7 @@ const removeSplits = async (xmlDoc, splitProcessor, delay) => { }) } - const dataDump = new XMLSerializer().serializeToString(xmlDoc) - const count = dataDump.match(splitBlock).length + const count = countNodesByXPath(splitBlockXPathCount, xmlDoc) console.log('count=', count) if (count === 0) { return xmlDoc diff --git a/blocks/xcos2xml/ports/port.xsl b/blocks/xcos2xml/ports/port.xsl index 4bba0dd9..0c001c75 100644 --- a/blocks/xcos2xml/ports/port.xsl +++ b/blocks/xcos2xml/ports/port.xsl @@ -1,16 +1,10 @@ - - - + - - - - - - - + + + - + diff --git a/blocks/xcos2xml/replacesplitblocks.sh b/blocks/xcos2xml/replacesplitblocks.sh index d223c5cd..d703b6fa 100755 --- a/blocks/xcos2xml/replacesplitblocks.sh +++ b/blocks/xcos2xml/replacesplitblocks.sh @@ -68,7 +68,7 @@ if test -n "$INPUTXML"; then Xcos/MxGraphParser.py "$INPUTXML" >&2 fi -count=$( grep -c '&2 cp -f "$INPUT" "$INPUT1" @@ -78,7 +78,7 @@ while test $count -gt 0; do xsltproc "$SPLITXSL" "$INPUT1" > "$TMPFILE1" xmllint --format "$TMPFILE1" > "$TMPFILE2" - count=$( grep -c '&2 cp -f "$TMPFILE2" "$INPUT1" -- cgit