7 Commits

Author SHA1 Message Date
4128196b93 Merge branch 'master' into xalan_libxml_issue#283 2025-02-07 13:39:18 +01:00
3b96031a42 fix libxml xpath bugs 2025-02-06 18:30:30 +01:00
f3f88ad659 xalan_single_files_frontend (#297)
Reviewed-on: #297
Reviewed-by: Wojciech Szewczyk <szewczyw@noreply.example.com>
Co-authored-by: Wojciech Mizia <miziawojciech@gmail.com>
Co-committed-by: Wojciech Mizia <miziawojciech@gmail.com>
2025-02-05 17:01:23 +01:00
79959c5ff9 issue_tracker (#296)
Co-authored-by: Wojciech Szewczyk <szewczyw@noreply.example.com>
Reviewed-on: #296
Co-authored-by: Wojciech Mizia <miziawojciech@gmail.com>
Co-committed-by: Wojciech Mizia <miziawojciech@gmail.com>
2025-02-05 14:28:20 +01:00
469b5a584f mark_text_doesnt_work (#291)
Updated existing theme so that line highlighting is transparent,  had to add new theme because ovewriting exisiting value was impossible.

Reviewed-on: #291
Reviewed-by: Adam Bem <bema@noreply.example.com>
Co-authored-by: szewczyw <wojtekszewczyk2000@gmail.com>
Co-committed-by: szewczyw <wojtekszewczyk2000@gmail.com>
2025-02-05 14:20:09 +01:00
ec1b56677d remove unnecessary 2025-02-05 14:07:50 +01:00
1a72dc202d fix xalan xpath bugs 2025-02-05 12:46:00 +01:00
5 changed files with 98 additions and 7 deletions

View File

@@ -1,3 +1,5 @@
from typing import Any
from lxml import etree, html from lxml import etree, html
from io import BytesIO from io import BytesIO
@@ -79,9 +81,11 @@ def xpath(source: str, xpath: str) -> str:
else: else:
result_string = "" result_string = ""
for e in result: for e in result:
result_string += etree.tostring(e, pretty_print=True).decode() + "\n" if isinstance(e, etree._Element):
return result_string, "node" result_string += etree.tostring(e, pretty_print=True).decode() + "\n"
else:
result_string += str(e) + "\n"
return result_string, "node"
def xsd(source: str, xsd: str) -> bool: def xsd(source: str, xsd: str) -> bool:

View File

@@ -18,6 +18,10 @@ import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema; import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory; import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator; import javax.xml.validation.Validator;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import java.io.ByteArrayOutputStream; import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.io.StringReader; import java.io.StringReader;
@@ -61,6 +65,13 @@ public class Xalan implements XmlEngine{
return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.TEXT_NODE; return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.TEXT_NODE;
} }
private boolean isAttributeNode(Node n) {
if (n == null)
return false;
short nodeType = n.getNodeType();
return nodeType == Node.CDATA_SECTION_NODE || nodeType == Node.ATTRIBUTE_NODE;
}
@Override @Override
public String processXSLT(XMLMultipleFilesData[] data, String transform) throws Exception { public String processXSLT(XMLMultipleFilesData[] data, String transform) throws Exception {
throw new UnsupportedOperationException("Xalan does not support multiple files XSLT processing"); throw new UnsupportedOperationException("Xalan does not support multiple files XSLT processing");
@@ -101,7 +112,10 @@ public class Xalan implements XmlEngine{
for (Node nn = n.getNextSibling(); isTextNode(nn); nn = nn.getNextSibling()) { for (Node nn = n.getNextSibling(); isTextNode(nn); nn = nn.getNextSibling()) {
resultString.append(nn.getNodeValue()); resultString.append(nn.getNodeValue());
} }
} else { } else if (isAttributeNode(n)) {
resultString.append(n.getNodeValue());
}
else {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(outputStream))); serializer.transform(new DOMSource(n), new StreamResult(new OutputStreamWriter(outputStream)));
resultString.append(outputStream); resultString.append(outputStream);

View File

@@ -2,7 +2,8 @@
import { onBeforeUpdate, inject } from 'vue' import { onBeforeUpdate, inject } from 'vue'
import { Codemirror } from 'vue-codemirror' import { Codemirror } from 'vue-codemirror'
import { oneDark } from '@codemirror/theme-one-dark' import { oneDark } from '@codemirror/theme-one-dark'
import { espresso } from 'thememirror'; import { createTheme} from 'thememirror';
import {tags as t} from '@lezer/highlight';
import {xml} from '@codemirror/lang-xml' import {xml} from '@codemirror/lang-xml'
import {json} from '@codemirror/lang-json' import {json} from '@codemirror/lang-json'
import {html} from '@codemirror/lang-html' import {html} from '@codemirror/lang-html'
@@ -18,6 +19,47 @@ const props= defineProps({
}, },
}) })
const lightTheme = createTheme({
variant: 'light',
settings: {
background: '#FFFFFF',
foreground: '#000000',
caret: '#000000',
selection: '#80C7FF',
gutterBackground: '#FFFFFF',
gutterForeground: '#00000070',
lineHighlight: '#C1E2F840',
},
styles: [
{
tag: t.comment,
color: '#AAAAAA',
},
{
tag: [t.keyword, t.operator, t.typeName, t.tagName, t.propertyName],
color: '#2F6F9F',
fontWeight: 'bold',
},
{
tag: [t.attributeName, t.definition(t.propertyName)],
color: '#4F9FD0',
},
{
tag: [t.className, t.string, t.special(t.brace)],
color: '#CF4F5F',
},
{
tag: t.number,
color: '#CF4F5F',
fontWeight: 'bold',
},
{
tag: t.variableName,
fontWeight: 'bold',
},
],
});
const emit = defineEmits( const emit = defineEmits(
[ [
'update:updatedCode' 'update:updatedCode'
@@ -37,7 +79,7 @@ function selectTheme() {
if (isDarkModeSet()) if (isDarkModeSet())
return oneDark; return oneDark;
else else
return espresso; return lightTheme;
} }
function isDarkModeSet(){ function isDarkModeSet(){
@@ -83,4 +125,4 @@ function parseLanguage(name: String){
/> />
</div> </div>
</template> </template>

21
issue_template/bug.md Normal file
View File

@@ -0,0 +1,21 @@
---
name: "Bug template"
about: "This template is for reporting bugs"
title: "Bug"
---
## Description
*A clear and concise description of the issue.*
### Selected Fields
- **Engine:** [Specify the engine used]
- **Version:** [Specify the version]
- **Tool:** [Specify the currently used tool]
### Data:
*Paste used xml/xslt/json etc...*
## Additional Context
*Any other information that might help with this issue.*

10
issue_template/feature.md Normal file
View File

@@ -0,0 +1,10 @@
---
name: "Feature request template"
about: "This template is for requesting features"
title: "Feature request"
---
## Feature Request
*Describe the feature youd like to see and why its useful.*