Commit Graph

54 Commits (33d11cd03855287ffc51525fcb7979b505bc766b)

Author SHA1 Message Date
Mike Gerwitz bb246b9bf2
apply-gen stylesheet version copy if provided
* src/transform/apply-gen.xsl: Use input stylesheet version if provided,
  otherwise 2.0.

* test/transform/apply-gen.xpsec: Test added
2016-07-05 00:16:36 -04:00
Mike Gerwitz 1fc360bc1c
Copy all stylesheet namespaces during apply-gen
* src/transform/apply-gen.xsl: Copy /xsl:*/namespace::*
* test/transform/apply-gen.xspec: Add respective test
2016-07-05 00:04:44 -04:00
Mike Gerwitz d38c6b3a8f
Initial support for slot data (no accessors or mutators)
* src/record.xsl: added R:init-slots and friends

* test/record.xspec: add slot data tests
2016-03-29 23:00:56 -04:00
Mike Gerwitz a921741f09
Add R:is-record predicate
* src/record.xsl (R:is-record): added
* test/record.xspec: add tests for R:is-record
2016-03-29 23:00:16 -04:00
Mike Gerwitz 7196a2f0c6
Anonymous records added
* src/record.xsl (R:make-record-header#1): added
* test/record.xspec: R:make-record-header#1 scenario added
2016-03-29 23:00:16 -04:00
Mike Gerwitz ae98699094
Record slot naming
* src/record.xsl (n:name-slots, n:slot-names): added
* test/record.xspec: slot naming tests added
2016-03-29 23:00:16 -04:00
Mike Gerwitz ae589865e3
{www.lovullo.com=>mikegerwitz.com} namespaces 2016-03-29 23:00:16 -04:00
Mike Gerwitz 69ec4fac12
New node mutator n:add-attributes
* src/node.xsl (n:add-attributes): added
* test/node.xspec: n:add-attributes tests added
2016-03-29 23:00:16 -04:00
Mike Gerwitz 2967463cdb
node.xsl (n:attr#1): added 2016-03-29 23:00:16 -04:00
Mike Gerwitz 057cdbb683
Node attr pair removal for n:attr
node.xsl (n:attr): added
node.xsl: removed all attr-pairs
record.xsl: updated n:element calls
2016-03-29 23:00:15 -04:00
Mike Gerwitz e8e2dff3e6
Basic record suppport
* record.xsl: added
  This only support unnamed slots.

* record.xspec: added

Notice the documentation style: all sentences and clauses of compound
sentences are on their own lines, indented relative to their parent.  This
produces much better diffs when things change.
2016-03-29 23:00:11 -04:00
Mike Gerwitz 77ff279139 Primitive node constructors 2015-10-08 00:14:27 -04:00
Mike Gerwitz a8335444a8 Node sectioning for documentation 2014-12-19 14:51:02 -05:00
Mike Gerwitz 262f04db6d xsltexi-generated files included 2014-12-19 14:51:02 -05:00
Mike Gerwitz 6900181363 apply/ref documentation syntax corrections
These problems won't happen in the future; they were unchecked because
documentation wasn't being generated.
2014-12-19 14:51:02 -05:00
Mike Gerwitz f522a78ed1 License header @comment flag for xsltexi 2014-12-19 14:51:02 -05:00
Mike Gerwitz d3315bce91 Documentation syntax correction for partial.xsl docblock 2014-12-19 12:42:09 -05:00
Mike Gerwitz 5f3e9aad1c Comment to indicate that `f:thrushl' is not yet implemented
It will be; I just do not need it at this moment and want to get other
things moving.
2014-12-10 15:31:59 -05:00
Mike Gerwitz ebc6891c3c Initial thrushing implementation
f:thrushr
2014-12-10 15:31:35 -05:00
Mike Gerwitz 0b5ed975a0 `arity/ref.xsl' documentation updated to reflect data adjacency guarantees 2014-12-04 15:27:47 -05:00
Mike Gerwitz 658edd8717 `f:set-args' respects and echoes adjacent data by references
Was previously clobbered.
2014-12-04 15:27:47 -05:00
Mike Gerwitz e93283c608 `f:args' ignores adjacent data 2014-12-04 15:27:46 -05:00
Mike Gerwitz 09d2231fc0 `f:length' added
This is aggressively tested in every instance where it could be affected,
since any mishandling of this value would be incredibly dangerous (best
case, it would blow up and abort; worst case, data are interchanged between
refs).
2014-12-04 02:15:22 -05:00
Mike Gerwitz 31aa7fa111 `apply-gen' now ingores arity-overloaded functions
Rationale is provided in `apply-gen.xsl'.
2014-12-04 01:13:24 -05:00
Mike Gerwitz bb9107c8c1 `apply-gen' now generates functions for partial applications
This is intended as a convenient shorthand:

```xml
  <!-- these two are identical -->
  <sequence select="f:apply( my:func(), $x, $y )" />
  <sequence select="my:func( $x, $y )" />
```
2014-12-02 16:05:01 -05:00
Mike Gerwitz 189eb0cdd6 Partial applications now defined in terms of ref mutators 2014-12-01 09:48:45 -05:00
Mike Gerwitz c526fa2925 `f:{unshift,push}-args' added 2014-12-01 00:34:52 -05:00
Mike Gerwitz 18c1614777 `f:set-args' setter and `f:args' accessor implemented
As operations on dynamic function references become more complex, and since
evolution of the reference structure is planned to evolve, maintaining an
abstraction is vital for both grokking and maintenance.
2014-11-30 04:36:08 -05:00
Mike Gerwitz cd278c31d4 Partial applications now manipulate fnref arity
Previously, a separate `@partial' attribute was added to the ref and the
`@arity' maintained.  Unfortunately, this coupled `f:arity' with
`f:partial', which is unnecessary, considering that partial application is
supposed to conceptually yield a new function, which should be transparent
to `f:arity'.
2014-11-30 03:29:46 -05:00
Mike Gerwitz bc871435fa apply-gen now uses `f:make-ref'
We're essentailly macro-expanding the `f:make-ref' call.  :)
2014-11-30 03:28:43 -05:00
Mike Gerwitz 5857eed3d6 `arity.xsl' stylesheet combined with ref functions into `ref.xsl'
These are strongly related---they operate on the same abstraction.
2014-11-29 02:01:40 -05:00
Mike Gerwitz c64cefe931 `f:arity' now considers partial applications 2014-11-29 01:16:59 -05:00
Mike Gerwitz 162c037508 apply-gen TODOs added to header 2014-11-27 01:11:31 -05:00
Mike Gerwitz a351e94910 All `f:apply' functions support partial application
'Tis tasty!
2014-11-27 01:11:30 -05:00
Mike Gerwitz 63487afa67 `f:apply' currying support
Partial application support on all the other `f:apply' functions (other
arities) will be completed in the next commit.
2014-11-27 01:11:30 -05:00
Mike Gerwitz 33788871a9 f:make-ref, f:is-ref, and f:QName added 2014-11-27 01:11:29 -05:00
Mike Gerwitz b384e5fad1 Partial applications apply target function when all params are bound
I am aware of the Saxon 9 warning regarding multiple imports of arity.xsl;
I'm going to choose to ignore this, formally in the future.  Each of the
stylesheets is treated like a module.

Michael Kay, Saxon's author, discusses it here:

  http://stackoverflow.com/a/10102298
2014-11-27 01:11:28 -05:00
Mike Gerwitz 0dc019c9ed Error and hook for arity count in partial application 2014-11-27 01:11:27 -05:00
Mike Gerwitz 04373b5edd f:arity extracted into its own stylesheet
It depends on partial application logic, but does not belong in partial.xsl
2014-11-27 01:11:27 -05:00
Mike Gerwitz a02865d8b1 May now partially apply partial applications 2014-11-27 01:11:26 -05:00
Mike Gerwitz 8ba1f04147 Partial application initial development
No support yet for recursive partial applications; just a basic concept.
2014-11-27 01:11:14 -05:00
Mike Gerwitz 1c01e765a7 Delayed function nodes now wrapped in f:ref node
This primarily allows us to type check, but will also may it easy/performant
to query more complicated structures.
2014-11-24 11:07:25 -05:00
Mike Gerwitz eb66c838c6 f:arity added for delayed functions 2014-11-22 00:17:01 -05:00
Mike Gerwitz acdacef1d7 apply-gen application template priority for good measure
Depending on import/include order is a bad idea.
2014-11-22 00:05:11 -05:00
Mike Gerwitz 01217711c4 {xslink=>hoxsl} namespace corrections
Copy-paste exposed.
2014-11-22 00:05:11 -05:00
Mike Gerwitz 1cc2423662 apply-gen now properly handles multiple functions 2014-11-22 00:05:11 -05:00
Mike Gerwitz dd6c8a8040 Docblocks for fgen:create-{func,tpl} 2014-11-22 00:05:11 -05:00
Mike Gerwitz f50c2299fa f:apply implemented
Although the general concept was independently discovered, the finer details
of this implementation are motivated by the excellent, comprehensive work of
Dimitre Novatchev[0].

For those of us who either can't, or don't wish to, abaondon XSLT.

[0]: http://conferences.idealliance.org/extreme/html/2006/Novatchev01/EML2006Novatchev01.html
2014-11-22 00:05:08 -05:00
Mike Gerwitz 81bec6714b apply-gen application template generation added 2014-11-20 23:45:59 -05:00
Mike Gerwitz 28845f8b2e apply-gen ensures output of namespaces used by processed functions 2014-11-20 23:39:53 -05:00