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
ebc6891c3c
Initial thrushing implementation
...
f:thrushr
2014-12-10 15:31:35 -05:00
Mike Gerwitz
4c27b8d15d
Assurances that all other `f:*' functions properly handle adjacent data
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
2760834bfb
partial.xspec using `f:make-ref' instead of manual construction
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
f62e6a8e33
Arity test case using f:make-ref
...
In place of manual specification.
2014-11-28 02:27:07 -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
425f050b03
`f:apply' test case now using f:make-ref
...
That is, in place of manual construction. This is especially important for
the next commit, which requires an arity datum.
2014-11-27 01:11:29 -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
465ef7e8a5
Apply test case ensures arguments are passed by reference
...
Confidence in its application is also increased through a unique node.
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
0f2212e7d4
test/runner properly fails on xspec non-zero exit
2014-11-24 11:13:45 -05:00
Mike Gerwitz
8a204534f0
*.{out=>apply} for test case apply-gen output
2014-11-24 11:08:24 -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
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
e96bc07b39
test/runner will now fail on non-fatal test errors
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
061d4b7e09
test/runner now accepts list of tests, defaulting to all
2014-11-21 09:12:45 -05:00
Mike Gerwitz
db95ae12ff
test/runner now outputs file name before running
2014-11-21 00:20:25 -05:00
Mike Gerwitz
91c10bca41
test/runner index location correction
2014-11-21 00:20:24 -05:00
Mike Gerwitz
de627c9822
test/runner will now exit with non-zero status on any failure
2014-11-21 00:14:24 -05:00
Mike Gerwitz
81bec6714b
apply-gen application template generation added
2014-11-20 23:45:59 -05:00
Mike Gerwitz
4130b6cf4b
apply-gen now ignores nullary functions
2014-11-20 23:39:23 -05:00