Moved some directories around to make project more of a standad maven directory layout.
Intermediate commit. Started to work on running tests for JavaScript impl in browser environment. This commit includes a browser test harness coffeescript module, html runner context, and changes to doc2model to get tests working in Firefox. Not all tests pass yet, and tests run slowly.
Intermediate commit. Using XSLT to transform SCXML to JSON format. This will facilitate ahead-of-time conversion of SCXML, and thus provide the possibility to remove runtime dependency on XML DOM parser. First integrating this into the python implementation. Not all tests pass with this new approach yet.
Python implementation with xslt+json model parser now passes all tests. Next step is to do the same for the coffeescript implementation.
Moved top-level scripts into new directory bin. Updated them so that they still work.
Created new make task that will convert all scxml tests to json and put them in build/tests, while preserving directory structure. Uses xsltproc, and runs fast (about 5 seconds to convert all tests, on my netbook).
Removed some timing-sensitive tests.
Big update.
Implemented ahead-of-time, transformational optimization: transition flattening. Added flattenTransitions.xsl to implement this transformation.
Integrated flattening of test cases into build and test infrastructure.
This exposed a bug in the interpretation algorithm (e.g. for an example of this bug, see the transition-flattened version of parallel+interrupt/test19.scxml).
Fixed the bug in the interpreter in a slightly clever way, checking each state's selected transitions for consistency, before comparing all selected transitions for consistency.
Decided that convention over configuration would be better in the naming of test scripts, so updated all JSON test scripts to remove redundant information: test name, group, and location of associated SCXML file.
All tests, both flattened and non-flattened, with all optimizations pass under rhino and node.
Increased "after" time for events on delayedSend test.
Added license text.
Changed the build process so that SCXML is converted to JSON using a different toolchain. Now it is converted to JsonML using XSLT (or possibly DOM in the future), and then transformed using NodeJS.
Augmented the way scripts are evaluated. They are evaluated using javascript with keyword on the datamodel object. This will allow assignment to be performed synchronously (in the same small-step), and will not pollute the global namespace if variables are declared ahead of time using scxml <datamodel> tags.
Changed the license from LGPLv3 to Apache-2.0. This entailed deleting COPYING, COPYING.LESSER, adding LICENSE.txt, changing the 'license' property in package.json, and updating the license headers on all the files.
Updated scxml interpreter to use raise to send events in next small-step (add to inner queue), and send to send events after a timeout. Also made it possible to parameterize send, which will facilitate use of an external communications layer and allow inter-statechart communication.
Fixed bug in SCION where, if attribute initial and initial state are not specified, the first state should be taken as the default initial state. This is solved by generating a fake initial state in the JSON annotation phase. Added some tests for this as well.
Added support and tests for the following attributes and child nodes of <send>:
namelist
params
content
eventexpr
targetexpr
delayexpr
Changed semantics of <assign> tag to match JavaScript semantics, so that the datamodel is updated immediately, in the same small-step. Added tests for this. Previous semantics are still available using the setData()/getData() functions in a <script> tag.
Added tests for new <assign> semantics.
Added interpreter support and tests for targetless transitions (a.k.a. static reactions, described in statemate/rhapsody).
Added support for SCXML prefix events (e.g transition with trigger "foo" will match event names "foo", "foo.bar", "foo.bar.bat", but not "foobar"), and made it the default. Added test for this as well. Still need to add support for "*" event. Note that prefix matching is not supported in the transition selector optimizations.
Added support for scxml wildcard ("*") event. Not yet supported in optimizers.