aboutsummaryrefslogtreecommitdiff
path: root/src/function
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-04-29 19:24:58 +0200
committerAdrian Kummerländer2014-04-29 19:24:58 +0200
commitddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5 (patch)
treefb8a7851cf2bf5fa4eac3420d218745cf0930756 /src/function
parentd573e3160131e6776a9c148ca3a6754533378a76 (diff)
downloadInputXSLT-ddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5.tar
InputXSLT-ddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5.tar.gz
InputXSLT-ddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5.tar.bz2
InputXSLT-ddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5.tar.lz
InputXSLT-ddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5.tar.xz
InputXSLT-ddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5.tar.zst
InputXSLT-ddfe25807ef90ddd3d10fd4532875ffdb5d5e9c5.zip
Simplified external function result node set
* all functions return a single "error" node in the case that something went wrong * otherwise they return one or more "result" nodes that contain the function results and may be distinguished by one or more attributes * this makes handling the return values easier and more pleasing to the eye as not everything has to be prefixed by "self::*" * updated test transformation accordingly
Diffstat (limited to 'src/function')
-rw-r--r--src/function/read_directory.cc34
-rw-r--r--src/function/read_file.cc29
-rw-r--r--src/function/read_xml_file.cc35
3 files changed, 21 insertions, 77 deletions
diff --git a/src/function/read_directory.cc b/src/function/read_directory.cc
index b0ae13f..686767d 100644
--- a/src/function/read_directory.cc
+++ b/src/function/read_directory.cc
@@ -37,15 +37,11 @@ xalan::XObjectPtr FunctionReadDirectory::execute(
);
if ( boost::filesystem::is_directory(directoryPath) ) {
- xercesc::DOMElement* const contentNode(
- domDocument->createElement(*XercesStringGuard("content"))
- );
-
this->fs_context_.iterate(
argument->str(),
- [&domDocument, &contentNode](const boost::filesystem::path& p) {
+ [&domDocument, &rootNode](const boost::filesystem::path& p) {
xercesc::DOMElement* const itemNode(
- domDocument->createElement(*XercesStringGuard("item"))
+ domDocument->createElement(*XercesStringGuard("result"))
);
switch ( boost::filesystem::status(p).type() ) {
@@ -77,35 +73,13 @@ xalan::XObjectPtr FunctionReadDirectory::execute(
);
itemNode->appendChild(textNode);
- contentNode->appendChild(itemNode);
+ rootNode->appendChild(itemNode);
});
-
- xercesc::DOMElement* const resultNode(
- domDocument->createElement(*XercesStringGuard("status"))
- );
-
- xercesc::DOMText* const resultTextNode(
- domDocument->createTextNode(
- *XercesStringGuard("successful")
- )
- );
-
- resultNode->appendChild(resultTextNode);
-
- rootNode->appendChild(contentNode);
- rootNode->appendChild(resultNode);
} else {
xercesc::DOMElement* const resultNode(
- domDocument->createElement(*XercesStringGuard("status"))
- );
-
- xercesc::DOMText* const resultTextNode(
- domDocument->createTextNode(
- *XercesStringGuard("error")
- )
+ domDocument->createElement(*XercesStringGuard("error"))
);
- resultNode->appendChild(resultTextNode);
rootNode->appendChild(resultNode);
}
}
diff --git a/src/function/read_file.cc b/src/function/read_file.cc
index cfbec59..83456c6 100644
--- a/src/function/read_file.cc
+++ b/src/function/read_file.cc
@@ -48,43 +48,28 @@ xalan::XObjectPtr FunctionReadFile::execute(
(std::istreambuf_iterator<char>())
);
- xercesc::DOMElement* const contentNode(
- domDocument->createElement(*XercesStringGuard("content"))
- );
-
- xercesc::DOMText* const contentTextNode(
- domDocument->createTextNode(
- *XercesStringGuard(fileContent)
- )
+ xercesc::DOMElement* const resultNode(
+ domDocument->createElement(*XercesStringGuard("result"))
);
- xercesc::DOMElement* const resultNode(
- domDocument->createElement(*XercesStringGuard("status"))
+ resultNode->setAttribute(
+ *XercesStringGuard("name"),
+ *XercesStringGuard(filePath.filename().string())
);
xercesc::DOMText* const resultTextNode(
domDocument->createTextNode(
- *XercesStringGuard("successful")
+ *XercesStringGuard(fileContent)
)
);
- contentNode->appendChild(contentTextNode);
resultNode->appendChild(resultTextNode);
-
- rootNode->appendChild(contentNode);
rootNode->appendChild(resultNode);
} else {
xercesc::DOMElement* const resultNode(
- domDocument->createElement(*XercesStringGuard("status"))
+ domDocument->createElement(*XercesStringGuard("error"))
);
- xercesc::DOMText* const resultTextNode(
- domDocument->createTextNode(
- *XercesStringGuard("error")
- )
- );
-
- resultNode->appendChild(resultTextNode);
rootNode->appendChild(resultNode);
}
}
diff --git a/src/function/read_xml_file.cc b/src/function/read_xml_file.cc
index 52f7735..7b54732 100644
--- a/src/function/read_xml_file.cc
+++ b/src/function/read_xml_file.cc
@@ -40,48 +40,33 @@ xalan::XObjectPtr FunctionReadXmlFile::execute(
);
if ( boost::filesystem::is_regular_file(filePath) ) {
- xercesc::DOMElement* const contentNode(
- domDocument->createElement(*XercesStringGuard("content"))
+ xercesc::DOMElement* const resultNode(
+ domDocument->createElement(*XercesStringGuard("result"))
+ );
+
+ resultNode->setAttribute(
+ *XercesStringGuard("name"),
+ *XercesStringGuard(filePath.filename().string())
);
xercesc::XercesDOMParser parser;
boost::filesystem::ifstream file(filePath);
parser.parse(xalan::XSLTInputSource(file));
- xercesc::DOMNode* const contentTreeNode(
+ xercesc::DOMNode* const resultTreeNode(
domDocument->importNode(
parser.getDocument()->getDocumentElement(),
true
)
);
- xercesc::DOMElement* const resultNode(
- domDocument->createElement(*XercesStringGuard("status"))
- );
-
- xercesc::DOMText* const resultTextNode(
- domDocument->createTextNode(
- *XercesStringGuard("successful")
- )
- );
-
- contentNode->appendChild(contentTreeNode);
- resultNode->appendChild(resultTextNode);
-
- rootNode->appendChild(contentNode);
+ resultNode->appendChild(resultTreeNode);
rootNode->appendChild(resultNode);
} else {
xercesc::DOMElement* const resultNode(
- domDocument->createElement(*XercesStringGuard("status"))
- );
-
- xercesc::DOMText* const resultTextNode(
- domDocument->createTextNode(
- *XercesStringGuard("error")
- )
+ domDocument->createElement(*XercesStringGuard("error"))
);
- resultNode->appendChild(resultTextNode);
rootNode->appendChild(resultNode);
}
}