Ah, one thing I forgot, a short overview of the prototype's directory
structure and files.

The root directory contains

   - the HTML files *index.html* and those that load the three application
   variants (*app-*.html*)
   - the linked (minimized) generated JavaScript application files *
   hello-world-all[.min].js*.
   - The *README.md* tells you how to re-generate these from the faked
   compiler output JS files (see below) after changes.

   - *src *contains the example ActionScript source files, neatly sorted by
   packages, for reference and for comparison with the faked compiler output
   JavaScript files.
   - *requirejs *contains original RequireJS 2.1.2 in a debug (*require.js*)
   and a minified (*require-min.js*) version.
   - *amd* contains all JavaScript files to be loaded/linked by RequireJS.
   It directly contains
   - the original RequireJS-plugin "shim" (*shim.js*, *shims.js*, *
      shim-LICENSE.txt*) that takes care of loading...
      - ...missing ECMAScript 5 functions if the browser does not support
      them (*Array.*.js*, *Function.prototype.js*, *Object.js*)
      - the main JavaScript file *hello-world.js* that loads/links the
      example classes and interfaces and executes some rather random
tests on the
      generated code


   - *as3*: folder containing implementations of ActionScript operators /
      functions missing in JavaScript
      - *as.js* -- the ActionScript "as" operator
         - *bind.js* -- a caching extension of Function#bind() for AS3
         method binding
         - *cast.js* -- a type cast operator for runtime type checks
         (currently unused)
         - *is.js* -- the ActionScript "is" operator (instanceof that also
         works for interfaces)
         - *trace-console.js* -- an ActionScript trace() simulation using
         console.log()
         - *trace.js* -- an ActionScript trace() simulation rendering to
         the DOM for demo purposes
         - *runtime*: folder that contains two small helper functions to
      ease specifying AS3 class structures in JavaScript
      - *defineClass.js* -- the central utility function that is used for
         defining an ActionScript class structure
         - *defineInterface.js* -- a little bit syntactic sugar to define
         ActionScript interfaces (almost not worth the effort, but for
symmetry...)
      - *classes*: folder containing the actual "generated" JavaScript
      code, i.e. the faked FalconJx compiler output. It uses the well-known
      pattern to define a sub-folder for every package "part".
      - *com/acme*: sub-sub-folder for the first example package,
         containing two classes and one interface
         - *A.js* -- a faked compilation result of the ActionScript class *
            src/com/acme/A.as*
            - *B.js* -- a faked compilation result of the ActionScript
            subclass *src/com/acme/B.as*
            - *I.js* -- a faked compilation result of the ActionScript
            interface *src/com/acme/I.as*, implemented by A

            - *sub*: sub-folder for the second example package, containing
            two more interfaces
            - *IOther.js* -- a faked compilation result of the ActionScript
               interface *src/com/acme/sub/IOther.as*, implemented by B
               - *ISub.js* -- a faked compilation result of the
               ActionScript interface *src/com/acme/sub/ISub.as*, also
               implemented by B

The folder *amd/runtime* actually contains a third file *
defineClass-initializing-static-fields.js*, which is not yet used; it is an
alternative to *defineClass.js* that even takes care of initializing
classes when accessing their public static fields, but only works in real
ES5-browsers (not IE < 9). You can safely ignore it for now.

That's it!

-Frank-

Reply via email to