<feed xmlns='http://www.w3.org/2005/Atom'>
<title>InputXSLT/src/support/type, branch master</title>
<subtitle>XSLT extensions for static site generation</subtitle>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/'/>
<entry>
<title>Replaced custom `Sequence` implementation with C++14 `std::integer_sequence`</title>
<updated>2014-11-13T17:44:33+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-11-13T17:44:33+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=b9d62d5ce1e3f92a8ab34239c6e4044ad57180df'/>
<id>b9d62d5ce1e3f92a8ab34239c6e4044ad57180df</id>
<content type='text'>
* both the `Sequence` and `IndexSequence` helper templates were developed prior to C++14
* as the new standard covers exactly the functionality provided by these templates they should be replaced
** they are used as indexes to the _Xalan_ parameter array in `FunctionBase`
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* both the `Sequence` and `IndexSequence` helper templates were developed prior to C++14
* as the new standard covers exactly the functionality provided by these templates they should be replaced
** they are used as indexes to the _Xalan_ parameter array in `FunctionBase`
</pre>
</div>
</content>
</entry>
<entry>
<title>Added prefix to system ID of node-based XSLTInputSource instances</title>
<updated>2014-09-04T21:32:10+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-09-04T21:32:10+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=216fcea2c8b52a5657d879628a27a76cb1fef2e3'/>
<id>216fcea2c8b52a5657d879628a27a76cb1fef2e3</id>
<content type='text'>
* otherwise include entity resolution fails for node-based xalan::XSLTInputSource instances instantiated by the XObjectValue class
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* otherwise include entity resolution fails for node-based xalan::XSLTInputSource instances instantiated by the XObjectValue class
</pre>
</div>
</content>
</entry>
<entry>
<title>Replaced FunctionTransform by making the target of FunctionGenerate optional</title>
<updated>2014-08-22T22:19:09+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-22T22:19:09+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=5a54b5b8150d8bf1ac5db3ac688479b3aca6486d'/>
<id>5a54b5b8150d8bf1ac5db3ac688479b3aca6486d</id>
<content type='text'>
* if the target parameter is not provided FunctionGenerate now performs exactly the same functionality as FunctionTransform
* added "boost::optional&lt;boost::filesystem::path&gt;" specialization to the XObjectValue class
* modified test cases accordingly
* modified README.md accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* if the target parameter is not provided FunctionGenerate now performs exactly the same functionality as FunctionTransform
* added "boost::optional&lt;boost::filesystem::path&gt;" specialization to the XObjectValue class
* modified test cases accordingly
* modified README.md accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Setting the correct work directory in FunctionExternalCommand</title>
<updated>2014-08-20T20:28:15+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-20T20:28:15+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=2c89112141530617b51af8c41211c2507ec8c738'/>
<id>2c89112141530617b51af8c41211c2507ec8c738</id>
<content type='text'>
* changed the XObjectValue constructor to accept a pointer to FilesystemContext instead of instantiating the context by itself
* the FilesystemContext is now instantiated in the "callConstructDocument" member method of "FunctionBase"
** a const reference to FilesystemContext is passed to all "constructDocument" member method implementations
* the FilesystemContext is currently only used by FunctionExternal command to set the correct work directory in "boost::process::context"
** this is required so calling external commands from inside a stylesheet works as expected
*** i.e. from inside the directory the stylesheet is located in
* modified all remaining external function implementations accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* changed the XObjectValue constructor to accept a pointer to FilesystemContext instead of instantiating the context by itself
* the FilesystemContext is now instantiated in the "callConstructDocument" member method of "FunctionBase"
** a const reference to FilesystemContext is passed to all "constructDocument" member method implementations
* the FilesystemContext is currently only used by FunctionExternal command to set the correct work directory in "boost::process::context"
** this is required so calling external commands from inside a stylesheet works as expected
*** i.e. from inside the directory the stylesheet is located in
* modified all remaining external function implementations accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Fixed minimum parameter count calculation</title>
<updated>2014-08-17T11:32:22+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-17T11:32:22+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=8ed33c3e9e2648a5a0150c05e06c228336e9e9d6'/>
<id>8ed33c3e9e2648a5a0150c05e06c228336e9e9d6</id>
<content type='text'>
* the minimum count of parameters to a external function is the maximum parameter count minus all optional parameters
* updated error message of "FunctionBase" member method "getError" to reflect the newly implemented possibility of optional parameters
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* the minimum count of parameters to a external function is the maximum parameter count minus all optional parameters
* updated error message of "FunctionBase" member method "getError" to reflect the newly implemented possibility of optional parameters
</pre>
</div>
</content>
</entry>
<entry>
<title>Implemented primitive optional parameter support for external functions</title>
<updated>2014-08-16T21:30:36+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-08-16T21:30:36+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=f6ff54c492df81018cf48da039ee681508f88e46'/>
<id>f6ff54c492df81018cf48da039ee681508f88e46</id>
<content type='text'>
* renamed FunctionExternalTextFormatter into FunctionExternalCommand
** the goal is to provide a general interface to a variety of external commands
*** e.g. not just text formatters but system utilities for file management and so on
** this requires the stdin parameter to be optional as not all external commands require stdin input
* implemented "filter_derived" helper template to determine amount of optional parameters
** optional parameters are defined as "boost::optional" specializations
*** they in turn can be detected by checking if "boost::optional_detail::optional_tag" is a base class
* "callConstructDocument" member method of "FunctionBase" performs additional bounds checking of parameter vector
* "boost::optional&lt;std::string&gt;" specific member overload was added to "XObjectValue" helper class
** we will have to provide full specializations for all optional types as C++ prohibits partial member function template specialization
* renamed the external function in "PlattformGuard"
* changed README.md and test cases accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* renamed FunctionExternalTextFormatter into FunctionExternalCommand
** the goal is to provide a general interface to a variety of external commands
*** e.g. not just text formatters but system utilities for file management and so on
** this requires the stdin parameter to be optional as not all external commands require stdin input
* implemented "filter_derived" helper template to determine amount of optional parameters
** optional parameters are defined as "boost::optional" specializations
*** they in turn can be detected by checking if "boost::optional_detail::optional_tag" is a base class
* "callConstructDocument" member method of "FunctionBase" performs additional bounds checking of parameter vector
* "boost::optional&lt;std::string&gt;" specific member overload was added to "XObjectValue" helper class
** we will have to provide full specializations for all optional types as C++ prohibits partial member function template specialization
* renamed the external function in "PlattformGuard"
* changed README.md and test cases accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Set SystemId for node based xalan::XSLTInputSource parameters</title>
<updated>2014-07-18T21:57:17+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-07-18T21:57:17+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=dfa53577fcf7345e67485e71ecc20ec82f9dd521'/>
<id>dfa53577fcf7345e67485e71ecc20ec82f9dd521</id>
<content type='text'>
* entities in transformations passed by DOM to FunctionGenerate or FunctionTransform require a valid system id as a FilesystemContext base to be resolved
* added getBase member method to FilesystemContext
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* entities in transformations passed by DOM to FunctionGenerate or FunctionTransform require a valid system id as a FilesystemContext base to be resolved
* added getBase member method to FilesystemContext
</pre>
</div>
</content>
</entry>
<entry>
<title>Switched FunctionWriteFile content parameter to xalan::XalanNode pointer</title>
<updated>2014-06-29T18:36:28+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-06-29T18:36:28+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=bd39d49464dbd17eb3d4cdbb5784431e43e56fbf'/>
<id>bd39d49464dbd17eb3d4cdbb5784431e43e56fbf</id>
<content type='text'>
* i.e. "write-file" now supports the serialization of given DOM structures
** this will be needed e.g. if FunctionTransform returns the result as a DOM tree instead of as a plain string
** enables the creation of multiple XML documents from within a single transformation
*** i.e. backports the functionality provided in XSLT 2.0 by "xsl:result-document" to xalan's XSLT 1.0
* changed test cases accordingly
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* i.e. "write-file" now supports the serialization of given DOM structures
** this will be needed e.g. if FunctionTransform returns the result as a DOM tree instead of as a plain string
** enables the creation of multiple XML documents from within a single transformation
*** i.e. backports the functionality provided in XSLT 2.0 by "xsl:result-document" to xalan's XSLT 1.0
* changed test cases accordingly
</pre>
</div>
</content>
</entry>
<entry>
<title>Added support for resolving non-existing paths</title>
<updated>2014-06-25T18:23:35+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-06-25T18:23:35+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=7b872121000d4db4026d0c90fcb95a10f1e43694'/>
<id>7b872121000d4db4026d0c90fcb95a10f1e43694</id>
<content type='text'>
* 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
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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
</pre>
</div>
</content>
</entry>
<entry>
<title>Added context awareness to XObjectValue casting logic</title>
<updated>2014-06-17T19:28:04+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-06-17T19:28:04+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=0d670478b51c55e44f57995fe3ca8a4585723a6c'/>
<id>0d670478b51c55e44f57995fe3ca8a4585723a6c</id>
<content type='text'>
* added support for defining boost::filesystem::path as a external function parameter
** boost::filesystem::path parameters are resolved against the appropriate FilesystemContext and IncludeEntityResolver instances
* xalan::XSLTInputSource parameter source paths are also resolved
* removed need for passing a reference FilesystemContext to "constructDocument" methods
** they now only accept the parameters of the external function implemented by them
** all path resolution logic is wrapped by the newly created XObjectValue class
* converted XObjectValue namespace into class
** the "get" template method is now a template member method
** this was needed to enable value casting logic to access the appropriate FilesystemContext and IncludeEntityResolver instances
* this commit marks the next step towards the goals defined in 741a70f
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* added support for defining boost::filesystem::path as a external function parameter
** boost::filesystem::path parameters are resolved against the appropriate FilesystemContext and IncludeEntityResolver instances
* xalan::XSLTInputSource parameter source paths are also resolved
* removed need for passing a reference FilesystemContext to "constructDocument" methods
** they now only accept the parameters of the external function implemented by them
** all path resolution logic is wrapped by the newly created XObjectValue class
* converted XObjectValue namespace into class
** the "get" template method is now a template member method
** this was needed to enable value casting logic to access the appropriate FilesystemContext and IncludeEntityResolver instances
* this commit marks the next step towards the goals defined in 741a70f
</pre>
</div>
</content>
</entry>
<entry>
<title>Prepared TransformationFacade and FunctionTransform for parameter change</title>
<updated>2014-06-16T21:01:23+00:00</updated>
<author>
<name>Adrian Kummerlaender</name>
</author>
<published>2014-06-16T21:01:23+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=741a70f5fecc38033832728f4ecc62a6abe328b2'/>
<id>741a70f5fecc38033832728f4ecc62a6abe328b2</id>
<content type='text'>
* FunctionTransform was adapted to support passing the transformation as either a string path or directly as a node-set / result-tree
** this in turn required changes to the TransformationFacade
** the implementation of a xalan::XSLTInputSource specialization for the XObjectValue::get template method was also required
* changed ixslt executable to match TransformationFacade constructor changes
* these changes were implemented in preparation for a restructuring of how the separate external functions provided by InputXSLT operate and work together
** the approach up until now was to provide non-combinable external functions for distinct task such as "read a file" and "transform that transformation using these parameters into that file"
** if you think about the areas of operations of these functions are overlapping quite a bit
*** e.g. FunctionTransform reads files, transforms DOM structures and writes files instead of only transforming things
** the new approach will be to limit the feature set of each function in the attempt of making the clearer and increasing their combinability
*** e.g. FunctionTransform won't read or write files but expect both the input-DOM and the transformation-DOM as node-sets or result trees and return the transformed document as a node-set to be written using FunctionWriteFile (to be implemented)
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* FunctionTransform was adapted to support passing the transformation as either a string path or directly as a node-set / result-tree
** this in turn required changes to the TransformationFacade
** the implementation of a xalan::XSLTInputSource specialization for the XObjectValue::get template method was also required
* changed ixslt executable to match TransformationFacade constructor changes
* these changes were implemented in preparation for a restructuring of how the separate external functions provided by InputXSLT operate and work together
** the approach up until now was to provide non-combinable external functions for distinct task such as "read a file" and "transform that transformation using these parameters into that file"
** if you think about the areas of operations of these functions are overlapping quite a bit
*** e.g. FunctionTransform reads files, transforms DOM structures and writes files instead of only transforming things
** the new approach will be to limit the feature set of each function in the attempt of making the clearer and increasing their combinability
*** e.g. FunctionTransform won't read or write files but expect both the input-DOM and the transformation-DOM as node-sets or result trees and return the transformed document as a node-set to be written using FunctionWriteFile (to be implemented)
</pre>
</div>
</content>
</entry>
<entry>
<title>Provided previously missing Sequence template implementation</title>
<updated>2014-06-07T15:38:53+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-06-07T15:38:53+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=49e2010b489ab6d5516a9abd896c67738e0dc1cc'/>
<id>49e2010b489ab6d5516a9abd896c67738e0dc1cc</id>
<content type='text'>
* implemented for commit 5f6fc45 but not included into that commit
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* implemented for commit 5f6fc45 but not included into that commit
</pre>
</div>
</content>
</entry>
<entry>
<title>Improved FunctionBase constructDocument parameter propagation</title>
<updated>2014-06-07T15:24:44+00:00</updated>
<author>
<name>Adrian Kummerländer</name>
</author>
<published>2014-06-07T15:24:44+00:00</published>
<link rel='alternate' type='text/html' href='https://code.kummerlaender.eu/InputXSLT/commit/?id=5f6fc45749b99e9013f04c95a525f2d627db01bf'/>
<id>5f6fc45749b99e9013f04c95a525f2d627db01bf</id>
<content type='text'>
* replaced std::tuple constructing Mapper template methods with direct XObjectArgVectorType unpacking
** XObjectValue::get template method is applied directly using parameter pack unpacking
* implemented custom IndexSequence / Sequence type to provide vector indexes
* modified all external functions to provide matching constructDocument overloads
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* replaced std::tuple constructing Mapper template methods with direct XObjectArgVectorType unpacking
** XObjectValue::get template method is applied directly using parameter pack unpacking
* implemented custom IndexSequence / Sequence type to provide vector indexes
* modified all external functions to provide matching constructDocument overloads
</pre>
</div>
</content>
</entry>
</feed>
