aboutsummaryrefslogtreecommitdiff
path: root/src/support/type
diff options
context:
space:
mode:
authorAdrian Kummerlaender2014-06-25 20:23:35 +0200
committerAdrian Kummerlaender2014-06-25 20:23:35 +0200
commit7b872121000d4db4026d0c90fcb95a10f1e43694 (patch)
treed1cea19c4556b3574978f51bdf2bed2d36fbb73f /src/support/type
parent0d670478b51c55e44f57995fe3ca8a4585723a6c (diff)
downloadInputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar
InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.gz
InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.bz2
InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.lz
InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.xz
InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.tar.zst
InputXSLT-7b872121000d4db4026d0c90fcb95a10f1e43694.zip
Added support for resolving non-existing paths
* previous logic for resolving boost::filesystem::path parameters in the XObjectValue class actively tried to resolve existing files ** this contradicts the planned introduction of e.g. a external "write-file" function * callers of external functions with path arguments now have to enclose them in square brackets if include path resolution is required ** analog to the usage of the "xsl:import" tag * moved "getPathFromSystemId" from compilation local method into static method of IncludeEntityResolver * changed test cases accordingly
Diffstat (limited to 'src/support/type')
-rw-r--r--src/support/type/xobject_value.cc19
1 files changed, 5 insertions, 14 deletions
diff --git a/src/support/type/xobject_value.cc b/src/support/type/xobject_value.cc
index 0236597..46ce53c 100644
--- a/src/support/type/xobject_value.cc
+++ b/src/support/type/xobject_value.cc
@@ -28,23 +28,14 @@ std::string XObjectValue::get<std::string>(
template <>
boost::filesystem::path XObjectValue::get<boost::filesystem::path>(
const xalan::XObjectPtr& ptr) const {
- const boost::filesystem::path rawPath(
- toString(ptr->str())
+ const std::string rawPath(
+ this->get<std::string>(ptr)
);
- const boost::filesystem::path filePath(
- this->filesystem_context_.resolve(rawPath)
- );
-
- if ( !(boost::filesystem::exists(filePath) &&
- boost::filesystem::is_regular_file(filePath)) ) {
- if ( auto resolvedPath = this->include_resolver_->resolve(rawPath) ) {
- return *resolvedPath;
- } else {
- return filePath;
- }
+ if ( auto resolvedPath = this->include_resolver_->resolve(rawPath) ) {
+ return *resolvedPath;
} else {
- return filePath;
+ return this->filesystem_context_.resolve(rawPath);
}
}