From 4f57dd5702f855a678d7bb16e1945f00645ab11b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=BCrg=20Lehni?= Date: Sun, 12 Jun 2011 23:08:05 +0100 Subject: [PATCH] Remove embedded jsdoc-toolkit, so it can be added as submodule. --- build/jsdoc-toolkit/README.txt | 183 - build/jsdoc-toolkit/app/frame.js | 33 - build/jsdoc-toolkit/app/frame/Chain.js | 102 - build/jsdoc-toolkit/app/frame/Dumper.js | 144 - build/jsdoc-toolkit/app/frame/Hash.js | 84 - build/jsdoc-toolkit/app/frame/Link.js | 208 - build/jsdoc-toolkit/app/frame/Namespace.js | 10 - build/jsdoc-toolkit/app/frame/Opt.js | 134 - build/jsdoc-toolkit/app/frame/Reflection.js | 26 - build/jsdoc-toolkit/app/frame/String.js | 93 - build/jsdoc-toolkit/app/frame/Testrun.js | 129 - build/jsdoc-toolkit/app/handlers/FOODOC.js | 26 - build/jsdoc-toolkit/app/handlers/XMLDOC.js | 26 - .../app/handlers/XMLDOC/DomReader.js | 159 - .../app/handlers/XMLDOC/XMLDoc.js | 16 - .../app/handlers/XMLDOC/XMLParse.js | 292 - build/jsdoc-toolkit/app/lib/JSDOC.js | 106 - .../jsdoc-toolkit/app/lib/JSDOC/DocComment.js | 202 - build/jsdoc-toolkit/app/lib/JSDOC/DocTag.js | 293 - build/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js | 140 - build/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js | 109 - build/jsdoc-toolkit/app/lib/JSDOC/Lang.js | 144 - build/jsdoc-toolkit/app/lib/JSDOC/Parser.js | 140 - .../app/lib/JSDOC/PluginManager.js | 33 - build/jsdoc-toolkit/app/lib/JSDOC/Symbol.js | 644 -- .../jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js | 243 - .../jsdoc-toolkit/app/lib/JSDOC/TextStream.js | 41 - build/jsdoc-toolkit/app/lib/JSDOC/Token.js | 18 - .../app/lib/JSDOC/TokenReader.js | 332 - .../app/lib/JSDOC/TokenStream.js | 133 - build/jsdoc-toolkit/app/lib/JSDOC/Util.js | 32 - build/jsdoc-toolkit/app/lib/JSDOC/Walker.js | 507 -- build/jsdoc-toolkit/app/main.js | 111 - build/jsdoc-toolkit/app/plugins/bean.js | 23 - .../app/plugins/commentSrcJson.js | 20 - .../jsdoc-toolkit/app/plugins/constructors.js | 14 - .../app/plugins/frameworkPrototype.js | 16 - build/jsdoc-toolkit/app/plugins/grouptitle.js | 14 - build/jsdoc-toolkit/app/plugins/ignore.js | 10 - build/jsdoc-toolkit/app/plugins/operator.js | 11 - build/jsdoc-toolkit/app/plugins/readonly.js | 10 - build/jsdoc-toolkit/app/plugins/symbolLink.js | 10 - .../app/plugins/tagParamConfig.js | 31 - .../jsdoc-toolkit/app/plugins/tagSynonyms.js | 43 - build/jsdoc-toolkit/app/run.js | 348 - build/jsdoc-toolkit/app/t/TestDoc.js | 144 - build/jsdoc-toolkit/app/t/runner.js | 13 - build/jsdoc-toolkit/app/test.js | 342 - build/jsdoc-toolkit/app/test/addon.js | 24 - build/jsdoc-toolkit/app/test/anon_inner.js | 14 - build/jsdoc-toolkit/app/test/augments.js | 31 - build/jsdoc-toolkit/app/test/augments2.js | 26 - build/jsdoc-toolkit/app/test/borrows.js | 46 - build/jsdoc-toolkit/app/test/borrows2.js | 23 - build/jsdoc-toolkit/app/test/config.js | 22 - build/jsdoc-toolkit/app/test/constructs.js | 18 - build/jsdoc-toolkit/app/test/encoding.js | 10 - .../jsdoc-toolkit/app/test/encoding_other.js | 12 - build/jsdoc-toolkit/app/test/event.js | 54 - build/jsdoc-toolkit/app/test/exports.js | 14 - .../jsdoc-toolkit/app/test/functions_anon.js | 39 - .../app/test/functions_nested.js | 33 - build/jsdoc-toolkit/app/test/global.js | 13 - build/jsdoc-toolkit/app/test/globals.js | 25 - build/jsdoc-toolkit/app/test/ignore.js | 10 - build/jsdoc-toolkit/app/test/inner.js | 16 - build/jsdoc-toolkit/app/test/jsdoc_test.js | 477 -- build/jsdoc-toolkit/app/test/lend.js | 33 - build/jsdoc-toolkit/app/test/memberof.js | 19 - build/jsdoc-toolkit/app/test/memberof2.js | 38 - build/jsdoc-toolkit/app/test/memberof3.js | 33 - .../app/test/memberof_constructor.js | 17 - build/jsdoc-toolkit/app/test/module.js | 17 - build/jsdoc-toolkit/app/test/multi_methods.js | 25 - build/jsdoc-toolkit/app/test/name.js | 19 - .../app/test/namespace_nested.js | 23 - build/jsdoc-toolkit/app/test/nocode.js | 13 - build/jsdoc-toolkit/app/test/oblit_anon.js | 20 - build/jsdoc-toolkit/app/test/overview.js | 20 - build/jsdoc-toolkit/app/test/param_inline.js | 37 - .../jsdoc-toolkit/app/test/params_optional.js | 8 - build/jsdoc-toolkit/app/test/prototype.js | 17 - .../app/test/prototype_nested.js | 9 - .../jsdoc-toolkit/app/test/prototype_oblit.js | 13 - .../app/test/prototype_oblit_constructor.js | 24 - build/jsdoc-toolkit/app/test/public.js | 10 - build/jsdoc-toolkit/app/test/scripts/code.js | 5 - .../app/test/scripts/notcode.txt | 5 - build/jsdoc-toolkit/app/test/shared.js | 42 - build/jsdoc-toolkit/app/test/shared2.js | 2 - build/jsdoc-toolkit/app/test/shortcuts.js | 22 - build/jsdoc-toolkit/app/test/static_this.js | 13 - build/jsdoc-toolkit/app/test/synonyms.js | 31 - build/jsdoc-toolkit/app/test/tosource.js | 23 - .../app/test/variable_redefine.js | 14 - build/jsdoc-toolkit/changes.txt | 124 - build/jsdoc-toolkit/conf/docs.conf | 30 - build/jsdoc-toolkit/conf/templates.conf | 30 - build/jsdoc-toolkit/java/build.xml | 36 - build/jsdoc-toolkit/java/build_1.4.xml | 36 - build/jsdoc-toolkit/java/classes/js.jar | Bin 1069510 -> 0 bytes build/jsdoc-toolkit/java/src/JsDebugRun.java | 21 - build/jsdoc-toolkit/java/src/JsRun.java | 21 - build/jsdoc-toolkit/jsdebug.jar | Bin 1307 -> 0 bytes build/jsdoc-toolkit/jsrun.jar | Bin 1293 -> 0 bytes build/jsdoc-toolkit/jsrun.sh | 52 - .../templates/jsdoc/classLayout.js | 14 - .../jsdoc-toolkit/templates/jsdoc/publish.js | 99 - .../templates/jsdoc/src/Operator.js | 30 - .../templates/jsdoc/src/Render.js | 394 - .../templates/jsdoc/src/Symbol.js | 78 - .../templates/jsdoc/src/Utils.js | 61 - .../templates/jsdoc/static/index.html | 12 - .../static/resources/css/assets/bullet.gif | Bin 44 -> 0 bytes .../jsdoc/static/resources/css/codemirror.css | 110 - .../static/resources/css/paperscript.css | 53 - .../jsdoc/static/resources/css/reference.css | 133 - .../jsdoc/static/resources/css/style.css | 86 - .../jsdoc/static/resources/js/bootstrap.js | 4040 ---------- .../jsdoc/static/resources/js/codemirror.js | 1 - .../jsdoc/static/resources/js/paper.js | 6921 ----------------- .../jsdoc/static/resources/js/reference.js | 230 - .../templates/jsdoc/templates/class.tmpl | 70 - .../jsdoc/templates/constructor.tmpl | 24 - .../templates/jsdoc/templates/example.tmpl | 15 - .../templates/jsdoc/templates/examples.tmpl | 6 - .../templates/jsdoc/templates/html.tmpl | 17 - .../templates/jsdoc/templates/index.tmpl | 16 - .../templates/jsdoc/templates/method.tmpl | 26 - .../templates/jsdoc/templates/operator.tmpl | 17 - .../templates/jsdoc/templates/operators.tmpl | 10 - .../templates/jsdoc/templates/packages.tmpl | 1 - .../templates/jsdoc/templates/parameter.tmpl | 6 - .../templates/jsdoc/templates/parameters.tmpl | 7 - .../templates/jsdoc/templates/property.tmpl | 41 - .../templates/jsdoc/templates/return.tmpl | 3 - .../templates/jsdoc/templates/returns.tmpl | 7 - .../templates/jsdoc/templates/seeAlsos.tmpl | 5 - 138 files changed, 20284 deletions(-) delete mode 100644 build/jsdoc-toolkit/README.txt delete mode 100644 build/jsdoc-toolkit/app/frame.js delete mode 100644 build/jsdoc-toolkit/app/frame/Chain.js delete mode 100644 build/jsdoc-toolkit/app/frame/Dumper.js delete mode 100644 build/jsdoc-toolkit/app/frame/Hash.js delete mode 100644 build/jsdoc-toolkit/app/frame/Link.js delete mode 100644 build/jsdoc-toolkit/app/frame/Namespace.js delete mode 100644 build/jsdoc-toolkit/app/frame/Opt.js delete mode 100644 build/jsdoc-toolkit/app/frame/Reflection.js delete mode 100644 build/jsdoc-toolkit/app/frame/String.js delete mode 100644 build/jsdoc-toolkit/app/frame/Testrun.js delete mode 100644 build/jsdoc-toolkit/app/handlers/FOODOC.js delete mode 100755 build/jsdoc-toolkit/app/handlers/XMLDOC.js delete mode 100755 build/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js delete mode 100755 build/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js delete mode 100755 build/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/DocComment.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/DocTag.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/Lang.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/Parser.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/Symbol.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/TextStream.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/Token.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/Util.js delete mode 100644 build/jsdoc-toolkit/app/lib/JSDOC/Walker.js delete mode 100644 build/jsdoc-toolkit/app/main.js delete mode 100644 build/jsdoc-toolkit/app/plugins/bean.js delete mode 100644 build/jsdoc-toolkit/app/plugins/commentSrcJson.js delete mode 100644 build/jsdoc-toolkit/app/plugins/constructors.js delete mode 100644 build/jsdoc-toolkit/app/plugins/frameworkPrototype.js delete mode 100644 build/jsdoc-toolkit/app/plugins/grouptitle.js delete mode 100644 build/jsdoc-toolkit/app/plugins/ignore.js delete mode 100644 build/jsdoc-toolkit/app/plugins/operator.js delete mode 100644 build/jsdoc-toolkit/app/plugins/readonly.js delete mode 100644 build/jsdoc-toolkit/app/plugins/symbolLink.js delete mode 100644 build/jsdoc-toolkit/app/plugins/tagParamConfig.js delete mode 100644 build/jsdoc-toolkit/app/plugins/tagSynonyms.js delete mode 100644 build/jsdoc-toolkit/app/run.js delete mode 100644 build/jsdoc-toolkit/app/t/TestDoc.js delete mode 100644 build/jsdoc-toolkit/app/t/runner.js delete mode 100644 build/jsdoc-toolkit/app/test.js delete mode 100644 build/jsdoc-toolkit/app/test/addon.js delete mode 100644 build/jsdoc-toolkit/app/test/anon_inner.js delete mode 100644 build/jsdoc-toolkit/app/test/augments.js delete mode 100644 build/jsdoc-toolkit/app/test/augments2.js delete mode 100644 build/jsdoc-toolkit/app/test/borrows.js delete mode 100644 build/jsdoc-toolkit/app/test/borrows2.js delete mode 100644 build/jsdoc-toolkit/app/test/config.js delete mode 100644 build/jsdoc-toolkit/app/test/constructs.js delete mode 100644 build/jsdoc-toolkit/app/test/encoding.js delete mode 100644 build/jsdoc-toolkit/app/test/encoding_other.js delete mode 100644 build/jsdoc-toolkit/app/test/event.js delete mode 100644 build/jsdoc-toolkit/app/test/exports.js delete mode 100644 build/jsdoc-toolkit/app/test/functions_anon.js delete mode 100644 build/jsdoc-toolkit/app/test/functions_nested.js delete mode 100644 build/jsdoc-toolkit/app/test/global.js delete mode 100644 build/jsdoc-toolkit/app/test/globals.js delete mode 100644 build/jsdoc-toolkit/app/test/ignore.js delete mode 100644 build/jsdoc-toolkit/app/test/inner.js delete mode 100644 build/jsdoc-toolkit/app/test/jsdoc_test.js delete mode 100644 build/jsdoc-toolkit/app/test/lend.js delete mode 100644 build/jsdoc-toolkit/app/test/memberof.js delete mode 100644 build/jsdoc-toolkit/app/test/memberof2.js delete mode 100644 build/jsdoc-toolkit/app/test/memberof3.js delete mode 100644 build/jsdoc-toolkit/app/test/memberof_constructor.js delete mode 100644 build/jsdoc-toolkit/app/test/module.js delete mode 100644 build/jsdoc-toolkit/app/test/multi_methods.js delete mode 100644 build/jsdoc-toolkit/app/test/name.js delete mode 100644 build/jsdoc-toolkit/app/test/namespace_nested.js delete mode 100644 build/jsdoc-toolkit/app/test/nocode.js delete mode 100644 build/jsdoc-toolkit/app/test/oblit_anon.js delete mode 100644 build/jsdoc-toolkit/app/test/overview.js delete mode 100644 build/jsdoc-toolkit/app/test/param_inline.js delete mode 100644 build/jsdoc-toolkit/app/test/params_optional.js delete mode 100644 build/jsdoc-toolkit/app/test/prototype.js delete mode 100644 build/jsdoc-toolkit/app/test/prototype_nested.js delete mode 100644 build/jsdoc-toolkit/app/test/prototype_oblit.js delete mode 100644 build/jsdoc-toolkit/app/test/prototype_oblit_constructor.js delete mode 100644 build/jsdoc-toolkit/app/test/public.js delete mode 100644 build/jsdoc-toolkit/app/test/scripts/code.js delete mode 100644 build/jsdoc-toolkit/app/test/scripts/notcode.txt delete mode 100644 build/jsdoc-toolkit/app/test/shared.js delete mode 100644 build/jsdoc-toolkit/app/test/shared2.js delete mode 100644 build/jsdoc-toolkit/app/test/shortcuts.js delete mode 100644 build/jsdoc-toolkit/app/test/static_this.js delete mode 100644 build/jsdoc-toolkit/app/test/synonyms.js delete mode 100644 build/jsdoc-toolkit/app/test/tosource.js delete mode 100644 build/jsdoc-toolkit/app/test/variable_redefine.js delete mode 100644 build/jsdoc-toolkit/changes.txt delete mode 100644 build/jsdoc-toolkit/conf/docs.conf delete mode 100644 build/jsdoc-toolkit/conf/templates.conf delete mode 100644 build/jsdoc-toolkit/java/build.xml delete mode 100644 build/jsdoc-toolkit/java/build_1.4.xml delete mode 100755 build/jsdoc-toolkit/java/classes/js.jar delete mode 100755 build/jsdoc-toolkit/java/src/JsDebugRun.java delete mode 100644 build/jsdoc-toolkit/java/src/JsRun.java delete mode 100644 build/jsdoc-toolkit/jsdebug.jar delete mode 100644 build/jsdoc-toolkit/jsrun.jar delete mode 100644 build/jsdoc-toolkit/jsrun.sh delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/classLayout.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/publish.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/src/Operator.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/src/Render.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/src/Symbol.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/src/Utils.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/index.html delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/resources/css/assets/bullet.gif delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/resources/css/codemirror.css delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/resources/css/paperscript.css delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/resources/css/reference.css delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/resources/css/style.css delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/resources/js/bootstrap.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/resources/js/codemirror.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/resources/js/paper.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/static/resources/js/reference.js delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/class.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/constructor.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/example.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/examples.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/html.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/index.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/method.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/operator.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/operators.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/packages.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/parameter.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/parameters.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/property.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/return.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/returns.tmpl delete mode 100644 build/jsdoc-toolkit/templates/jsdoc/templates/seeAlsos.tmpl diff --git a/build/jsdoc-toolkit/README.txt b/build/jsdoc-toolkit/README.txt deleted file mode 100644 index 3782da88..00000000 --- a/build/jsdoc-toolkit/README.txt +++ /dev/null @@ -1,183 +0,0 @@ -====================================================================== - -DESCRIPTION: - -This is the source code for JsDoc Toolkit, an automatic documentation -generation tool for JavaScript. It is written in JavaScript and is run -from a command line (or terminal) using Java and Mozilla's Rhino -JavaScript runtime engine. - -Using this tool you can automatically turn JavaDoc-like comments in -your JavaScript source code into published output files, such as HTML -or XML. - -For more information, to report a bug, or to browse the technical -documentation for this tool please visit the official JsDoc Toolkit -project homepage at http://code.google.com/p/jsdoc-toolkit/ - -For the most up-to-date documentation on JsDoc Toolkit see the -official wiki at http://code.google.com/p/jsdoc-toolkit/w/list - -====================================================================== - -REQUIREMENTS: - -JsDoc Toolkit is known to work with: -java version "1.6.0_03" -Java(TM) SE Runtime Environment (build 1.6.0_03-b05) -on Windows XP, -and java version "1.5.0_19" -Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_19-b02-304) -on Mac OS X 10.5. - -Other versions of java may or may not work with JsDoc Toolkit. - -====================================================================== - -USAGE: - -Running JsDoc Toolkit requires you to have Java installed on your -computer. For more information see http://www.java.com/getjava/ - -Before running the JsDoc Toolkit app you should change your current -working directory to the jsdoc-toolkit folder. Then follow the -examples below, or as shown on the project wiki. - -On a computer running Windows a valid command line to run JsDoc -Toolkit might look like this: - -> java -jar jsrun.jar app\run.js -a -t=templates\jsdoc mycode.js - -On Mac OS X or Linux the same command would look like this: - -$ java -jar jsrun.jar app/run.js -a -t=templates/jsdoc mycode.js - -The above assumes your current working directory contains jsrun.jar, -the "app" and "templates" subdirectories from the standard JsDoc -Toolkit distribution and that the relative path to the code you wish -to document is "mycode.js". - -The output documentation files will be saved to a new directory named -"out" (by default) in the current directory, or if you specify a --d=somewhere_else option, to the somewhere_else directory. - -For help (usage notes) enter this on the command line: - -$ java -jar jsrun.jar app/run.js --help - -More information about the various command line options used by JsDoc -Toolkit are available on the project wiki. - -====================================================================== - -RUNNING VIA SHELL SCRIPT - -Avi Deitcher has contributed the file jsrun.sh with the following usage notes: - -A script to simplify running jsdoc from the command-line, especially when -running from within a development or build environment such as ant. - -Normally, to run jsdoc, you need a command-line as the following: -java -Djsdoc.dir=/some/long/dir/path/to/jsdoc -jar -/some/long/dir/path/to/jsdoc/jsrun.jar /some/long/dir/path/to/jsdoc/app/run.js --t=template -r=4 /some/long/dir/path/to/my/src/code - -This can get tedious to redo time and again, and difficult to use from within a build environment. - -To simplify the process, jsrun.sh will automatically run this path, as well as passing through any arguments. - -Usage: jsrun.sh - -All will be passed through. -Additionally, jsrun.sh will take the following actions: -1) If the environment variable JSDOCDIR is set, it will add -"-Djsdoc.dir=$JSDOCDIR" to the command-line -2) If the environment variable JSDOCTEMPLATEDIR is set, it will add -"-Djsdoc.template.dir=$JSDOCTEMPLATEDIR" to the command-line -3) java with the appropriate path to jsrun.jar and run.js will be instantiated - -If not variables are set, it is assumed that the path to jsrun.jar and app/ is in the current working directory. - -Example: -# jsrun.sh ./src/ -Assuming JSDOCDIR=/some/path/to/my/jsdoc will cause the following command to -execute: -java -Djsdoc.dir=/some/path/to/my/jsdoc -jar /some/path/to/my/jsdoc/jsrun.jar -/some/path/to/my/jsdoc/app/run.js ./src/ - -====================================================================== - -TESTING: - -To run the suite of unit tests included with JsDoc Toolkit enter this -on the command line: - -$ java -jar jsrun.jar app/run.js -T - -To see a dump of the internal data structure that JsDoc Toolkit has -built from your source files use this command: - -$ java -jar jsrun.jar app/run.js mycode.js -Z - -====================================================================== - -LICENSE: - -JSDoc.pm - -This project is based on the JSDoc.pm tool, created by Michael -Mathews and Gabriel Reid. More information on JsDoc.pm can -be found on the JSDoc.pm homepage: http://jsdoc.sourceforge.net/ - -Complete documentation on JsDoc Toolkit can be found on the project -wiki at http://code.google.com/p/jsdoc-toolkit/w/list - -Rhino - -Rhino (JavaScript in Java) is open source and licensed by Mozilla -under the MPL 1.1 or later/GPL 2.0 or later licenses, the text of -which is available at http://www.mozilla.org/MPL/ - -You can obtain the source code for Rhino from the Mozilla web site at -http://www.mozilla.org/rhino/download.html - -JsDoc Toolkit is a larger work that uses the Rhino JavaScript engine -but is not derived from it in any way. The Rhino library is used -without modification and without any claims whatsoever. - -The Rhino Debugger - -You can obtain more information about the Rhino Debugger from the -Mozilla web site at http://www.mozilla.org/rhino/debugger.html - -JsDoc Toolkit is a larger work that uses the Rhino Debugger but -is not derived from it in any way. The Rhino Debugger is used -without modification and without any claims whatsoever. - -JsDoc Toolkit - -All code specific to JsDoc Toolkit are free, open source and licensed -for use under the X11/MIT License. - -JsDoc Toolkit is Copyright (c)2009 Michael Mathews - -This program is free software; you can redistribute it and/or -modify it under the terms below. - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: The above copyright notice and this -permission notice must be included in all copies or substantial -portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/build/jsdoc-toolkit/app/frame.js b/build/jsdoc-toolkit/app/frame.js deleted file mode 100644 index 1beb4055..00000000 --- a/build/jsdoc-toolkit/app/frame.js +++ /dev/null @@ -1,33 +0,0 @@ -IO.include("frame/Opt.js"); -IO.include("frame/Chain.js"); -IO.include("frame/Link.js"); -IO.include("frame/String.js"); -IO.include("frame/Hash.js"); -IO.include("frame/Namespace.js"); -//IO.include("frame/Reflection.js"); - -/** A few helper functions to make life a little easier. */ - -function defined(o) { - return (o !== undefined); -} - -function copy(o) { // todo check for circular refs - if (o == null || typeof(o) != 'object') return o; - var c = new o.constructor(); - for(var p in o) c[p] = copy(o[p]); - return c; -} - -function isUnique(arr) { - var l = arr.length; - for(var i = 0; i < l; i++ ) { - if (arr.lastIndexOf(arr[i]) > i) return false; - } - return true; -} - -/** Returns the given string with all regex meta characters backslashed. */ -RegExp.escapeMeta = function(str) { - return str.replace(/([$^\\\/()|?+*\[\]{}.-])/g, "\\$1"); -} diff --git a/build/jsdoc-toolkit/app/frame/Chain.js b/build/jsdoc-toolkit/app/frame/Chain.js deleted file mode 100644 index 506469d1..00000000 --- a/build/jsdoc-toolkit/app/frame/Chain.js +++ /dev/null @@ -1,102 +0,0 @@ -/**@constructor*/ -function ChainNode(object, link) { - this.value = object; - this.link = link; // describes this node's relationship to the previous node -} - -/**@constructor*/ -function Chain(valueLinks) { - this.nodes = []; - this.cursor = -1; - - if (valueLinks && valueLinks.length > 0) { - this.push(valueLinks[0], "//"); - for (var i = 1, l = valueLinks.length; i < l; i+=2) { - this.push(valueLinks[i+1], valueLinks[i]); - } - } -} - -Chain.prototype.push = function(o, link) { - if (this.nodes.length > 0 && link) this.nodes.push(new ChainNode(o, link)); - else this.nodes.push(new ChainNode(o)); -} - -Chain.prototype.unshift = function(o, link) { - if (this.nodes.length > 0 && link) this.nodes[0].link = link; - this.nodes.unshift(new ChainNode(o)); - this.cursor++; -} - -Chain.prototype.get = function() { - if (this.cursor < 0 || this.cursor > this.nodes.length-1) return null; - return this.nodes[this.cursor]; -} - -Chain.prototype.first = function() { - this.cursor = 0; - return this.get(); -} - -Chain.prototype.last = function() { - this.cursor = this.nodes.length-1; - return this.get(); -} - -Chain.prototype.next = function() { - this.cursor++; - return this.get(); -} - -Chain.prototype.prev = function() { - this.cursor--; - return this.get(); -} - -Chain.prototype.toString = function() { - var string = ""; - for (var i = 0, l = this.nodes.length; i < l; i++) { - if (this.nodes[i].link) string += " -("+this.nodes[i].link+")-> "; - string += this.nodes[i].value.toString(); - } - return string; -} - -Chain.prototype.joinLeft = function() { - var result = ""; - for (var i = 0, l = this.cursor; i < l; i++) { - if (result && this.nodes[i].link) result += this.nodes[i].link; - result += this.nodes[i].value.toString(); - } - return result; -} - - -/* USAGE: - -var path = "one/two/three.four/five-six"; -var pathChain = new Chain(path.split(/([\/.-])/)); -print(pathChain); - -var lineage = new Chain(); -lineage.push("Port"); -lineage.push("Les", "son"); -lineage.push("Dawn", "daughter"); -lineage.unshift("Purdie", "son"); - -print(lineage); - -// walk left -for (var node = lineage.last(); node !== null; node = lineage.prev()) { - print("< "+node.value); -} - -// walk right -var node = lineage.first() -while (node !== null) { - print(node.value); - node = lineage.next(); - if (node && node.link) print("had a "+node.link+" named"); -} - -*/ \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/frame/Dumper.js b/build/jsdoc-toolkit/app/frame/Dumper.js deleted file mode 100644 index d8b007b1..00000000 --- a/build/jsdoc-toolkit/app/frame/Dumper.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * @class -
-This is a lightly modified version of Kevin Jones' JavaScript
-library Data.Dump. To download the original visit:
-    http://openjsan.org/doc/k/ke/kevinj/Data/Dump/
-
-AUTHORS
-
-The Data.Dump JavaScript module is written by Kevin Jones 
-(kevinj@cpan.org), based on Data::Dump by Gisle Aas (gisle@aas.no),
-based on Data::Dumper by Gurusamy Sarathy (gsar@umich.edu).
-
-COPYRIGHT
-
-Copyright 2007 Kevin Jones. Copyright 1998-2000,2003-2004 Gisle Aas.
-Copyright 1996-1998 Gurusamy Sarathy.
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the Perl Artistic License
-
-See http://www.perl.com/perl/misc/Artistic.html
-
- * @static - */ -Dumper = { - /** @param [...] The objects to dump. */ - dump: function () { - if (arguments.length > 1) - return this._dump(arguments); - else if (arguments.length == 1) - return this._dump(arguments[0]); - else - return "()"; - }, - - _dump: function (obj) { - if (typeof obj == 'undefined') return 'undefined'; - var out; - if (obj.serialize) { return obj.serialize(); } - var type = this._typeof(obj); - if (obj.circularReference) obj.circularReference++; - switch (type) { - case 'circular': - out = "{ //circularReference\n}"; - break; - case 'object': - var pairs = new Array; - - for (var prop in obj) { - if (prop != "circularReference" && obj.hasOwnProperty(prop)) { //hide inherited properties - pairs.push(prop + ': ' + this._dump(obj[prop])); - } - } - - out = '{' + this._format_list(pairs) + '}'; - break; - - case 'string': - for (var prop in Dumper.ESC) { - if (Dumper.ESC.hasOwnProperty(prop)) { - obj = obj.replace(prop, Dumper.ESC[prop]); - } - } - - // Escape UTF-8 Strings - if (obj.match(/^[\x00-\x7f]*$/)) { - out = '"' + obj.replace(/\"/g, "\\\"").replace(/([\n\r]+)/g, "\\$1") + '"'; - } - else { - out = "unescape('"+escape(obj)+"')"; - } - break; - - case 'array': - var elems = new Array; - - for (var i=0; i 60 ? '\n' : ' '; - return nl + list.join(',' + nl) + nl; - }, - - _typeof: function (obj) { - if (obj && obj.circularReference && obj.circularReference > 1) return 'circular'; - if (Array.prototype.isPrototypeOf(obj)) return 'array'; - if (Date.prototype.isPrototypeOf(obj)) return 'date'; - if (typeof obj.nodeType != 'undefined') return 'element'; - return typeof(obj); - }, - - _dump_dom: function (obj) { - return '"' + Dumper.nodeTypes[obj.nodeType] + '"'; - } -}; - -Dumper.ESC = { - "\t": "\\t", - "\n": "\\n", - "\f": "\\f" -}; - -Dumper.nodeTypes = { - 1: "ELEMENT_NODE", - 2: "ATTRIBUTE_NODE", - 3: "TEXT_NODE", - 4: "CDATA_SECTION_NODE", - 5: "ENTITY_REFERENCE_NODE", - 6: "ENTITY_NODE", - 7: "PROCESSING_INSTRUCTION_NODE", - 8: "COMMENT_NODE", - 9: "DOCUMENT_NODE", - 10: "DOCUMENT_TYPE_NODE", - 11: "DOCUMENT_FRAGMENT_NODE", - 12: "NOTATION_NODE" -}; \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/frame/Hash.js b/build/jsdoc-toolkit/app/frame/Hash.js deleted file mode 100644 index 62cfad64..00000000 --- a/build/jsdoc-toolkit/app/frame/Hash.js +++ /dev/null @@ -1,84 +0,0 @@ -/** - @constructor - @example - var _index = new Hash(); - _index.set("a", "apple"); - _index.set("b", "blue"); - _index.set("c", "coffee"); - - for (var p = _index.first(); p; p = _index.next()) { - print(p.key+" is for "+p.value); - } - - */ -var Hash = function() { - this._map = {}; - this._keys = []; - this._vals = []; - this.reset(); -} - -Hash.prototype.set = function(k, v) { - if (k != "") { - this._keys.push(k); - this._map["="+k] = this._vals.length; - this._vals.push(v); - } -} - -Hash.prototype.replace = function(k, k2, v) { - if (k == k2) return; - - var offset = this._map["="+k]; - this._keys[offset] = k2; - if (typeof v != "undefined") this._vals[offset] = v; - this._map["="+k2] = offset; - delete(this._map["="+k]); -} - -Hash.prototype.drop = function(k) { - if (k != "") { - var offset = this._map["="+k]; - this._keys.splice(offset, 1); - this._vals.splice(offset, 1); - delete(this._map["="+k]); - for (var p in this._map) { - if (this._map[p] >= offset) this._map[p]--; - } - if (this._cursor >= offset && this._cursor > 0) this._cursor--; - } -} - -Hash.prototype.get = function(k) { - if (k != "") { - return this._vals[this._map["="+k]]; - } -} - -Hash.prototype.keys = function() { - return this._keys; -} - -Hash.prototype.hasKey = function(k) { - if (k != "") { - return (typeof this._map["="+k] != "undefined"); - } -} - -Hash.prototype.values = function() { - return this._vals; -} - -Hash.prototype.reset = function() { - this._cursor = 0; -} - -Hash.prototype.first = function() { - this.reset(); - return this.next(); -} - -Hash.prototype.next = function() { - if (this._cursor++ < this._keys.length) - return {key: this._keys[this._cursor-1], value: this._vals[this._cursor-1]}; -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/frame/Link.js b/build/jsdoc-toolkit/app/frame/Link.js deleted file mode 100644 index a46d1d42..00000000 --- a/build/jsdoc-toolkit/app/frame/Link.js +++ /dev/null @@ -1,208 +0,0 @@ -/** Handle the creation of HTML links to documented symbols. - @constructor -*/ -function Link(asCode) { - this.alias = ""; - this.src = ""; - this.file = ""; - this.text = ""; - this.innerName = ""; - this.classLink = false; - this.targetName = ""; - this.asCode = asCode; - - this.target = function(targetName) { - if (defined(targetName)) this.targetName = targetName; - return this; - } - this.inner = function(inner) { - if (defined(inner)) this.innerName = inner; - return this; - } - this.withText = function(text) { - if (defined(text)) this.text = text; - return this; - } - this.toSrc = function(filename) { - if (defined(filename)) this.src = filename; - return this; - } - this.toSymbol = function(alias) { - // 'Class[]' to 'Array of Class objects' - if(/\[\]$/.test(alias)) { - alias = alias.replace(/\[\]$/, ''); - this.prefix = 'Array of '; - this.text = alias; - this.suffix = ' objects'; - } - if (defined(alias)) this.alias = new String(alias); - return this; - } - this.toClass = function(alias) { - this.classLink = true; - return this.toSymbol(alias); - } - this.toFile = function(file) { - if (defined(file)) this.file = file; - return this; - } - - this.toString = function() { - var linkString; - var thisLink = this; - - if (this.alias) { - linkString = this.alias.replace(/(^|[^a-z$0-9_#.:^-])([|a-z$0-9_#.:^-]+)(\([^)]+\))*($|[^a-z$0-9_#.:^-])/i, - function(match, prematch, symbolName, parameters, postmatch) { - var symbolNames = symbolName.split("|"); - var links = []; - for (var i = 0, l = symbolNames.length; i < l; i++) { - thisLink.alias = symbolNames[i]; - links.push(thisLink._makeSymbolLink(symbolNames[i], parameters)); - } - return prematch+links.join(" / ")+postmatch; - } - ); - } - else if (this.src) { - linkString = thisLink._makeSrcLink(this.src); - } - else if (this.file) { - linkString = thisLink._makeFileLink(this.file); - } - - return linkString; - } -} - -/** prefixed for hashes */ -Link.hashPrefix = ""; - -/** Appended to the front of relative link paths. */ -Link.base = ""; - -Link.symbolNameToLinkName = function(symbol) { - var linker = "", - ns = ""; - - if (symbol.isStatic) linker = "-"; - else if (symbol.isInner) linker = "-"; - - if (symbol.isEvent && !/^event:/.test(symbol.name)) { - ns = "event:"; - } - return Link.hashPrefix+linker+ns+symbol.name; -} - -Link.getSymbol= function(alias) { - var symbol= Link.symbolSet.getSymbol(alias); - - if (symbol) - return symbol; - - if ('#'!==alias.charAt(0) || !Link.currentSymbol) - return null; - - // resolve relative name - var container= Link.currentSymbol; - - while (container) - { - symbol= Link.symbolSet.getSymbol(container.alias + alias); - if (symbol) - return symbol; - - // No superclass - if (!container.augments.length) - return null; - - container= Link.symbolSet.getSymbol(container.augments[0].desc); - } - - return null; -} - -/** Create a link to another symbol. */ -Link.prototype._makeSymbolLink = function(alias, parameters) { - var linkBase = Link.base + publish.conf.symbolsDir; - var linkTo = Link.getSymbol(alias); - var linkPath; - var target = (this.targetName)? " target=\""+this.targetName+"\"" : ""; - // Expand (parameter,parameter) to (parameter, parameter) - if (parameters) { - parameters = parameters.replace(/\,([^\s])/, ', $1') - } - - var linkText = (this.text || (alias == '_global_' && publish.conf.globalName - || alias)) + (parameters || ''); - - // if there is no symbol by that name just return the name unaltered - if (!linkTo) { - return linkText; - } else { - // it's a symbol in another file - if (!linkTo.is("CONSTRUCTOR") && !linkTo.isNamespace) { // it's a method or property - linkPath= (Link.filemap) ? Link.filemap[linkTo.memberOf] : - escape(linkTo.memberOf) || "_global_"; - linkPath += publish.conf.ext + "#" + Link.symbolNameToLinkName(linkTo).toLowerCase(); - if (parameters) { - linkPath += '-' + parameters.replace(/[()]+/g, '').split(', ').join('-').toLowerCase(); - } - } else { - linkPath = (Link.filemap)? Link.filemap[linkTo.alias] : escape(linkTo.alias); - linkPath += publish.conf.ext;// + (this.classLink? "":"#" + Link.hashPrefix + "constructor"); - } - linkPath = linkBase + linkPath - } - - var link = { - linkPath: linkPath, - linkText: linkText.replace(/^#/, ''), - linkInner: (this.innerName? "#" + this.innerName : "") - }; - - if (typeof JSDOC.PluginManager != "undefined") { - JSDOC.PluginManager.run("onSymbolLink", link); - } - if (/^[A-Z].+\#/.test(link.linkText)) { - link.linkText = link.linkText.charAt(0).toLowerCase() + link.linkText.slice(1); - link.linkText = link.linkText.replace(/#/g, '.'); - } - var onClick = ''; - // If linking to a member of the same class, we also need to toggle it: - if (alias.charAt(0) == '#') { - var linkName = link.linkPath.replace(/^[^#]+#/, ''); - onClick = " onclick=\"return toggleMember('" + linkName + "', true);\""; - } - var text = link.linkText; - // TODO: tt is gone in HTML5. Instead we should give these links and code - // elements a special class so they can be styled through CSS. - if (this.asCode) - text = "" + text + ""; - var html = "" + text + ""; - if (this.prefix || this.suffix) - html = (this.prefix || '') + html + (this.suffix || ''); - return html; -} - -/** Create a link to a source file. */ -Link.prototype._makeSrcLink = function(srcFilePath) { - var target = (this.targetName)? " target=\""+this.targetName+"\"" : ""; - - // transform filepath into a filename - var srcFile = srcFilePath.replace(/\.\.?[\\\/]/g, "").replace(/[:\\\/]/g, "_"); - var outFilePath = Link.base + publish.conf.srcDir + srcFile + publish.conf.ext; - - if (!this.text) this.text = FilePath.fileName(srcFilePath); - return ""+this.text+""; -} - -/** Create a link to a source file. */ -Link.prototype._makeFileLink = function(filePath) { - var target = (this.targetName)? " target=\""+this.targetName+"\"" : ""; - - var outFilePath = Link.base + filePath; - - if (!this.text) this.text = filePath; - return ""+this.text+""; -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/frame/Namespace.js b/build/jsdoc-toolkit/app/frame/Namespace.js deleted file mode 100644 index fa1e41d1..00000000 --- a/build/jsdoc-toolkit/app/frame/Namespace.js +++ /dev/null @@ -1,10 +0,0 @@ -_global_ = this; - -function Namespace(name, f) { - var n = name.split("."); - for (var o = _global_, i = 0, l = n.length; i < l; i++) { - o = o[n[i]] = o[n[i]] || {}; - } - - if (f) f(); -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/frame/Opt.js b/build/jsdoc-toolkit/app/frame/Opt.js deleted file mode 100644 index 352f1590..00000000 --- a/build/jsdoc-toolkit/app/frame/Opt.js +++ /dev/null @@ -1,134 +0,0 @@ -/** @namespace */ -Opt = { - /** - * Get commandline option values. - * @param {Array} args Commandline arguments. Like ["-a=xml", "-b", "--class=new", "--debug"] - * @param {object} optNames Map short names to long names. Like {a:"accept", b:"backtrace", c:"class", d:"debug"}. - * @return {object} Short names and values. Like {a:"xml", b:true, c:"new", d:true} - */ - get: function(args, optNames) { - var opt = {"_": []}; // the unnamed option allows multiple values - for (var i = 0; i < args.length; i++) { - var arg = new String(args[i]); - var name; - var value; - if (arg.charAt(0) == "-") { - if (arg.charAt(1) == "-") { // it's a longname like --foo - arg = arg.substring(2); - var m = arg.split("="); - name = m.shift(); - value = m.shift(); - if (typeof value == "undefined") value = true; - - for (var n in optNames) { // convert it to a shortname - if (name == optNames[n]) { - name = n; - } - } - } - else { // it's a shortname like -f - arg = arg.substring(1); - var m = arg.split("="); - name = m.shift(); - value = m.shift(); - if (typeof value == "undefined") value = true; - - for (var n in optNames) { // find the matching key - if (name == n || name+'[]' == n) { - name = n; - break; - } - } - } - if (name.match(/(.+)\[\]$/)) { // it's an array type like n[] - name = RegExp.$1; - if (!opt[name]) opt[name] = []; - } - - if (opt[name] && opt[name].push) { - opt[name].push(value); - } - else { - opt[name] = value; - } - } - else { // not associated with any optname - opt._.push(args[i]); - } - } - return opt; - } -} - -/*t: - plan(11, "Testing Opt."); - - is( - typeof Opt, - "object", - "Opt is an object." - ); - - is( - typeof Opt.get, - "function", - "Opt.get is a function." - ); - - var optNames = {a:"accept", b:"backtrace", c:"class", d:"debug", "e[]":"exceptions"}; - var t_options = Opt.get(["-a=xml", "-b", "--class=new", "--debug", "-e=one", "-e=two", "foo", "bar"], optNames); - - is( - t_options.a, - "xml", - "an option defined with a short name can be accessed by its short name." - ); - - is( - t_options.b, - true, - "an option defined with a short name and no value are true." - ); - - is( - t_options.c, - "new", - "an option defined with a long name can be accessed by its short name." - ); - - is( - t_options.d, - true, - "an option defined with a long name and no value are true." - ); - - is( - typeof t_options.e, - "object", - "an option that can accept multiple values is defined." - ); - - is( - t_options.e.length, - 2, - "an option that can accept multiple values can have more than one value." - ); - - is( - t_options.e[1], - "two", - "an option that can accept multiple values can be accessed as an array." - ); - - is( - typeof t_options._, - "object", - "the property '_' is defined for unnamed options." - ); - - is( - t_options._[0], - "foo", - "the property '_' can be accessed as an array." - ); - */ \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/frame/Reflection.js b/build/jsdoc-toolkit/app/frame/Reflection.js deleted file mode 100644 index 0968f1c6..00000000 --- a/build/jsdoc-toolkit/app/frame/Reflection.js +++ /dev/null @@ -1,26 +0,0 @@ -/**@constructor*/ -function Reflection(obj) { - this.obj = obj; -} - -Reflection.prototype.getConstructorName = function() { - if (this.obj.constructor.name) return this.obj.constructor.name; - var src = this.obj.constructor.toSource(); - var name = src.substring(name.indexOf("function")+8, src.indexOf('(')).replace(/ /g,''); - return name; -} - -Reflection.prototype.getMethod = function(name) { - for (var p in this.obj) { - if (p == name && typeof(this.obj[p]) == "function") return this.obj[p]; - } - return null; -} - -Reflection.prototype.getParameterNames = function() { - var src = this.obj.toSource(); - src = src.substring( - src.indexOf("(", 8)+1, src.indexOf(")") - ); - return src.split(/, ?/); -} diff --git a/build/jsdoc-toolkit/app/frame/String.js b/build/jsdoc-toolkit/app/frame/String.js deleted file mode 100644 index c183c27d..00000000 --- a/build/jsdoc-toolkit/app/frame/String.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - @name String - @class Additions to the core string object. -*/ - -/** @author Steven Levithan, released as public domain. */ -String.prototype.trim = function() { - var str = this.replace(/^\s+/, ''); - for (var i = str.length - 1; i >= 0; i--) { - if (/\S/.test(str.charAt(i))) { - str = str.substring(0, i + 1); - break; - } - } - return str; -} -/*t: - plan(6, "Testing String.prototype.trim."); - - var s = " a bc ".trim(); - is(s, "a bc", "multiple spaces front and back are trimmed."); - - s = "a bc\n\n".trim(); - is(s, "a bc", "newlines only in back are trimmed."); - - s = "\ta bc".trim(); - is(s, "a bc", "tabs only in front are trimmed."); - - s = "\n \t".trim(); - is(s, "", "an all-space string is trimmed to empty."); - - s = "a b\nc".trim(); - is(s, "a b\nc", "a string with no spaces in front or back is trimmed to itself."); - - s = "".trim(); - is(s, "", "an empty string is trimmed to empty."); - -*/ - -String.prototype.balance = function(open, close) { - var i = 0; - while (this.charAt(i) != open) { - if (i == this.length) return [-1, -1]; - i++; - } - - var j = i+1; - var balance = 1; - while (j < this.length) { - if (this.charAt(j) == open) balance++; - if (this.charAt(j) == close) balance--; - if (balance == 0) break; - j++; - if (j == this.length) return [-1, -1]; - } - - return [i, j]; -} -/*t: - plan(16, "Testing String.prototype.balance."); - - var s = "{abc}".balance("{","}"); - is(s[0], 0, "opener in first is found."); - is(s[1], 4, "closer in last is found."); - - s = "ab{c}de".balance("{","}"); - is(s[0], 2, "opener in middle is found."); - is(s[1], 4, "closer in middle is found."); - - s = "a{b{c}de}f".balance("{","}"); - is(s[0], 1, "nested opener is found."); - is(s[1], 8, "nested closer is found."); - - s = "{}".balance("{","}"); - is(s[0], 0, "opener with no content is found."); - is(s[1], 1, "closer with no content is found."); - - s = "".balance("{","}"); - is(s[0], -1, "empty string opener is -1."); - is(s[1], -1, "empty string closer is -1."); - - s = "{abc".balance("{","}"); - is(s[0], -1, "opener with no closer returns -1."); - is(s[1], -1, "no closer returns -1."); - - s = "abc".balance("{","}"); - is(s[0], -1, "no opener or closer returns -1 for opener."); - is(s[1], -1, "no opener or closer returns -1 for closer."); - - s = "aX11/MIT License - * (See the accompanying README file for full details.) - */ - -/** - Yet another unit testing tool for JavaScript. - @author Michael Mathews micmath@gmail.com - @param {object} testCases Properties are testcase names, values are functions to execute as tests. -*/ -function testrun(testCases) { - var ran = 0; - for (t in testCases) { - var result = testCases[t](); - ran++; - } - - return testrun.reportOut+"-------------------------------\n"+((testrun.fails>0)? ":( Failed "+testrun.fails+"/" : ":) Passed all ")+testrun.count+" test"+((testrun.count == 1)? "":"s")+".\n"; -} - - -testrun.count = 0; -testrun.current = null; -testrun.passes = 0; -testrun.fails = 0; -testrun.reportOut = ""; - -/** @private */ -testrun.report = function(text) { - testrun.reportOut += text+"\n"; -} - -/** - Check if test evaluates to true. - @param {string} test To be evaluated. - @param {string} message Optional. To be displayed in the report. - @return {boolean} True if the string test evaluates to true. -*/ -ok = function(test, message) { - testrun.count++; - - var result; - try { - result = eval(test); - - if (result) { - testrun.passes++; - testrun.report(" OK "+testrun.count+" - "+((message != null)? message : "")); - } - else { - testrun.fails++; - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - } - } - catch(e) { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - - } -} - -/** - Check if test is same as expected. - @param {string} test To be evaluated. - @param {string} expected - @param {string} message Optional. To be displayed in the report. - @return {boolean} True if (test == expected). Note that the comparison is not a strict equality check. -*/ -is = function(test, expected, message) { - testrun.count++; - - var result; - try { - result = eval(test); - - if (result == expected) { - testrun.passes++ - testrun.report(" OK "+testrun.count+" - "+((message != null)? message : "")); - } - else { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - testrun.report("expected: "+expected); - testrun.report(" got: "+result); - } - } - catch(e) { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - testrun.report("expected: "+expected); - testrun.report(" got: "+result);} -} - -/** - Check if test matches pattern. - @param {string} test To be evaluated. - @param {string} pattern Used to create a RegExp. - @param {string} message Optional. To be displayed in the report. - @return {boolean} True if test matches pattern. -*/ -like = function(test, pattern, message) { - testrun.count++; - - var result; - try { - result = eval(test); - var rgx = new RegExp(pattern); - - if (rgx.test(result)) { - testrun.passes++ - testrun.report(" OK "+testrun.count+" - "+((message != null)? message : "")); - } - else { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - testrun.report(" this: "+result); - testrun.report("is not like: "+pattern); - } - } - catch(e) { - testrun.fails++ - testrun.report("NOT OK "+testrun.count+" - "+((message != null)? message : "")); - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/handlers/FOODOC.js b/build/jsdoc-toolkit/app/handlers/FOODOC.js deleted file mode 100644 index b208f55b..00000000 --- a/build/jsdoc-toolkit/app/handlers/FOODOC.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - This is the main container for the FOODOC handler. - @namespace -*/ -FOODOC = { -}; - -/** The current version string of this application. */ -FOODOC.VERSION = "1.0"; - -FOODOC.handle = function(srcFile, src) { - LOG.inform("Handling file '" + srcFile + "'"); - - return [ - new JSDOC.Symbol( - "foo", - [], - "VIRTUAL", - new JSDOC.DocComment("/** This is a foo. */") - ) - ]; -}; - -FOODOC.publish = function(symbolgroup) { - LOG.inform("Publishing symbolgroup."); -}; diff --git a/build/jsdoc-toolkit/app/handlers/XMLDOC.js b/build/jsdoc-toolkit/app/handlers/XMLDOC.js deleted file mode 100755 index 40f87b35..00000000 --- a/build/jsdoc-toolkit/app/handlers/XMLDOC.js +++ /dev/null @@ -1,26 +0,0 @@ -/** - * This is the main container for the XMLDOC handler. - * @namespace - * @author Brett Fattori (bfattori@fry.com) - * @version $Revision: 498 $ - */ -XMLDOC = { - -}; - -/** The current version string of this application. */ -XMLDOC.VERSION = "1.0"; - -/** Include the library necessary to handle XML files */ -IO.includeDir("handlers/XMLDOC/"); - -/** - * @type Symbol[] - */ -XMLDOC.handle = function(srcFile, src) { - -}; - -XMLDOC.publish = function(symbolgroup) { - -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js b/build/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js deleted file mode 100755 index 240563da..00000000 --- a/build/jsdoc-toolkit/app/handlers/XMLDOC/DomReader.js +++ /dev/null @@ -1,159 +0,0 @@ -LOG.inform("XMLDOC.DomReader loaded"); - -XMLDOC.DomReader = function(root) { - - this.dom = root; - - /** - * The current node the reader is on - */ - this.node = root; - - /** - * Get the current node the reader is on - * @type XMLDOC.Parser.node - */ - XMLDOC.DomReader.prototype.getNode = function() { - return this.node; - }; - - /** - * Set the node the reader should be positioned on. - * @param node {XMLDOC.Parser.node} - */ - XMLDOC.DomReader.prototype.setNode = function(node) { - this.node = node; - }; - - /** - * A helper method to make sure the current node will - * never return null, unless null is passed as the root. - * @param step {String} An expression to evaluate - should return a node or null - */ - XMLDOC.DomReader.prototype.navigate = function(step) { - var n; - if ((n = step) != null) - { - this.node = n; - return this.node; - } - return null; - }; - - /** - * Get the root node of the current node's document. - */ - XMLDOC.DomReader.prototype.root = function() { - this.navigate(this.dom); - }; - - /** - * Get the parent of the current node. - */ - XMLDOC.DomReader.prototype.parent = function() { - return this.navigate(this.node.parentNode()); - }; - - /** - * Get the first child of the current node. - */ - XMLDOC.DomReader.prototype.firstChild = function() { - return this.navigate(this.node.firstChild()); - }; - - /** - * Get the last child of the current node. - */ - XMLDOC.DomReader.prototype.lastChild = function() { - return this.navigate(this.node.lastChild()); - }; - - /** - * Get the next sibling of the current node. - */ - XMLDOC.DomReader.prototype.nextSibling = function() { - return this.navigate(this.node.nextSibling()); - }; - - /** - * Get the previous sibling of the current node. - */ - XMLDOC.DomReader.prototype.prevSibling = function() { - return this.navigate(this.node.prevSibling()); - }; - - //=============================================================================================== - // Support methods - - /** - * Walk the tree starting with the current node, calling the plug-in for - * each node visited. Each time the plug-in is called, the DomReader - * is passed as the only parameter. Use the {@link XMLDOC.DomReader#getNode} method - * to access the current node. This method uses a depth first traversal pattern. - * - * @param srcFile {String} The source file being evaluated - */ - XMLDOC.DomReader.prototype.getSymbols = function(srcFile) - { - XMLDOC.DomReader.symbols = []; - XMLDOC.DomReader.currentFile = srcFile; - JSDOC.Symbol.srcFile = (srcFile || ""); - - if (defined(JSDOC.PluginManager)) { - JSDOC.PluginManager.run("onDomGetSymbols", this); - } - - return XMLDOC.DomReader.symbols; - }; - - /** - * Find the node with the given name using a depth first traversal. - * Does not modify the DomReader's current node. - * - * @param name {String} The name of the node to find - * @return the node that was found, or null if not found - */ - XMLDOC.DomReader.prototype.findNode = function(name) - { - var findNode = null; - - // Start at the current node and move into the subtree, - // looking for the node with the given name - function deeper(node, find) - { - var look = null; - - if (node) { - if (node.name == find) - { - return node; - } - - if (node.firstChild()) - { - look = deeper(node.firstChild(), find); - } - - if (!look && node.nextSibling()) - { - look = deeper(node.nextSibling(), find); - } - } - - return look; - } - - return deeper(this.getNode().firstChild(), name); - }; - - /** - * Find the next node with the given name using a depth first traversal. - * - * @param name {String} The name of the node to find - */ - XMLDOC.DomReader.prototype.findPreviousNode = function(name) - { - }; - -}; - diff --git a/build/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js b/build/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js deleted file mode 100755 index e9b3e3ce..00000000 --- a/build/jsdoc-toolkit/app/handlers/XMLDOC/XMLDoc.js +++ /dev/null @@ -1,16 +0,0 @@ -LOG.inform("XMLDOC.symbolize loaded"); - -/** - * Convert the source file to a set of symbols - */ -XMLDOC.symbolize = function(srcFile, src) { - - LOG.inform("Symbolizing file '" + srcFile + "'"); - - // XML files already have a defined structure, so we don't need to - // do anything but parse them. The DOM reader can create a symbol - // table from the parsed XML. - var dr = new XMLDOC.DomReader(XMLDOC.Parser.parse(src)); - return dr.getSymbols(srcFile); - -}; diff --git a/build/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js b/build/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js deleted file mode 100755 index 78e8f455..00000000 --- a/build/jsdoc-toolkit/app/handlers/XMLDOC/XMLParse.js +++ /dev/null @@ -1,292 +0,0 @@ -LOG.inform("XMLDOC.Parser loaded"); - -/** - * XML Parser object. Returns an {@link #XMLDOC.Parser.node} which is - * the root element of the parsed document. - *

- * By default, this parser will only handle well formed XML. To - * allow the parser to handle HTML, set the XMLDOC.Parser.strictMode - * variable to false before calling XMLDOC.Parser.parse(). - *

- * Note: If you pass poorly formed XML, it will cause the parser to throw - * an exception. - * - * @author Brett Fattori (bfattori@fry.com) - * @author $Author: micmath $ - * @version $Revision: 497 $ - */ -XMLDOC.Parser = {}; - -/** - * Strict mode setting. Setting this to false allows HTML-style source to - * be parsed. Normally, well formed XML has defined end tags, or empty tags - * are properly formed. Default: true - * @type Boolean - */ -XMLDOC.Parser.strictMode = true; - -/** - * A node in an XML Document. Node types are ROOT, ELEMENT, COMMENT, PI, and TEXT. - * @param parent {XMLDOC.Parser.node} The parent node - * @param name {String} The node name - * @param type {String} One of the types - */ -XMLDOC.Parser.node = function(parent, name, type) -{ - this.name = name; - this.type = type || "ELEMENT"; - this.parent = parent; - this.charData = ""; - this.attrs = {}; - this.nodes = []; - this.cPtr = 0; - - XMLDOC.Parser.node.prototype.getAttributeNames = function() { - var a = []; - for (var o in this.attrs) - { - a.push(o); - } - - return a; - }; - - XMLDOC.Parser.node.prototype.getAttribute = function(attr) { - return this.attrs[attr]; - }; - - XMLDOC.Parser.node.prototype.setAttribute = function(attr, val) { - this.attrs[attr] = val; - }; - - XMLDOC.Parser.node.prototype.getChild = function(idx) { - return this.nodes[idx]; - }; - - XMLDOC.Parser.node.prototype.parentNode = function() { - return this.parent; - }; - - XMLDOC.Parser.node.prototype.firstChild = function() { - return this.nodes[0]; - }; - - XMLDOC.Parser.node.prototype.lastChild = function() { - return this.nodes[this.nodes.length - 1]; - }; - - XMLDOC.Parser.node.prototype.nextSibling = function() { - var p = this.parent; - if (p && (p.nodes.indexOf(this) + 1 != p.nodes.length)) - { - return p.getChild(p.nodes.indexOf(this) + 1); - } - return null; - }; - - XMLDOC.Parser.node.prototype.prevSibling = function() { - var p = this.parent; - if (p && (p.nodes.indexOf(this) - 1 >= 0)) - { - return p.getChild(p.nodes.indexOf(this) - 1); - } - return null; - }; -}; - -/** - * Parse an XML Document from the specified source. The XML should be - * well formed, unless strict mode is disabled, then the parser will - * handle HTML-style XML documents. - * @param src {String} The source to parse - */ -XMLDOC.Parser.parse = function(src) -{ - var A = []; - - // Normailize whitespace - A = src.split("\r\n"); - src = A.join("\n"); - A = src.split("\r"); - src = A.join("\n"); - - // Remove XML and DOCTYPE specifier - src.replace(/<\?XML .*\?>/i, ""); - src.replace(//i, ""); - - // The document is the root node and cannot be modified or removed - var doc = new XMLDOC.Parser.node(null, "ROOT", "DOCUMENT"); - - // Let's break it down - XMLDOC.Parser.eat(doc, src); - - return doc; -}; - -/** - * The XML fragment processing routine. This method is private and should not be called - * directly. - * @param parentNode {XMLDOC.Parser.node} The node which is the parent of this fragment - * @param src {String} The source within the fragment to process - * @private - */ -XMLDOC.Parser.eat = function(parentNode, src) -{ - // A simple tag def - var reTag = new RegExp("<(!|)(\\?|--|)((.|\\s)*?)\\2>","g"); - - // Special tag types - var reCommentTag = //; - var rePITag = /<\?((.|\s)*?)\?>/; - - // A start tag (with potential empty marker) - var reStartTag = /<(.*?)( +([\w_\-]*)=(\"|')(.*)\4)*(\/)?>/; - - // An empty HTML style tag (not proper XML, but we'll accept it so we can process HTML) - var reHTMLEmptyTag = /<(.*?)( +([\w_\-]*)=(\"|')(.*)\4)*>/; - - // Fully enclosing tag with nested tags - var reEnclosingTag = /<(.*?)( +([\w_\-]*)=(\"|')(.*?)\4)*>((.|\s)*?)<\/\1>/; - - // Breaks down attributes - var reAttributes = new RegExp(" +([\\w_\\-]*)=(\"|')(.*?)\\2","g"); - - // Find us a tag - var tag; - while ((tag = reTag.exec(src)) != null) - { - if (tag.index > 0) - { - // The next tag has some text before it - var text = src.substring(0, tag.index).replace(/^[ \t\n]+((.|\n)*?)[ \t\n]+$/, "$1"); - - if (text.length > 0 && (text != "\n")) - { - var txtnode = new XMLDOC.Parser.node(parentNode, "", "TEXT"); - txtnode.charData = text; - - // Append the new text node - parentNode.nodes.push(txtnode); - } - - // Reset the lastIndex of reTag - reTag.lastIndex -= src.substring(0, tag.index).length; - - // Eat the text - src = src.substring(tag.index); - } - - if (reCommentTag.test(tag[0])) - { - // Is this a comment? - var comment = new XMLDOC.Parser.node(parentNode, "", "COMMENT"); - comment.charData = reCommentTag.exec(tag[0])[1]; - - // Append the comment - parentNode.nodes.push(comment); - - // Move the lastIndex of reTag - reTag.lastIndex -= tag[0].length; - - // Eat the tag - src = src.replace(reCommentTag, ""); - } - else if (rePITag.test(tag[0])) - { - // Is this a processing instruction? - var pi = new XMLDOC.Parser.node(parentNode, "", "PI"); - pi.charData = rePITag.exec(tag[0])[1]; - - // Append the processing instruction - parentNode.nodes.push(pi); - - // Move the lastIndex of reTag - reTag.lastIndex -= tag[0].length; - - // Eat the tag - src = src.replace(rePITag, ""); - } - else if (reStartTag.test(tag[0])) - { - // Break it down - var e = reStartTag.exec(tag[0]); - var elem = new XMLDOC.Parser.node(parentNode, e[1], "ELEMENT"); - - // Get attributes from the tag - var a; - while ((a = reAttributes.exec(e[2])) != null ) - { - elem.attrs[a[1]] = a[3]; - } - - // Is this an empty XML-style tag? - if (e[6] == "/") - { - // Append the empty element - parentNode.nodes.push(elem); - - // Move the lastIndex of reTag (include the start tag length) - reTag.lastIndex -= e[0].length; - - // Eat the tag - src = src.replace(reStartTag, ""); - } - else - { - // Check for malformed XML tags - var htmlParsed = false; - var htmlStartTag = reHTMLEmptyTag.exec(src); - - // See if there isn't an end tag within this block - var reHTMLEndTag = new RegExp(""); - var htmlEndTag = reHTMLEndTag.exec(src); - - if (XMLDOC.Parser.strictMode && htmlEndTag == null) - { - // Poorly formed XML fails in strict mode - var err = new Error("Malformed XML passed to XMLDOC.Parser... Error contains malformed 'src'"); - err.src = src; - throw err; - } - else if (htmlEndTag == null) - { - // This is an HTML-style empty tag, store the element for it in non-strict mode - parentNode.nodes.push(elem); - - // Eat the tag - src = src.replace(reHTMLEmptyTag, ""); - htmlParsed = true; - } - - // If we didn't parse HTML-style, it must be an enclosing tag - if (!htmlParsed) - { - var enc = reEnclosingTag.exec(src); - - // Go deeper into the document - XMLDOC.Parser.eat(elem, enc[6]); - - // Append the new element node - parentNode.nodes.push(elem); - - // Eat the tag - src = src.replace(reEnclosingTag, ""); - } - } - - // Reset the lastIndex of reTag - reTag.lastIndex = 0; - } - } - - // No tag was found... append the text if there is any - src = src.replace(/^[ \t\n]+((.|\n)*?)[ \t\n]+$/, "$1"); - if (src.length > 0 && (src != "\n")) - { - var txtNode = new XMLDOC.Parser.node(parentNode, "", "TEXT"); - txtNode.charData = src; - - // Append the new text node - parentNode.nodes.push(txtNode); - } -}; diff --git a/build/jsdoc-toolkit/app/lib/JSDOC.js b/build/jsdoc-toolkit/app/lib/JSDOC.js deleted file mode 100644 index 5de7b9ef..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC.js +++ /dev/null @@ -1,106 +0,0 @@ -/** - @overview - @date $Date: 2010-06-13 22:02:44 +0100 (Sun, 13 Jun 2010) $ - @version $Revision: 837 $ - @location $HeadURL: https://jsdoc-toolkit.googlecode.com/svn/tags/jsdoc_toolkit-2.4.0/jsdoc-toolkit/app/lib/JSDOC.js $ - @name JSDOC.js - */ - -/** - This is the main container for the JSDOC application. - @namespace -*/ -JSDOC = { -}; - -/** - @requires Opt - */ -if (typeof arguments == "undefined") arguments = []; -JSDOC.opt = Opt.get( - arguments, - { - a: "allfunctions", - c: "conf", - d: "directory", - "D[]": "define", - e: "encoding", - "E[]": "exclude", - h: "help", - m: "multiple", - n: "nocode", - o: "out", - p: "private", - q: "quiet", - r: "recurse", - S: "securemodules", - s: "suppress", - t: "template", - T: "testmode", - u: "unique", - v: "verbose", - x: "ext" - } -); - -/** The current version string of this application. */ -JSDOC.VERSION = "2.4.0"; - -/** Print out usage information and quit. */ -JSDOC.usage = function() { - print("USAGE: java -jar jsrun.jar app/run.js [OPTIONS] ..."); - print(""); - print("OPTIONS:"); - print(" -a or --allfunctions\n Include all functions, even undocumented ones.\n"); - print(" -c or --conf\n Load a configuration file.\n"); - print(" -d= or --directory=\n Output to this directory (defaults to \"out\").\n"); - print(" -D=\"myVar:My value\" or --define=\"myVar:My value\"\n Multiple. Define a variable, available in JsDoc as JSDOC.opt.D.myVar.\n"); - print(" -e= or --encoding=\n Use this encoding to read and write files.\n"); - print(" -E=\"REGEX\" or --exclude=\"REGEX\"\n Multiple. Exclude files based on the supplied regex.\n"); - print(" -h or --help\n Show this message and exit.\n"); - print(" -m or --multiples\n Don't warn about symbols being documented more than once.\n"); - print(" -n or --nocode\n Ignore all code, only document comments with @name tags.\n"); - print(" -o= or --out=\n Print log messages to a file (defaults to stdout).\n"); - print(" -p or --private\n Include symbols tagged as private, underscored and inner symbols.\n"); - print(" -q or --quiet\n Do not output any messages, not even warnings.\n"); - print(" -r= or --recurse=\n Descend into src directories.\n"); - print(" -s or --suppress\n Suppress source code output.\n"); - print(" -S or --securemodules\n Use Secure Modules mode to parse source code.\n"); - print(" -t= or --template=\n Required. Use this template to format the output.\n"); - print(" -T or --test\n Run all unit tests and exit.\n"); - print(" -u or --unique\n Force file names to be unique, but not based on symbol names.\n"); - print(" -v or --verbose\n Provide verbose feedback about what is happening.\n"); - print(" -x=[,EXT]... or --ext=[,EXT]...\n Scan source files with the given extension/s (defaults to js).\n"); - - quit(); -} - -/*t: - plan(4, "Testing JSDOC namespace."); - - is( - typeof JSDOC, - "object", - "JSDOC.usage is a function." - ); - - is( - typeof JSDOC.VERSION, - "string", - "JSDOC.VERSION is a string." - ); - - is( - typeof JSDOC.usage, - "function", - "JSDOC.usage is a function." - ); - - is( - typeof JSDOC.opt, - "object", - "JSDOC.opt is a object." - ); - */ - -if (this.IO) IO.includeDir("lib/JSDOC/"); diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/DocComment.js b/build/jsdoc-toolkit/app/lib/JSDOC/DocComment.js deleted file mode 100644 index 13322e47..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/DocComment.js +++ /dev/null @@ -1,202 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - Create a new DocComment. This takes a raw documentation comment, - and wraps it in useful accessors. - @class Represents a documentation comment object. - */ -JSDOC.DocComment = function(/**String*/comment) { - this.init(); - if (typeof comment != "undefined") { - this.parse(comment); - } -} - -JSDOC.DocComment.prototype.init = function() { - this.isUserComment = true; - this.src = ""; - this.meta = ""; - this.tagTexts = []; - this.tags = []; -} - -/** - @requires JSDOC.DocTag - */ -JSDOC.DocComment.prototype.parse = function(/**String*/comment) { - if (comment == "") { - comment = "/** @desc */"; - this.isUserComment = false; - } - - this.src = JSDOC.DocComment.unwrapComment(comment); - - this.meta = ""; - if (this.src.indexOf("#") == 0) { - this.src.match(/#(.+[+-])([\s\S]*)$/); - if (RegExp.$1) this.meta = RegExp.$1; - if (RegExp.$2) this.src = RegExp.$2; - } - if (typeof JSDOC.PluginManager != "undefined") { - JSDOC.PluginManager.run("onDocCommentSrc", this); - } - - this.fixDesc(); - - this.src = JSDOC.DocComment.shared+"\n"+this.src; - - this.tagTexts = - this.src - .split(/(^|[\r\n])\s*@/) - .filter(function($){return $.match(/\S/)}); - /** - The tags found in the comment. - @type JSDOC.DocTag[] - */ - this.tags = this.tagTexts.map(function($){return new JSDOC.DocTag($)}); - - if (typeof JSDOC.PluginManager != "undefined") { - JSDOC.PluginManager.run("onDocCommentTags", this); - } -} - -/*t: - plan(5, "testing JSDOC.DocComment"); - requires("../frame/String.js"); - requires("../lib/JSDOC/DocTag.js"); - - var com = new JSDOC.DocComment("/**@foo some\n* comment here*"+"/"); - is(com.tagTexts[0], "foo some\ncomment here", "first tag text is found."); - is(com.tags[0].title, "foo", "the title is found in a comment with one tag."); - - var com = new JSDOC.DocComment("/** @foo first\n* @bar second*"+"/"); - is(com.getTag("bar").length, 1, "getTag() returns one tag by that title."); - - JSDOC.DocComment.shared = "@author John Smith"; - var com = new JSDOC.DocComment("/**@foo some\n* comment here*"+"/"); - is(com.tags[0].title, "author", "shared comment is added."); - is(com.tags[1].title, "foo", "shared comment is added to existing tag."); -*/ - -/** - If no @desc tag is provided, this function will add it. - */ -JSDOC.DocComment.prototype.fixDesc = function() { - if (this.meta && this.meta != "@+") return; - if (/^\s*[^@\s]/.test(this.src)) { - this.src = "@desc "+this.src; - } -} - -/*t: - plan(5, "testing JSDOC.DocComment#fixDesc"); - - var com = new JSDOC.DocComment(); - - com.src = "this is a desc\n@author foo"; - com.fixDesc(); - is(com.src, "@desc this is a desc\n@author foo", "if no @desc tag is provided one is added."); - - com.src = "x"; - com.fixDesc(); - is(com.src, "@desc x", "if no @desc tag is provided one is added to a single character."); - - com.src = "\nx"; - com.fixDesc(); - is(com.src, "@desc \nx", "if no @desc tag is provided one is added to return and character."); - - com.src = " "; - com.fixDesc(); - is(com.src, " ", "if no @desc tag is provided one is not added to just whitespace."); - - com.src = ""; - com.fixDesc(); - is(com.src, "", "if no @desc tag is provided one is not added to empty."); -*/ - -/** - Remove slash-star comment wrapper from a raw comment string. - @type String - */ -JSDOC.DocComment.unwrapComment = function(/**String*/comment) { - if (!comment) return ""; - var unwrapped = comment.replace(/(^\/\*\*|\*\/$)/g, "").replace(/^\s*\* ?/gm, ""); - return unwrapped; -} - -/*t: - plan(5, "testing JSDOC.DocComment.unwrapComment"); - - var com = "/**x*"+"/"; - var unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "x", "a single character jsdoc is found."); - - com = "/***x*"+"/"; - unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "x", "three stars are allowed in the opener."); - - com = "/****x*"+"/"; - unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "*x", "fourth star in the opener is kept."); - - com = "/**x\n * y\n*"+"/"; - unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "x\ny\n", "leading stars and spaces are trimmed."); - - com = "/**x\n * y\n*"+"/"; - unwrapped = JSDOC.DocComment.unwrapComment(com); - is(unwrapped, "x\n y\n", "only first space after leading stars are trimmed."); -*/ - -/** - Provides a printable version of the comment. - @type String - */ -JSDOC.DocComment.prototype.toString = function() { - return this.src; -} - -/*t: - plan(1, "testing JSDOC.DocComment#fixDesc"); - var com = new JSDOC.DocComment(); - com.src = "foo"; - is(""+com, "foo", "stringifying a comment returns the unwrapped src."); -*/ - -/** - Given the title of a tag, returns all tags that have that title. - @type JSDOC.DocTag[] - */ -JSDOC.DocComment.prototype.getTag = function(/**String*/tagTitle) { - return this.tags.filter(function($){return $.title == tagTitle}); -} - -JSDOC.DocComment.prototype.deleteTag = function(/**String*/tagTitle) { - this.tags = this.tags.filter(function($){return $.title != tagTitle}) -} - -/*t: - plan(1, "testing JSDOC.DocComment#getTag"); - requires("../frame/String.js"); - requires("../lib/JSDOC/DocTag.js"); - - var com = new JSDOC.DocComment("/**@foo some\n* @bar\n* @bar*"+"/"); - is(com.getTag("bar").length, 2, "getTag returns expected number of tags."); -*/ - -/** - Used to store the currently shared tag text. -*/ -JSDOC.DocComment.shared = ""; - -/*t: - plan(2, "testing JSDOC.DocComment.shared"); - requires("../frame/String.js"); - requires("../lib/JSDOC/DocTag.js"); - - JSDOC.DocComment.shared = "@author Michael"; - - var com = new JSDOC.DocComment("/**@foo\n* @foo*"+"/"); - is(com.getTag("author").length, 1, "getTag returns shared tag."); - is(com.getTag("foo").length, 2, "getTag returns unshared tags too."); -*/ \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/DocTag.js b/build/jsdoc-toolkit/app/lib/JSDOC/DocTag.js deleted file mode 100644 index 5d5447d5..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/DocTag.js +++ /dev/null @@ -1,293 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @constructor - */ -JSDOC.DocTag = function(src) { - this.init(); - if (typeof src != "undefined") { - this.parse(src); - } -} - -/** - Create and initialize the properties of this. - */ -JSDOC.DocTag.prototype.init = function() { - this.title = ""; - this.type = ""; - this.name = ""; - this.isOptional = false; - this.defaultValue = ""; - this.desc = ""; - - return this; -} - -/** - Populate the properties of this from the given tag src. - @param {string} src - */ -JSDOC.DocTag.prototype.parse = function(src) { - if (typeof src != "string") throw "src must be a string not "+(typeof src); - - try { - src = this.nibbleTitle(src); - if (JSDOC.PluginManager) { - JSDOC.PluginManager.run("onDocTagSynonym", this); - } - src = this.nibbleType(src); - - // only some tags are allowed to have names. - if (this.title == "param" || this.title == "property" || this.title == "config") { // @config is deprecated - src = this.nibbleName(src); - } - } - catch(e) { - if (LOG) LOG.warn(e); - else throw e; - } - this.desc = src; // whatever is left - - // example tags need to have whitespace preserved - if (this.title != "example") this.desc = this.desc.trim(); - - if (JSDOC.PluginManager) { - JSDOC.PluginManager.run("onDocTag", this); - } -} - -/** - Automatically called when this is stringified. - */ -JSDOC.DocTag.prototype.toString = function() { - return this.desc; -} - -/*t: - plan(1, "testing JSDOC.DocTag#toString"); - - var tag = new JSDOC.DocTag("param {object} date A valid date."); - is(""+tag, "A valid date.", "stringifying a tag returns the desc."); - */ - -/** - Find and shift off the title of a tag. - @param {string} src - @return src - */ -JSDOC.DocTag.prototype.nibbleTitle = function(src) { - if (typeof src != "string") throw "src must be a string not "+(typeof src); - - var parts = src.match(/^\s*(\S+)(?:\s([\s\S]*))?$/); - - if (parts && parts[1]) this.title = parts[1]; - if (parts && parts[2]) src = parts[2]; - else src = ""; - - return src; -} - -/*t: - plan(8, "testing JSDOC.DocTag#nibbleTitle"); - - var tag = new JSDOC.DocTag(); - - tag.init().nibbleTitle("aTitleGoesHere"); - is(tag.title, "aTitleGoesHere", "a title can be found in a single-word string."); - - var src = tag.init().nibbleTitle("aTitleGoesHere and the rest"); - is(tag.title, "aTitleGoesHere", "a title can be found in a multi-word string."); - is(src, "and the rest", "the rest is returned when the title is nibbled off."); - - src = tag.init().nibbleTitle(""); - is(tag.title, "", "given an empty string the title is empty."); - is(src, "", "the rest is empty when the tag is empty."); - - var src = tag.init().nibbleTitle(" aTitleGoesHere\n a description"); - is(tag.title, "aTitleGoesHere", "leading and trailing spaces are not part of the title."); - is(src, " a description", "leading spaces (less one) are part of the description."); - - tag.init().nibbleTitle("a.Title::Goes_Here foo"); - is(tag.title, "a.Title::Goes_Here", "titles with punctuation are allowed."); - */ - -/** - Find and shift off the type of a tag. - @requires frame/String.js - @param {string} src - @return src - */ -JSDOC.DocTag.prototype.nibbleType = function(src) { - if (typeof src != "string") throw "src must be a string not "+(typeof src); - - if (src.match(/^\s*\{[^@]/)) { - var typeRange = src.balance("{", "}"); - if (typeRange[1] == -1) { - throw "Malformed comment tag ignored. Tag type requires an opening { and a closing }: "+src; - } - this.type = src.substring(typeRange[0]+1, typeRange[1]).trim(); - this.type = this.type.replace(/\s*,\s*/g, "|"); // multiples can be separated by , or | - src = src.substring(typeRange[1]+1); - } - - return src; -} - -/*t: - plan(5, "testing JSDOC.DocTag.parser.nibbleType"); - requires("../frame/String.js"); - - var tag = new JSDOC.DocTag(); - - tag.init().nibbleType("{String[]} aliases"); - is(tag.type, "String[]", "type can have non-alpha characters."); - - tag.init().nibbleType("{ aTypeGoesHere } etc etc"); - is(tag.type, "aTypeGoesHere", "type is trimmed."); - - tag.init().nibbleType("{ oneType, twoType ,\n threeType } etc etc"); - is(tag.type, "oneType|twoType|threeType", "multiple types can be separated by commas."); - - var error; - try { tag.init().nibbleType("{widget foo"); } - catch(e) { error = e; } - is(typeof error, "string", "malformed tag type throws error."); - isnt(error.indexOf("Malformed"), -1, "error message tells tag is malformed."); - */ - -/** - Find and shift off the name of a tag. - @requires frame/String.js - @param {string} src - @return src - */ -JSDOC.DocTag.prototype.nibbleName = function(src) { - if (typeof src != "string") throw "src must be a string not "+(typeof src); - - src = src.trim(); - - // is optional? - if (src.charAt(0) == "[") { - var nameRange = src.balance("[", "]"); - if (nameRange[1] == -1) { - throw "Malformed comment tag ignored. Tag optional name requires an opening [ and a closing ]: "+src; - } - this.name = src.substring(nameRange[0]+1, nameRange[1]).trim(); - this.isOptional = true; - - src = src.substring(nameRange[1]+1); - - // has default value? - var nameAndValue = this.name.split("="); - if (nameAndValue.length) { - this.name = nameAndValue.shift().trim(); - this.defaultValue = nameAndValue.join("="); - } - } - else { - var parts = src.match(/^(\S+)(?:\s([\s\S]*))?$/); - if (parts) { - if (parts[1]) this.name = parts[1]; - if (parts[2]) src = parts[2].trim(); - else src = ""; - } - } - - return src; -} - -/*t: - requires("../frame/String.js"); - plan(9, "testing JSDOC.DocTag.parser.nibbleName"); - - var tag = new JSDOC.DocTag(); - - tag.init().nibbleName("[foo] This is a description."); - is(tag.isOptional, true, "isOptional syntax is detected."); - is(tag.name, "foo", "optional param name is found."); - - tag.init().nibbleName("[foo] This is a description."); - is(tag.isOptional, true, "isOptional syntax is detected when no type."); - is(tag.name, "foo", "optional param name is found when no type."); - - tag.init().nibbleName("[foo=7] This is a description."); - is(tag.name, "foo", "optional param name is found when default value."); - is(tag.defaultValue, 7, "optional param default value is found when default value."); - - //tag.init().nibbleName("[foo= a value] This is a description."); - //is(tag.defaultValue, " a value", "optional param default value is found when default value has spaces (issue #112)."); - - tag.init().nibbleName("[foo=[]] This is a description."); - is(tag.defaultValue, "[]", "optional param default value is found when default value is [] (issue #95)."); - - tag.init().nibbleName("[foo=a=b] This is a description."); - is(tag.name, "foo", "optional param name is found when default value is a=b."); - is(tag.defaultValue, "a=b", "optional param default value is found when default value is a=b.") - */ - -/*t: - plan(32, "Testing JSDOC.DocTag.parser."); - requires("../frame/String.js"); - - var tag = new JSDOC.DocTag(); - - is(typeof tag, "object", "JSDOC.DocTag.parser with an empty string returns an object."); - is(typeof tag.title, "string", "returned object has a string property 'title'."); - is(typeof tag.type, "string", "returned object has a string property 'type'."); - is(typeof tag.name, "string", "returned object has a string property 'name'."); - is(typeof tag.defaultValue, "string", "returned object has a string property 'defaultValue'."); - is(typeof tag.isOptional, "boolean", "returned object has a boolean property 'isOptional'."); - is(typeof tag.desc, "string", "returned object has a string property 'desc'."); - - tag = new JSDOC.DocTag("param {widget} foo"); - is(tag.title, "param", "param title is found."); - is(tag.name, "foo", "param name is found when desc is missing."); - is(tag.desc, "", "param desc is empty when missing."); - - tag = new JSDOC.DocTag("param {object} date A valid date."); - is(tag.name, "date", "param name is found with a type."); - is(tag.type, "object", "param type is found."); - is(tag.desc, "A valid date.", "param desc is found with a type."); - - tag = new JSDOC.DocTag("param aName a description goes\n here."); - is(tag.name, "aName", "param name is found without a type."); - is(tag.desc, "a description goes\n here.", "param desc is found without a type."); - - tag = new JSDOC.DocTag("param {widget}"); - is(tag.name, "", "param name is empty when it is not given."); - - tag = new JSDOC.DocTag("param {widget} [foo] This is a description."); - is(tag.name, "foo", "optional param name is found."); - - tag = new JSDOC.DocTag("return {aType} This is a description."); - is(tag.type, "aType", "when return tag has no name, type is found."); - is(tag.desc, "This is a description.", "when return tag has no name, desc is found."); - - tag = new JSDOC.DocTag("author Joe Coder "); - is(tag.title, "author", "author tag has a title."); - is(tag.type, "", "the author tag has no type."); - is(tag.name, "", "the author tag has no name."); - is(tag.desc, "Joe Coder ", "author tag has desc."); - - tag = new JSDOC.DocTag("private \t\n "); - is(tag.title, "private", "private tag has a title."); - is(tag.type, "", "the private tag has no type."); - is(tag.name, "", "the private tag has no name."); - is(tag.desc, "", "private tag has no desc."); - - tag = new JSDOC.DocTag("example\n example(code);\n more();"); - is(tag.desc, " example(code);\n more();", "leading whitespace (less one) in examples code is preserved."); - - tag = new JSDOC.DocTag("param theName \n"); - is(tag.name, "theName", "name only is found."); - - tag = new JSDOC.DocTag("type theDesc \n"); - is(tag.desc, "theDesc", "desc only is found."); - - tag = new JSDOC.DocTag("type {theType} \n"); - is(tag.type, "theType", "type only is found."); - - tag = new JSDOC.DocTag(""); - is(tag.title, "", "title is empty when tag is empty."); - */ \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js b/build/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js deleted file mode 100644 index 02275a69..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/JsDoc.js +++ /dev/null @@ -1,140 +0,0 @@ -/** - @constructor - @param [opt] Used to override the commandline options. Useful for testing. - @version $Id: JsDoc.js 831 2010-03-09 14:24:56Z micmath $ -*/ -JSDOC.JsDoc = function(/**object*/ opt) { - if (opt) { - JSDOC.opt = opt; - } - - if (JSDOC.opt.h) { - JSDOC.usage(); - quit(); - } - - // defend against options that are not sane - if (JSDOC.opt._.length == 0) { - LOG.warn("No source files to work on. Nothing to do."); - quit(); - } - if (JSDOC.opt.t === true || JSDOC.opt.d === true) { - JSDOC.usage(); - } - - if (typeof JSDOC.opt.d == "string") { - if (!JSDOC.opt.d.charAt(JSDOC.opt.d.length-1).match(/[\\\/]/)) { - JSDOC.opt.d = JSDOC.opt.d+"/"; - } - LOG.inform("Output directory set to '"+JSDOC.opt.d+"'."); - IO.mkPath(JSDOC.opt.d); - } - if (JSDOC.opt.e) IO.setEncoding(JSDOC.opt.e); - - // the -r option: scan source directories recursively - if (typeof JSDOC.opt.r == "boolean") JSDOC.opt.r = 10; - else if (!isNaN(parseInt(JSDOC.opt.r))) JSDOC.opt.r = parseInt(JSDOC.opt.r); - else JSDOC.opt.r = 1; - - // the -D option: define user variables - var D = {}; - if (JSDOC.opt.D) { - for (var i = 0; i < JSDOC.opt.D.length; i++) { - var param = JSDOC.opt.D[i]; - // remove first and last character if both == " - if ( - param.length > 1 - && param.charAt(0) == '"' - && param.charAt(param.length-1) == '"' - ) { - param = param.substr(1, param.length-2); - } - var defineParts = param.split(":"); - if (defineParts && defineParts.length > 1) { - for ( var dpIdx = 2; dpIdx < defineParts.length; dpIdx++ ) { - defineParts[1] += ':' + defineParts[dpIdx]; - } - D[defineParts[0]] = defineParts[1]; - } - } - } - JSDOC.opt.D = D; - // combine any conf file D options with the commandline D options - if (defined(JSDOC.conf)) for (var c in JSDOC.conf.D) { - if (!defined(JSDOC.opt.D[c])) { - JSDOC.opt.D[c] = JSDOC.conf.D[c]; - } - } - - // Give plugins a chance to initialize - if (defined(JSDOC.PluginManager)) { - JSDOC.PluginManager.run("onInit", JSDOC.opt); - } - - JSDOC.opt.srcFiles = JSDOC.JsDoc._getSrcFiles(); - JSDOC.JsDoc._parseSrcFiles(); - JSDOC.JsDoc.symbolSet = JSDOC.Parser.symbols; -} - -/** - Retrieve source file list. - @returns {String[]} The pathnames of the files to be parsed. - */ -JSDOC.JsDoc._getSrcFiles = function() { - JSDOC.JsDoc.srcFiles = []; - - var ext = ["js"]; - if (JSDOC.opt.x) { - ext = JSDOC.opt.x.split(",").map(function($) {return $.toLowerCase()}); - } - - for (var i = 0; i < JSDOC.opt._.length; i++) { - JSDOC.JsDoc.srcFiles = JSDOC.JsDoc.srcFiles.concat( - IO.ls(JSDOC.opt._[i], JSDOC.opt.r).filter( - function($) { - var thisExt = $.split(".").pop().toLowerCase(); - - if (JSDOC.opt.E) { - for(var n = 0; n < JSDOC.opt.E.length; n++) { - if ($.match(new RegExp(JSDOC.opt.E[n]))) { - LOG.inform("Excluding " + $); - return false; // if the file matches the regex then it's excluded. - } - } - } - - return (ext.indexOf(thisExt) > -1); // we're only interested in files with certain extensions - } - ) - ); - } - - return JSDOC.JsDoc.srcFiles; -} - -JSDOC.JsDoc._parseSrcFiles = function() { - JSDOC.Parser.init(); - for (var i = 0, l = JSDOC.JsDoc.srcFiles.length; i < l; i++) { - var srcFile = JSDOC.JsDoc.srcFiles[i]; - - if (JSDOC.opt.v) LOG.inform("Parsing file: " + srcFile); - - try { - var src = IO.readFile(srcFile); - } - catch(e) { - LOG.warn("Can't read source file '"+srcFile+"': "+e.message); - } - - var tr = new JSDOC.TokenReader(); - var ts = new JSDOC.TokenStream(tr.tokenize(new JSDOC.TextStream(src))); - - JSDOC.Parser.parse(ts, srcFile); - - } - JSDOC.Parser.finish(); - - if (JSDOC.PluginManager) { - JSDOC.PluginManager.run("onFinishedParsing", JSDOC.Parser.symbols); - } -} diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js b/build/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js deleted file mode 100644 index bcaebc9c..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/JsPlate.js +++ /dev/null @@ -1,109 +0,0 @@ -/** - @constructor -*/ -JSDOC.JsPlate = function(templateFile) { - if (templateFile) this.template = IO.readFile(templateFile); - - this.templateFile = templateFile; - this.code = ""; - this.parse(); -} - -JSDOC.JsPlate.prototype.parse = function() { - this.template = this.template.replace(/\{#[\s\S]+?#\}/gi, ""); - this.code = "var output=\u001e"+this.template; - - this.code = this.code.replace( - //gi, - function (match, eachName, inName) { - return "\u001e;\rvar $"+eachName+"_keys = keys("+inName+");\rfor(var $"+eachName+"_i = 0; $"+eachName+"_i < $"+eachName+"_keys.length; $"+eachName+"_i++) {\rvar $"+eachName+"_last = ($"+eachName+"_i == $"+eachName+"_keys.length-1);\rvar $"+eachName+"_key = $"+eachName+"_keys[$"+eachName+"_i];\rvar "+eachName+" = "+inName+"[$"+eachName+"_key];\routput+=\u001e"; - } - ); - this.code = this.code.replace(//g, "\u001e;\rif ($1) { output+=\u001e"); - this.code = this.code.replace(//g, "\u001e;}\relse if ($1) { output+=\u001e"); - this.code = this.code.replace(//g, "\u001e;}\relse { output+=\u001e"); - this.code = this.code.replace(/<\/(if|for)>/g, "\u001e;\r};\routput+=\u001e"); - this.code = this.code.replace( - /\{\+\s*([\s\S]+?)\s*\+\}/gi, - function (match, code) { - code = code.replace(/"/g, "\u001e"); // prevent qoute-escaping of inline code - code = code.replace(/(\r?\n)/g, " "); - return "\u001e+ ("+code+") +\u001e"; - } - ); - this.code = this.code.replace( - /\{!\s*([\s\S]+?)\s*!\}/gi, - function (match, code) { - code = code.replace(/"/g, "\u001e"); // prevent qoute-escaping of inline code - code = code.replace(/(\n)/g, " "); - return "\u001e; "+code+";\routput+=\u001e"; - } - ); - this.code = this.code+"\u001e;"; - - this.code = this.code.replace(/(\r?\n)/g, "\\n"); - this.code = this.code.replace(/"/g, "\\\""); - this.code = this.code.replace(/\u001e/g, "\""); -} - -JSDOC.JsPlate.prototype.toCode = function() { - return this.code; -} - -JSDOC.JsPlate.keys = function(obj) { - var keys = []; - if (obj.constructor.toString().indexOf("Array") > -1) { - for (var i = 0; i < obj.length; i++) { - keys.push(i); - } - } - else { - for (var i in obj) { - keys.push(i); - } - } - return keys; -}; - -JSDOC.JsPlate.values = function(obj) { - var values = []; - if (obj.constructor.toString().indexOf("Array") > -1) { - for (var i = 0; i < obj.length; i++) { - values.push(obj[i]); - } - } - else { - for (var i in obj) { - values.push(obj[i]); - } - } - return values; -}; - -JSDOC.JsPlate.prototype.process = function(data, compact) { - var keys = JSDOC.JsPlate.keys; - var values = JSDOC.JsPlate.values; - - try { - eval(this.code); - } - catch (e) { - print(">> There was an error evaluating the compiled code from template: "+this.templateFile); - print(" The error was on line "+e.lineNumber+" "+e.name+": "+e.message); - var lines = this.code.split("\r"); - if (e.lineNumber-2 >= 0) print("line "+(e.lineNumber-1)+": "+lines[e.lineNumber-2]); - print("line "+e.lineNumber+": "+lines[e.lineNumber-1]); - print(""); - } - - if (compact) { // patch by mcbain.asm - // Remove lines that contain only space-characters, usually left by lines in the template - // which originally only contained JSPlate tags or code. This makes it easier to write - // non-tricky templates which still put out nice code (not bloated with extra lines). - // Lines purposely left blank (just a line ending) are left alone. - output = output.replace(/\s+?(\r?)\n/g, "$1\n"); - } - - /*debug*///print(this.code); - return output; -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/Lang.js b/build/jsdoc-toolkit/app/lib/JSDOC/Lang.js deleted file mode 100644 index 62919d7d..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/Lang.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - @namespace -*/ -JSDOC.Lang = { -} - -JSDOC.Lang.isBuiltin = function(name) { - return (JSDOC.Lang.isBuiltin.coreObjects.indexOf(name) > -1); -} -JSDOC.Lang.isBuiltin.coreObjects = ['_global_', 'Array', 'Boolean', 'Date', 'Error', 'Function', 'Math', 'Number', 'Object', 'RegExp', 'String']; - -JSDOC.Lang.whitespace = function(ch) { - return JSDOC.Lang.whitespace.names[ch]; -} -JSDOC.Lang.whitespace.names = { - " ": "SPACE", - "\f": "FORMFEED", - "\t": "TAB", - "\u0009": "UNICODE_TAB", - "\u000A": "UNICODE_NBR", - "\u0008": "VERTICAL_TAB" -}; - -JSDOC.Lang.newline = function(ch) { - return JSDOC.Lang.newline.names[ch]; -} -JSDOC.Lang.newline.names = { - "\n": "NEWLINE", - "\r": "RETURN", - "\u000A": "UNICODE_LF", - "\u000D": "UNICODE_CR", - "\u2029": "UNICODE_PS", - "\u2028": "UNICODE_LS" -}; - -JSDOC.Lang.keyword = function(word) { - return JSDOC.Lang.keyword.names["="+word]; -} -JSDOC.Lang.keyword.names = { - "=break": "BREAK", - "=case": "CASE", - "=catch": "CATCH", - "=const": "VAR", - "=continue": "CONTINUE", - "=default": "DEFAULT", - "=delete": "DELETE", - "=do": "DO", - "=else": "ELSE", - "=false": "FALSE", - "=finally": "FINALLY", - "=for": "FOR", - "=function": "FUNCTION", - "=if": "IF", - "=in": "IN", - "=instanceof": "INSTANCEOF", - "=new": "NEW", - "=null": "NULL", - "=return": "RETURN", - "=switch": "SWITCH", - "=this": "THIS", - "=throw": "THROW", - "=true": "TRUE", - "=try": "TRY", - "=typeof": "TYPEOF", - "=void": "VOID", - "=while": "WHILE", - "=with": "WITH", - "=var": "VAR" -}; - -JSDOC.Lang.punc = function(ch) { - return JSDOC.Lang.punc.names[ch]; -} -JSDOC.Lang.punc.names = { - ";": "SEMICOLON", - ",": "COMMA", - "?": "HOOK", - ":": "COLON", - "||": "OR", - "&&": "AND", - "|": "BITWISE_OR", - "^": "BITWISE_XOR", - "&": "BITWISE_AND", - "===": "STRICT_EQ", - "==": "EQ", - "=": "ASSIGN", - "!==": "STRICT_NE", - "!=": "NE", - "<<": "LSH", - "<=": "LE", - "<": "LT", - ">>>": "URSH", - ">>": "RSH", - ">=": "GE", - ">": "GT", - "++": "INCREMENT", - "--": "DECREMENT", - "+": "PLUS", - "-": "MINUS", - "*": "MUL", - "/": "DIV", - "%": "MOD", - "!": "NOT", - "~": "BITWISE_NOT", - ".": "DOT", - "[": "LEFT_BRACKET", - "]": "RIGHT_BRACKET", - "{": "LEFT_CURLY", - "}": "RIGHT_CURLY", - "(": "LEFT_PAREN", - ")": "RIGHT_PAREN" -}; - -JSDOC.Lang.matching = function(name) { - return JSDOC.Lang.matching.names[name]; -} -JSDOC.Lang.matching.names = { - "LEFT_PAREN": "RIGHT_PAREN", - "RIGHT_PAREN": "LEFT_PAREN", - "LEFT_CURLY": "RIGHT_CURLY", - "RIGHT_CURLY": "LEFT_CURLY", - "LEFT_BRACE": "RIGHT_BRACE", - "RIGHT_BRACE": "LEFT_BRACE" -} - -JSDOC.Lang.isNumber = function(str) { - return /^(\.[0-9]|[0-9]+\.|[0-9])[0-9]*([eE][+-][0-9]+)?$/i.test(str); -} - -JSDOC.Lang.isHexDec = function(str) { - return /^0x[0-9A-F]+$/i.test(str); -} - -JSDOC.Lang.isWordChar = function(str) { - return /^[a-zA-Z0-9$_.]+$/.test(str); -} - -JSDOC.Lang.isSpace = function(str) { - return (typeof JSDOC.Lang.whitespace(str) != "undefined"); -} - -JSDOC.Lang.isNewline = function(str) { - return (typeof JSDOC.Lang.newline(str) != "undefined"); -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/Parser.js b/build/jsdoc-toolkit/app/lib/JSDOC/Parser.js deleted file mode 100644 index 764ec883..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/Parser.js +++ /dev/null @@ -1,140 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @namespace - @requires JSDOC.Walker - @requires JSDOC.Symbol - @requires JSDOC.DocComment -*/ -JSDOC.Parser = { - conf: { - ignoreCode: JSDOC.opt.n, - ignoreAnonymous: true, // factory: true - treatUnderscoredAsPrivate: true, // factory: true - explain: false // factory: false - }, - - addSymbol: function(symbol) { - - if (JSDOC.Parser.rename) { - for (var n in JSDOC.Parser.rename) { - if (symbol.alias.indexOf(n) == 0) { - if (symbol.name == symbol.alias) { - symbol.name = symbol.name.replace(n, JSDOC.Parser.rename[n]); - } - symbol.alias = symbol.alias.replace(n, JSDOC.Parser.rename[n]); - } - } - } - - if (JSDOC.opt.S) { - if (typeof JSDOC.Parser.secureModules == "undefined") JSDOC.Parser.secureModules = {}; - if (/^exports\./.test(symbol.alias)) { - symbol.srcFile.match(/(^|[\\\/])([^\\\/]+)\.js/i); - var fileNS = RegExp.$2; - - // need to create the namespace associated with this file first - if (!JSDOC.Parser.secureModules[fileNS]) { - JSDOC.Parser.secureModules[fileNS] = 1; - var nsSymbol = new JSDOC.Symbol(fileNS, [], "GLOBAL", new JSDOC.DocComment("")); - nsSymbol.isNamespace = true; - nsSymbol.srcFile = ""; - nsSymbol.isPrivate = false; - nsSymbol.srcFile = symbol.srcFile; - nsSymbol.desc = (JSDOC.Parser.symbols.getSymbol(symbol.srcFile) || {desc: ""}).desc; - JSDOC.Parser.addSymbol(nsSymbol); - } - - symbol.alias = symbol.alias.replace(/^exports\./, fileNS + '.'); - symbol.name = symbol.name.replace(/^exports\./, ''); - symbol.memberOf = fileNS; - symbol.isStatic = true; - } - } - - // if a symbol alias is documented more than once, add ^n to its alias: - if (JSDOC.Parser.symbols.hasSymbol(symbol.alias)) { - var num = 0; - while (JSDOC.Parser.symbols.hasSymbol(symbol.alias + '^' + num)) { - num++; - } - symbol.alias = symbol.alias + '^' + num; - } - - // we don't document anonymous things - if (JSDOC.Parser.conf.ignoreAnonymous && symbol.name.match(/\$anonymous\b/)) return; - - // uderscored things may be treated as if they were marked private, this cascades - if (JSDOC.Parser.conf.treatUnderscoredAsPrivate && symbol.name.match(/[.#-]_[^.#-]+$/)) { - if (!symbol.comment.getTag("public").length > 0) symbol.isPrivate = true; - } - - // -p flag is required to document private things - if (!JSDOC.opt.p && symbol.isPrivate) return; // issue #161 fixed by mcbain.asm - - // ignored things are not documented, this doesn't cascade - if (symbol.isIgnored) return; - JSDOC.Parser.symbols.addSymbol(symbol); - }, - - addBuiltin: function(name) { - var builtin = new JSDOC.Symbol(name, [], "CONSTRUCTOR", new JSDOC.DocComment("")); - builtin.isNamespace = true; - builtin.srcFile = ""; - builtin.isPrivate = false; - JSDOC.Parser.addSymbol(builtin); - return builtin; - }, - - init: function() { - JSDOC.Parser.symbols = new JSDOC.SymbolSet(); - JSDOC.Parser.walker = new JSDOC.Walker(); - }, - - finish: function() { - JSDOC.Parser.symbols.relate(); - - // make a litle report about what was found - if (JSDOC.Parser.conf.explain) { - var symbols = JSDOC.Parser.symbols.toArray(); - var srcFile = ""; - for (var i = 0, l = symbols.length; i < l; i++) { - var symbol = symbols[i]; - if (srcFile != symbol.srcFile) { - srcFile = symbol.srcFile; - print("\n"+srcFile+"\n-------------------"); - } - print(i+":\n alias => "+symbol.alias + "\n name => "+symbol.name+ "\n isa => "+symbol.isa + "\n memberOf => " + symbol.memberOf + "\n isStatic => " + symbol.isStatic + ", isInner => " + symbol.isInner+ ", isPrivate => " + symbol.isPrivate); - } - print("-------------------\n"); - } - } -} - -JSDOC.Parser.parse = function(/**JSDOC.TokenStream*/ts, /**String*/srcFile) { - JSDOC.Symbol.srcFile = (srcFile || ""); - JSDOC.DocComment.shared = ""; // shared comments don't cross file boundaries - - if (!JSDOC.Parser.walker) JSDOC.Parser.init(); - JSDOC.Parser.walker.walk(ts); // adds to our symbols - - // filter symbols by option - for (var p = JSDOC.Parser.symbols._index.first(); p; p = JSDOC.Parser.symbols._index.next()) { - var symbol = p.value; - - if (!symbol) continue; - - if (symbol.is("FILE") || symbol.is("GLOBAL")) { - continue; - } - else if (!JSDOC.opt.a && !symbol.comment.isUserComment) { - JSDOC.Parser.symbols.deleteSymbol(symbol.alias); - } - - if (/#$/.test(symbol.alias)) { // we don't document prototypes - JSDOC.Parser.symbols.deleteSymbol(symbol.alias); - } - } - - return JSDOC.Parser.symbols.toArray(); -} diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js b/build/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js deleted file mode 100644 index 9c911931..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/PluginManager.js +++ /dev/null @@ -1,33 +0,0 @@ -/** - @namespace Holds functionality related to running plugins. -*/ -JSDOC.PluginManager = { -} - -/** - @param name A unique name that identifies that plugin. - @param handlers A collection of named functions. The names correspond to hooks in the core code. -*/ -JSDOC.PluginManager.registerPlugin = function(/**String*/name, /**Object*/handlers) { - if (!defined(JSDOC.PluginManager.plugins)) - /** The collection of all plugins. Requires a unique name for each. - */ - JSDOC.PluginManager.plugins = {}; - - - JSDOC.PluginManager.plugins[name] = handlers; -} - -/** - @param hook The name of the hook that is being caught. - @param target Any object. This will be passed as the only argument to the handler whose - name matches the hook name. Handlers cannot return a value, so must modify the target - object to have an effect. -*/ -JSDOC.PluginManager.run = function(/**String*/hook, /**Mixed*/target) { - for (var name in JSDOC.PluginManager.plugins) { - if (defined(JSDOC.PluginManager.plugins[name][hook])) { - JSDOC.PluginManager.plugins[name][hook](target); - } - } -} diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/Symbol.js b/build/jsdoc-toolkit/app/lib/JSDOC/Symbol.js deleted file mode 100644 index 1aa44da8..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/Symbol.js +++ /dev/null @@ -1,644 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - Create a new Symbol. - @class Represents a symbol in the source code. - */ -JSDOC.Symbol = function() { - this.init(); - if (arguments.length) this.populate.apply(this, arguments); -} - -JSDOC.Symbol.count = 0; - -JSDOC.Symbol.prototype.init = function() { - this._name = ""; - this._params = []; - this.$args = []; - this.addOn = ""; - this.alias = ""; - this.augments = []; - this.author = ""; - this.classDesc = ""; - this.comment = {}; - this.defaultValue = undefined; - this.deprecated = ""; - this.desc = ""; - this.example = []; - this.exceptions = []; - this.fires = []; - this.id = JSDOC.Symbol.count++; - this.inherits = []; - this.inheritsFrom = []; - this.isa = "OBJECT"; - this.isConstant = false; - this.isEvent = false; - this.isIgnored = false; - this.isInner = false; - this.isNamespace = false; - this.isPrivate = false; - this.isStatic = false; - this.memberOf = ""; - this.methods = []; - this.properties = []; - this.requires = []; - this.returns = []; - this.see = []; - this.since = ""; - this.srcFile = {}; - this.type = ""; - this.version = ""; -} - -JSDOC.Symbol.prototype.serialize = function() { - var keys = []; - for (var p in this) { - keys.push (p); - } - keys = keys.sort(); - - var out = ""; - for (var i in keys) { - if (typeof this[keys[i]] == "function") continue; - out += keys[i]+" => "+Dumper.dump(this[keys[i]])+",\n"; - } - return "\n{\n" + out + "}\n"; -} - -JSDOC.Symbol.prototype.clone = function() { - var clone = new JSDOC.Symbol(); - clone.populate.apply(clone, this.$args); // repopulate using the original arguments - clone.srcFile = this.srcFile; // not the current srcFile, the one when the original was made - return clone; -} - -JSDOC.Symbol.prototype.__defineSetter__("name", - function(n) { n = n.replace(/^_global_[.#-]/, ""); n = n.replace(/\.prototype\.?/g, '#'); this._name = n; } -); -JSDOC.Symbol.prototype.__defineGetter__("name", - function() { return this._name; } -); -JSDOC.Symbol.prototype.__defineSetter__("params", - function(v) { - for (var i = 0, l = v.length; i < l; i++) { - if (v[i].constructor != JSDOC.DocTag) { // may be a generic object parsed from signature, like {type:..., name:...} - this._params[i] = new JSDOC.DocTag("param"+((v[i].type)?" {"+v[i].type+"}":"")+" "+v[i].name); - } - else { - this._params[i] = v[i]; - } - } - } -); -JSDOC.Symbol.prototype.__defineGetter__("params", - function() { return this._params; } -); - -JSDOC.Symbol.prototype.getEvents = function() { - var events = []; - for (var i = 0, l = this.methods.length; i < l; i++) { - if (this.methods[i].isEvent) { - this.methods[i].name = this.methods[i].name.replace("event:", ""); - events.push(this.methods[i]); - } - } - return events; -} - -JSDOC.Symbol.prototype.getMethods = function() { - var nonEvents = []; - for (var i = 0, l = this.methods.length; i < l; i++) { - if (!this.methods[i].isEvent) { - nonEvents.push(this.methods[i]); - } - } - return nonEvents; -} - - -JSDOC.Symbol.prototype.populate = function( - /** String */ name, - /** Object[] */ params, - /** String */ isa, - /** JSDOC.DocComment */ comment -) { - this.$args = arguments; - - this.name = name; - this.alias = this.name; - - this.params = params; - this.isa = (isa == "VIRTUAL")? "OBJECT":isa; - this.comment = comment || new JSDOC.DocComment(""); - this.srcFile = JSDOC.Symbol.srcFile; - - if (this.is("FILE") && !this.alias) this.alias = this.srcFile; - - this.setTags(); - - if (typeof JSDOC.PluginManager != "undefined") { - JSDOC.PluginManager.run("onSymbol", this); - } -} - -JSDOC.Symbol.prototype.setTags = function() { - // @author - var authors = this.comment.getTag("author"); - if (authors.length) { - this.author = authors.map(function($){return $.desc;}).join(", "); - } - - /*t: - plan(34, "testing JSDOC.Symbol"); - - requires("../lib/JSDOC/DocComment.js"); - requires("../frame/String.js"); - requires("../lib/JSDOC/DocTag.js"); - - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@author Joe Smith*"+"/")); - is(sym.author, "Joe Smith", "@author tag, author is found."); - */ - - // @desc - var descs = this.comment.getTag("desc"); - if (descs.length) { - this.desc = descs.map(function($){return $.desc;}).join("\n"); // multiple descriptions are concatenated into one - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@desc This is a description.*"+"/")); - is(sym.desc, "This is a description.", "@desc tag, description is found."); - */ - - // @overview - if (this.is("FILE")) { - if (!this.alias) this.alias = this.srcFile; - - var overviews = this.comment.getTag("overview"); - if (overviews.length) { - this.desc = [this.desc].concat(overviews.map(function($){return $.desc;})).join("\n"); - } - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@overview This is an overview.*"+"/")); - is(sym.desc, "\nThis is an overview.", "@overview tag, description is found."); - */ - - // @since - var sinces = this.comment.getTag("since"); - if (sinces.length) { - this.since = sinces.map(function($){return $.desc;}).join(", "); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@since 1.01*"+"/")); - is(sym.since, "1.01", "@since tag, description is found."); - */ - - // @constant - if (this.comment.getTag("constant").length) { - this.isConstant = true; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@constant*"+"/")); - is(sym.isConstant, true, "@constant tag, isConstant set."); - */ - - // @version - var versions = this.comment.getTag("version"); - if (versions.length) { - this.version = versions.map(function($){return $.desc;}).join(", "); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@version 2.0x*"+"/")); - is(sym.version, "2.0x", "@version tag, version is found."); - */ - - // @deprecated - var deprecateds = this.comment.getTag("deprecated"); - if (deprecateds.length) { - this.deprecated = deprecateds.map(function($){return $.desc;}).join("\n"); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@deprecated Use other method.*"+"/")); - is(sym.deprecated, "Use other method.", "@deprecated tag, desc is found."); - */ - - // @example - var examples = this.comment.getTag("example"); - if (examples.length) { - this.example = examples.map( - // trim trailing whitespace - function($) { - $.desc = $.desc.replace(/\s+$/, ""); - return $; - } - ); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@example This\n is an example. \n*"+"/")); - isnt(typeof sym.example[0], "undefined", "@example tag, creates sym.example array."); - is(sym.example[0], "This\n is an example.", "@example tag, desc is found."); - */ - - // @see - var sees = this.comment.getTag("see"); - if (sees.length) { - var thisSee = this.see; - sees.map(function($){thisSee.push($.desc);}); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FILE", new JSDOC.DocComment("/**@see The other thing.*"+"/")); - is(sym.see, "The other thing.", "@see tag, desc is found."); - */ - - // @class - var classes = this.comment.getTag("class"); - if (classes.length) { - this.isa = "CONSTRUCTOR"; - this.classDesc = classes[0].desc; // desc can't apply to the constructor as there is none. - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@class This describes the class.*"+"/")); - is(sym.isa, "CONSTRUCTOR", "@class tag, makes symbol a constructor."); - is(sym.classDesc, "This describes the class.", "@class tag, class description is found."); - */ - - // @namespace - var namespaces = this.comment.getTag("namespace"); - if (namespaces.length) { - this.classDesc = namespaces[0].desc; - this.isNamespace = true; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@namespace This describes the namespace.*"+"/")); - is(sym.classDesc, "This describes the namespace.", "@namespace tag, class description is found."); - */ - - // @param - var params = this.comment.getTag("param"); - if (params.length) { - // user-defined params overwrite those with same name defined by the parser - var thisParams = this.params; - - if (thisParams.length == 0) { // none exist yet, so just bung all these user-defined params straight in - this.params = params; - } - else { // need to overlay these user-defined params on to existing parser-defined params - for (var i = 0, l = params.length; i < l; i++) { - if (thisParams[i]) { - if (params[i].type) thisParams[i].type = params[i].type; - thisParams[i].name = params[i].name; - thisParams[i].desc = params[i].desc; - thisParams[i].isOptional = params[i].isOptional; - thisParams[i].defaultValue = params[i].defaultValue; - } - else thisParams[i] = params[i]; - } - } - } - - /*t: - var sym = new JSDOC.Symbol("foo", [{type: "array", name: "pages"}], "FUNCTION", new JSDOC.DocComment("/**Description.*"+"/")); - is(sym.params.length, 1, "parser defined param is found."); - - sym = new JSDOC.Symbol("foo", [], "FUNCTION", new JSDOC.DocComment("/**Description.\n@param {array} pages*"+"/")); - is(sym.params.length, 1, "user defined param is found."); - is(sym.params[0].type, "array", "user defined param type is found."); - is(sym.params[0].name, "pages", "user defined param name is found."); - - sym = new JSDOC.Symbol("foo", [{type: "array", name: "pages"}], "FUNCTION", new JSDOC.DocComment("/**Description.\n@param {string} uid*"+"/")); - is(sym.params.length, 1, "user defined param overwrites parser defined param."); - is(sym.params[0].type, "string", "user defined param type overwrites parser defined param type."); - is(sym.params[0].name, "uid", "user defined param name overwrites parser defined param name."); - - sym = new JSDOC.Symbol("foo", [{type: "array", name: "pages"}, {type: "number", name: "count"}], "FUNCTION", new JSDOC.DocComment("/**Description.\n@param {string} uid*"+"/")); - is(sym.params.length, 2, "user defined params overlay parser defined params."); - is(sym.params[1].type, "number", "user defined param type overlays parser defined param type."); - is(sym.params[1].name, "count", "user defined param name overlays parser defined param name."); - - sym = new JSDOC.Symbol("foo", [], "FUNCTION", new JSDOC.DocComment("/**Description.\n@param {array} pages The pages description.*"+"/")); - is(sym.params.length, 1, "user defined param with description is found."); - is(sym.params[0].desc, "The pages description.", "user defined param description is found."); - */ - - // @constructor - if (this.comment.getTag("constructor").length) { - this.isa = "CONSTRUCTOR"; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@constructor*"+"/")); - is(sym.isa, "CONSTRUCTOR", "@constructor tag, makes symbol a constructor."); - */ - - // @static - if (this.comment.getTag("static").length) { - this.isStatic = true; - if (this.isa == "CONSTRUCTOR") { - this.isNamespace = true; - } - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@static\n@constructor*"+"/")); - is(sym.isStatic, true, "@static tag, makes isStatic true."); - is(sym.isNamespace, true, "@static and @constructor tag, makes isNamespace true."); - */ - - // @inner - if (this.comment.getTag("inner").length) { - this.isInner = true; - this.isStatic = false; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@inner*"+"/")); - is(sym.isStatic, false, "@inner tag, makes isStatic false."); - is(sym.isInner, true, "@inner makes isInner true."); - */ - - // @name - var names = this.comment.getTag("name"); - if (names.length) { - this.name = names[0].desc; - } - - /*t: - // todo - */ - - // @field - if (this.comment.getTag("field").length) { - this.isa = "OBJECT"; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "FUNCTION", new JSDOC.DocComment("/**@field*"+"/")); - is(sym.isa, "OBJECT", "@field tag, makes symbol an object."); - */ - - // @function - if (this.comment.getTag("function").length) { - this.isa = "FUNCTION"; - if (/event:/.test(this.alias)) this.isEvent = true; - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@function*"+"/")); - is(sym.isa, "FUNCTION", "@function tag, makes symbol a function."); - */ - - // @event - var events = this.comment.getTag("event"); - if (events.length) { - this.isa = "FUNCTION"; - this.isEvent = true; - if (!/event:/.test(this.alias)) - this.alias = this.alias.replace(/^(.*[.#-])([^.#-]+)$/, "$1event:$2"); - } - - /*t: - var sym = new JSDOC.Symbol("foo", [], "OBJECT", new JSDOC.DocComment("/**@event*"+"/")); - is(sym.isa, "FUNCTION", "@event tag, makes symbol a function."); - is(sym.isEvent, true, "@event makes isEvent true."); - */ - - // @fires - var fires = this.comment.getTag("fires"); - if (fires.length) { - for (var i = 0; i < fires.length; i++) { - this.fires.push(fires[i].desc); - } - } - - /*t: - // todo - */ - - // @property - var properties = this.comment.getTag("property"); - if (properties.length) { - thisProperties = this.properties; - for (var i = 0; i < properties.length; i++) { - var property = new JSDOC.Symbol(this.alias+"#"+properties[i].name, [], "OBJECT", new JSDOC.DocComment("/**"+properties[i].desc+"*/")); - // TODO: shouldn't the following happen in the addProperty method of Symbol? - if (properties[i].type) property.type = properties[i].type; - if (properties[i].defaultValue) property.defaultValue = properties[i].defaultValue; - this.addProperty(property); - if (!JSDOC.Parser.symbols.getSymbolByName(property.name)) - JSDOC.Parser.addSymbol(property); - } - } - - /*t: - // todo - */ - - // @return - var returns = this.comment.getTag("return"); - if (returns.length) { // there can be many return tags in a single doclet - this.returns = returns; - this.type = returns.map(function($){return $.type}).join(", "); - } - - /*t: - // todo - */ - - // @exception - this.exceptions = this.comment.getTag("throws"); - - /*t: - // todo - */ - - // @requires - var requires = this.comment.getTag("requires"); - if (requires.length) { - this.requires = requires.map(function($){return $.desc}); - } - - /*t: - // todo - */ - - // @type - var types = this.comment.getTag("type"); - if (types.length) { - this.type = types[0].desc; //multiple type tags are ignored - } - - /*t: - // todo - */ - - // @private - if (this.comment.getTag("private").length || this.isInner) { - this.isPrivate = true; - } - - // @ignore - if (this.comment.getTag("ignore").length) { - this.isIgnored = true; - } - - /*t: - // todo - */ - - // @inherits ... as ... - var inherits = this.comment.getTag("inherits"); - if (inherits.length) { - for (var i = 0; i < inherits.length; i++) { - if (/^\s*([a-z$0-9_.#:-]+)(?:\s+as\s+([a-z$0-9_.#:-]+))?/i.test(inherits[i].desc)) { - var inAlias = RegExp.$1; - var inAs = RegExp.$2 || inAlias; - - if (inAlias) inAlias = inAlias.replace(/\.prototype\.?/g, "#"); - - if (inAs) { - inAs = inAs.replace(/\.prototype\.?/g, "#"); - inAs = inAs.replace(/^this\.?/, "#"); - } - - if (inAs.indexOf(inAlias) != 0) { //not a full namepath - var joiner = "."; - if (this.alias.charAt(this.alias.length-1) == "#" || inAs.charAt(0) == "#") { - joiner = ""; - } - inAs = this.alias + joiner + inAs; - } - } - this.inherits.push({alias: inAlias, as: inAs}); - } - } - - /*t: - // todo - */ - - // @augments - this.augments = this.comment.getTag("augments"); - - // @default - var defaults = this.comment.getTag("default"); - if (defaults.length) { - if (this.is("OBJECT")) { - this.defaultValue = defaults[0].desc; - } - } - - /*t: - // todo - */ - - // @memberOf - var memberOfs = this.comment.getTag("memberOf"); - if (memberOfs.length) { - this.memberOf = memberOfs[0].desc; - this.memberOf = this.memberOf.replace(/\.prototype\.?/g, "#"); - } - - /*t: - // todo - */ - - // @public - if (this.comment.getTag("public").length) { - this.isPrivate = false; - } - - /*t: - // todo - */ - - if (JSDOC.PluginManager) { - JSDOC.PluginManager.run("onSetTags", this); - } -} - -JSDOC.Symbol.prototype.is = function(what) { - return this.isa === what; -} - -JSDOC.Symbol.prototype.isBuiltin = function() { - return JSDOC.Lang.isBuiltin(this.alias); -} - -JSDOC.Symbol.prototype.setType = function(/**String*/comment, /**Boolean*/overwrite) { - if (!overwrite && this.type) return; - var typeComment = JSDOC.DocComment.unwrapComment(comment); - this.type = typeComment; -} - -JSDOC.Symbol.prototype.inherit = function(symbol) { - if (!this.hasMember(symbol.name) && !symbol.isInner) { - if (symbol.is("FUNCTION")) - this.methods.push(symbol); - else if (symbol.is("OBJECT")) - this.properties.push(symbol); - } -} - -JSDOC.Symbol.prototype.hasMember = function(name) { - return (this.hasMethod(name) || this.hasProperty(name)); -} - -JSDOC.Symbol.prototype.addMember = function(symbol) { - if (symbol.is("FUNCTION")) { this.addMethod(symbol); } - else if (symbol.is("OBJECT")) { this.addProperty(symbol); } -} - -JSDOC.Symbol.prototype.hasMethod = function(name) { - var thisMethods = this.methods; - for (var i = 0, l = thisMethods.length; i < l; i++) { - if (thisMethods[i].name == name) return true; - if (thisMethods[i].alias == name) return true; - } - return false; -} - -JSDOC.Symbol.prototype.addMethod = function(symbol) { - var methodAlias = symbol.alias; - var thisMethods = this.methods; - for (var i = 0, l = thisMethods.length; i < l; i++) { - if (thisMethods[i].alias == methodAlias) { - thisMethods[i] = symbol; // overwriting previous method - return; - } - } - thisMethods.push(symbol); // new method with this alias -} - -JSDOC.Symbol.prototype.hasProperty = function(name) { - var thisProperties = this.properties; - for (var i = 0, l = thisProperties.length; i < l; i++) { - if (thisProperties[i].name == name) return true; - if (thisProperties[i].alias == name) return true; - } - return false; -} - -JSDOC.Symbol.prototype.addProperty = function(symbol) { - var propertyAlias = symbol.alias; - var thisProperties = this.properties; - for (var i = 0, l = thisProperties.length; i < l; i++) { - if (thisProperties[i].alias == propertyAlias) { - thisProperties[i] = symbol; // overwriting previous property - return; - } - } - - thisProperties.push(symbol); // new property with this alias -} - -JSDOC.Symbol.srcFile = ""; //running reference to the current file being parsed diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js b/build/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js deleted file mode 100644 index 8e3a2ebf..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/SymbolSet.js +++ /dev/null @@ -1,243 +0,0 @@ -/** @constructor */ -JSDOC.SymbolSet = function() { - this.init(); -} - -JSDOC.SymbolSet.prototype.init = function() { - this._index = new Hash(); -} - -JSDOC.SymbolSet.prototype.keys = function() { - return this._index.keys(); -} - -JSDOC.SymbolSet.prototype.hasSymbol = function(alias) { - return this._index.hasKey(alias); -} - -JSDOC.SymbolSet.prototype.addSymbol = function(symbol) { - if (JSDOC.opt.a && this.hasSymbol(symbol.alias)) { - LOG.warn("Overwriting symbol documentation for: " + symbol.alias + "."); - this.deleteSymbol(symbol.alias); - } - this._index.set(symbol.alias, symbol); -} - -JSDOC.SymbolSet.prototype.getSymbol = function(alias) { - if (this.hasSymbol(alias)) return this._index.get(alias); -} - -JSDOC.SymbolSet.prototype.getSymbolByName = function(name) { - for (var p = this._index.first(); p; p = this._index.next()) { - var symbol = p.value; - if (symbol.name == name) return symbol; - } -} - -JSDOC.SymbolSet.prototype.toArray = function() { - return this._index.values(); -} - -JSDOC.SymbolSet.prototype.deleteSymbol = function(alias) { - if (!this.hasSymbol(alias)) return; - this._index.drop(alias); -} - -JSDOC.SymbolSet.prototype.renameSymbol = function(oldName, newName) { - // todo: should check if oldname or newname already exist - this._index.replace(oldName, newName); - this._index.get(newName).alias = newName; - return newName; -} - -JSDOC.SymbolSet.prototype.relate = function() { - this.resolveBorrows(); - this.resolveMemberOf(); - this.resolveAugments(); -} - -JSDOC.SymbolSet.prototype.resolveBorrows = function() { - for (var p = this._index.first(); p; p = this._index.next()) { - var symbol = p.value; - if (symbol.is("FILE") || symbol.is("GLOBAL")) continue; - - var borrows = symbol.inherits; - for (var i = 0; i < borrows.length; i++) { - -if (/#$/.test(borrows[i].alias)) { - LOG.warn("Attempted to borrow entire instance of "+borrows[i].alias+" but that feature is not yet implemented."); - return; -} - var borrowed = this.getSymbol(borrows[i].alias); - - if (!borrowed) { - LOG.warn("Can't borrow undocumented "+borrows[i].alias+"."); - continue; - } - - if (borrows[i].as == borrowed.alias) { - var assumedName = borrowed.name.split(/([#.-])/).pop(); - borrows[i].as = symbol.name+RegExp.$1+assumedName; - LOG.inform("Assuming borrowed as name is "+borrows[i].as+" but that feature is experimental."); - } - - var borrowAsName = borrows[i].as; - var borrowAsAlias = borrowAsName; - if (!borrowAsName) { - LOG.warn("Malformed @borrow, 'as' is required."); - continue; - } - - if (borrowAsName.length > symbol.alias.length && borrowAsName.indexOf(symbol.alias) == 0) { - borrowAsName = borrowAsName.replace(borrowed.alias, "") - } - else { - var joiner = ""; - if (borrowAsName.charAt(0) != "#") joiner = "."; - borrowAsAlias = borrowed.alias + joiner + borrowAsName; - } - - borrowAsName = borrowAsName.replace(/^[#.]/, ""); - - if (this.hasSymbol(borrowAsAlias)) continue; - - var clone = borrowed.clone(); - clone.name = borrowAsName; - clone.alias = borrowAsAlias; - this.addSymbol(clone); - } - } -} - -JSDOC.SymbolSet.prototype.resolveMemberOf = function() { - for (var p = this._index.first(); p; p = this._index.next()) { - var symbol = p.value; - - if (symbol.is("FILE") || symbol.is("GLOBAL")) continue; - - // the memberOf value was provided in the @memberOf tag - else if (symbol.memberOf) { - // like foo.bar is a memberOf foo - if (symbol.alias.indexOf(symbol.memberOf) == 0) { - var memberMatch = new RegExp("^("+symbol.memberOf+")[.#-]?(.+)$"); - var aliasParts = symbol.alias.match(memberMatch); - - if (aliasParts) { - symbol.memberOf = aliasParts[1]; - symbol.name = aliasParts[2]; - } - - var nameParts = symbol.name.match(memberMatch); - - if (nameParts) { - symbol.name = nameParts[2]; - } - } - // like bar is a memberOf foo - else { - var joiner = symbol.memberOf.charAt(symbol.memberOf.length-1); - if (!/[.#-]/.test(joiner)) symbol.memberOf += "."; - this.renameSymbol(symbol.alias, symbol.memberOf + symbol.name); - } - } - // the memberOf must be calculated - else { - var parts = symbol.alias.match(/^(.*[.#-])([^.#-]+)$/); - - if (parts) { - symbol.memberOf = parts[1]; - symbol.name = parts[2]; - } - } - - // set isStatic, isInner - if (symbol.memberOf) { - switch (symbol.memberOf.charAt(symbol.memberOf.length-1)) { - case '#' : - symbol.isStatic = false; - symbol.isInner = false; - break; - case '.' : - symbol.isStatic = true; - symbol.isInner = false; - break; - case '-' : - symbol.isStatic = false; - symbol.isInner = true; - break; - default: // memberOf ends in none of the above - symbol.isStatic = true; - break; - } - } - - // unowned methods and fields belong to the global object - if (!symbol.is("CONSTRUCTOR") && !symbol.isNamespace && symbol.memberOf == "") { - symbol.memberOf = "_global_"; - } - - // clean up - if (symbol.memberOf.match(/[.#-]$/)) { - symbol.memberOf = symbol.memberOf.substr(0, symbol.memberOf.length-1); - } - // add to parent's methods or properties list - if (symbol.memberOf) { - - var container = this.getSymbol(symbol.memberOf); - if (!container) { - if (JSDOC.Lang.isBuiltin(symbol.memberOf)) container = JSDOC.Parser.addBuiltin(symbol.memberOf); - else { - LOG.warn("Trying to document "+symbol.name +" as a member of undocumented symbol "+symbol.memberOf+"."); - } - } - - if (container) container.addMember(symbol); - } - } -} - -JSDOC.SymbolSet.prototype.resolveAugments = function() { - for (var p = this._index.first(); p; p = this._index.next()) { - var symbol = p.value; - - if (symbol.alias == "_global_" || symbol.is("FILE")) continue; - JSDOC.SymbolSet.prototype.walk.apply(this, [symbol]); - } -} - -JSDOC.SymbolSet.prototype.walk = function(symbol) { - var augments = symbol.augments; - for(var i = 0; i < augments.length; i++) { - var contributer = this.getSymbol(augments[i]); - if (!contributer && JSDOC.Lang.isBuiltin(''+augments[i])) { - contributer = new JSDOC.Symbol("_global_."+augments[i], [], augments[i], new JSDOC.DocComment("Built in.")); - contributer.isNamespace = true; - contributer.srcFile = ""; - contributer.isPrivate = false; - JSDOC.Parser.addSymbol(contributer); - } - - if (contributer) { - if (contributer.augments.length) { - JSDOC.SymbolSet.prototype.walk.apply(this, [contributer]); - } - - symbol.inheritsFrom.push(contributer.alias); - //if (!isUnique(symbol.inheritsFrom)) { - // LOG.warn("Can't resolve augments: Circular reference: "+symbol.alias+" inherits from "+contributer.alias+" more than once."); - //} - //else { - var cmethods = contributer.methods; - var cproperties = contributer.properties; - - for (var ci = 0, cl = cmethods.length; ci < cl; ci++) { - if (!cmethods[ci].isStatic) symbol.inherit(cmethods[ci]); - } - for (var ci = 0, cl = cproperties.length; ci < cl; ci++) { - if (!cproperties[ci].isStatic) symbol.inherit(cproperties[ci]); - } - //} - } - else LOG.warn("Can't augment contributer: "+augments[i]+", not found."); - } -} diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/TextStream.js b/build/jsdoc-toolkit/app/lib/JSDOC/TextStream.js deleted file mode 100644 index ccc48a87..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/TextStream.js +++ /dev/null @@ -1,41 +0,0 @@ - -/** - @constructor -*/ -JSDOC.TextStream = function(text) { - if (typeof(text) == "undefined") text = ""; - text = ""+text; - this.text = text; - this.cursor = 0; -} - -JSDOC.TextStream.prototype.look = function(n) { - if (typeof n == "undefined") n = 0; - - if (this.cursor+n < 0 || this.cursor+n >= this.text.length) { - var result = new String(""); - result.eof = true; - return result; - } - return this.text.charAt(this.cursor+n); -} - -JSDOC.TextStream.prototype.next = function(n) { - if (typeof n == "undefined") n = 1; - if (n < 1) return null; - - var pulled = ""; - for (var i = 0; i < n; i++) { - if (this.cursor+i < this.text.length) { - pulled += this.text.charAt(this.cursor+i); - } - else { - var result = new String(""); - result.eof = true; - return result; - } - } - - this.cursor += n; - return pulled; -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/Token.js b/build/jsdoc-toolkit/app/lib/JSDOC/Token.js deleted file mode 100644 index fb7f9d94..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/Token.js +++ /dev/null @@ -1,18 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @constructor -*/ -JSDOC.Token = function(data, type, name) { - this.data = data; - this.type = type; - this.name = name; -} - -JSDOC.Token.prototype.toString = function() { - return "<"+this.type+" name=\""+this.name+"\">"+this.data+""; -} - -JSDOC.Token.prototype.is = function(what) { - return this.name === what || this.type === what; -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js b/build/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js deleted file mode 100644 index 1a2f684a..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/TokenReader.js +++ /dev/null @@ -1,332 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @class Search a {@link JSDOC.TextStream} for language tokens. -*/ -JSDOC.TokenReader = function() { - this.keepDocs = true; - this.keepWhite = false; - this.keepComments = false; -} - -/** - @type {JSDOC.Token[]} - */ -JSDOC.TokenReader.prototype.tokenize = function(/**JSDOC.TextStream*/stream) { - var tokens = []; - tokens.last = function() { return tokens[tokens.length-1]; } - tokens.lastSym = function() { - for (var i = tokens.length-1; i >= 0; i--) { - if (!(tokens[i].is("WHIT") || tokens[i].is("COMM"))) return tokens[i]; - } - } - - while (!stream.look().eof) { - if (this.read_mlcomment(stream, tokens)) continue; - if (this.read_slcomment(stream, tokens)) continue; - if (this.read_dbquote(stream, tokens)) continue; - if (this.read_snquote(stream, tokens)) continue; - if (this.read_regx(stream, tokens)) continue; - if (this.read_numb(stream, tokens)) continue; - if (this.read_punc(stream, tokens)) continue; - if (this.read_newline(stream, tokens)) continue; - if (this.read_space(stream, tokens)) continue; - if (this.read_word(stream, tokens)) continue; - - // if execution reaches here then an error has happened - tokens.push(new JSDOC.Token(stream.next(), "TOKN", "UNKNOWN_TOKEN")); - } - return tokens; -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_word = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = ""; - while (!stream.look().eof && JSDOC.Lang.isWordChar(stream.look())) { - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - var name; - if ((name = JSDOC.Lang.keyword(found))) tokens.push(new JSDOC.Token(found, "KEYW", name)); - else tokens.push(new JSDOC.Token(found, "NAME", "NAME")); - return true; - } -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_punc = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = ""; - var name; - while (!stream.look().eof && JSDOC.Lang.punc(found+stream.look())) { - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - tokens.push(new JSDOC.Token(found, "PUNC", JSDOC.Lang.punc(found))); - return true; - } -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_space = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = ""; - - while (!stream.look().eof && JSDOC.Lang.isSpace(stream.look())) { - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - if (this.collapseWhite) found = " "; - if (this.keepWhite) tokens.push(new JSDOC.Token(found, "WHIT", "SPACE")); - return true; - } -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_newline = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = ""; - - while (!stream.look().eof && JSDOC.Lang.isNewline(stream.look())) { - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - if (this.collapseWhite) found = "\n"; - if (this.keepWhite) tokens.push(new JSDOC.Token(found, "WHIT", "NEWLINE")); - return true; - } -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_mlcomment = function(/**JSDOC.TokenStream*/stream, tokens) { - if (stream.look() == "/" && stream.look(1) == "*") { - var found = stream.next(2); - - while (!stream.look().eof && !(stream.look(-1) == "/" && stream.look(-2) == "*")) { - found += stream.next(); - } - - // to start doclet we allow /** or /*** but not /**/ or /**** - if (/^\/\*\*([^\/]|\*[^*])/.test(found) && this.keepDocs) tokens.push(new JSDOC.Token(found, "COMM", "JSDOC")); - else if (this.keepComments) tokens.push(new JSDOC.Token(found, "COMM", "MULTI_LINE_COMM")); - return true; - } - return false; -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_slcomment = function(/**JSDOC.TokenStream*/stream, tokens) { - var found; - if ( - (stream.look() == "/" && stream.look(1) == "/" && (found=stream.next(2))) - || - (stream.look() == "<" && stream.look(1) == "!" && stream.look(2) == "-" && stream.look(3) == "-" && (found=stream.next(4))) - ) { - - while (!stream.look().eof && !JSDOC.Lang.isNewline(stream.look())) { - found += stream.next(); - } - - if (this.keepComments) { - tokens.push(new JSDOC.Token(found, "COMM", "SINGLE_LINE_COMM")); - } - return true; - } - return false; -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_dbquote = function(/**JSDOC.TokenStream*/stream, tokens) { - if (stream.look() == "\"") { - // find terminator - var string = stream.next(); - - while (!stream.look().eof) { - if (stream.look() == "\\") { - if (JSDOC.Lang.isNewline(stream.look(1))) { - do { - stream.next(); - } while (!stream.look().eof && JSDOC.Lang.isNewline(stream.look())); - string += "\\\n"; - } - else { - string += stream.next(2); - } - } - else if (stream.look() == "\"") { - string += stream.next(); - tokens.push(new JSDOC.Token(string, "STRN", "DOUBLE_QUOTE")); - return true; - } - else { - string += stream.next(); - } - } - } - return false; // error! unterminated string -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_snquote = function(/**JSDOC.TokenStream*/stream, tokens) { - if (stream.look() == "'") { - // find terminator - var string = stream.next(); - - while (!stream.look().eof) { - if (stream.look() == "\\") { // escape sequence - string += stream.next(2); - } - else if (stream.look() == "'") { - string += stream.next(); - tokens.push(new JSDOC.Token(string, "STRN", "SINGLE_QUOTE")); - return true; - } - else { - string += stream.next(); - } - } - } - return false; // error! unterminated string -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_numb = function(/**JSDOC.TokenStream*/stream, tokens) { - if (stream.look() === "0" && stream.look(1) == "x") { - return this.read_hex(stream, tokens); - } - - var found = ""; - - while (!stream.look().eof && JSDOC.Lang.isNumber(found+stream.look())){ - found += stream.next(); - } - - if (found === "") { - return false; - } - else { - if (/^0[0-7]/.test(found)) tokens.push(new JSDOC.Token(found, "NUMB", "OCTAL")); - else tokens.push(new JSDOC.Token(found, "NUMB", "DECIMAL")); - return true; - } -} -/*t: - requires("../lib/JSDOC/TextStream.js"); - requires("../lib/JSDOC/Token.js"); - requires("../lib/JSDOC/Lang.js"); - - plan(3, "testing JSDOC.TokenReader.prototype.read_numb"); - - //// setup - var src = "function foo(num){while (num+8.0 >= 0x20 && num < 0777){}}"; - var tr = new JSDOC.TokenReader(); - var tokens = tr.tokenize(new JSDOC.TextStream(src)); - - var hexToken, octToken, decToken; - for (var i = 0; i < tokens.length; i++) { - if (tokens[i].name == "HEX_DEC") hexToken = tokens[i]; - if (tokens[i].name == "OCTAL") octToken = tokens[i]; - if (tokens[i].name == "DECIMAL") decToken = tokens[i]; - } - //// - - is(decToken.data, "8.0", "decimal number is found in source."); - is(hexToken.data, "0x20", "hexdec number is found in source (issue #99)."); - is(octToken.data, "0777", "octal number is found in source."); -*/ - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_hex = function(/**JSDOC.TokenStream*/stream, tokens) { - var found = stream.next(2); - - while (!stream.look().eof) { - if (JSDOC.Lang.isHexDec(found) && !JSDOC.Lang.isHexDec(found+stream.look())) { // done - tokens.push(new JSDOC.Token(found, "NUMB", "HEX_DEC")); - return true; - } - else { - found += stream.next(); - } - } - return false; -} - -/** - @returns {Boolean} Was the token found? - */ -JSDOC.TokenReader.prototype.read_regx = function(/**JSDOC.TokenStream*/stream, tokens) { - var last; - if ( - stream.look() == "/" - && - ( - - ( - !(last = tokens.lastSym()) // there is no last, the regex is the first symbol - || - ( - !last.is("NUMB") - && !last.is("NAME") - && !last.is("RIGHT_PAREN") - && !last.is("RIGHT_BRACKET") - ) - ) - ) - ) { - var regex = stream.next(); - - while (!stream.look().eof) { - if (stream.look() == "\\") { // escape sequence - regex += stream.next(2); - } - else if (stream.look() == "/") { - regex += stream.next(); - - while (/[gmi]/.test(stream.look())) { - regex += stream.next(); - } - - tokens.push(new JSDOC.Token(regex, "REGX", "REGX")); - return true; - } - else { - regex += stream.next(); - } - } - // error: unterminated regex - } - return false; -} diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js b/build/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js deleted file mode 100644 index 1eeb44cb..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/TokenStream.js +++ /dev/null @@ -1,133 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** - @constructor -*/ -JSDOC.TokenStream = function(tokens) { - this.tokens = (tokens || []); - this.rewind(); -} - -/** - @constructor - @private -*/ -function VoidToken(/**String*/type) { - this.toString = function() {return ""}; - this.is = function(){return false;} -} - -JSDOC.TokenStream.prototype.rewind = function() { - this.cursor = -1; -} - -/** - @type JSDOC.Token -*/ -JSDOC.TokenStream.prototype.look = function(/**Number*/n, /**Boolean*/considerWhitespace) { - if (typeof n == "undefined") n = 0; - - if (considerWhitespace == true) { - if (this.cursor+n < 0 || this.cursor+n > this.tokens.length) return {}; - return this.tokens[this.cursor+n]; - } - else { - var count = 0; - var i = this.cursor; - - while (true) { - if (i < 0) return new JSDOC.Token("", "VOID", "START_OF_STREAM"); - else if (i > this.tokens.length) return new JSDOC.Token("", "VOID", "END_OF_STREAM"); - - if (i != this.cursor && (this.tokens[i] === undefined || this.tokens[i].is("WHIT"))) { - if (n < 0) i--; else i++; - continue; - } - - if (count == Math.abs(n)) { - return this.tokens[i]; - } - count++; - (n < 0)? i-- : i++; - } - - return new JSDOC.Token("", "VOID", "STREAM_ERROR"); // because null isn't an object and caller always expects an object - } -} - -/** - @type JSDOC.Token|JSDOC.Token[] -*/ -JSDOC.TokenStream.prototype.next = function(/**Number*/howMany) { - if (typeof howMany == "undefined") howMany = 1; - if (howMany < 1) return null; - var got = []; - - for (var i = 1; i <= howMany; i++) { - if (this.cursor+i >= this.tokens.length) { - return null; - } - got.push(this.tokens[this.cursor+i]); - } - this.cursor += howMany; - - if (howMany == 1) { - return got[0]; - } - else return got; -} - -/** - @type JSDOC.Token[] -*/ -JSDOC.TokenStream.prototype.balance = function(/**String*/start, /**String*/stop) { - if (!stop) stop = JSDOC.Lang.matching(start); - - var depth = 0; - var got = []; - var started = false; - - while ((token = this.look())) { - if (token.is(start)) { - depth++; - started = true; - } - - if (started) { - got.push(token); - } - - if (token.is(stop)) { - depth--; - if (depth == 0) return got; - } - if (!this.next()) break; - } -} - -JSDOC.TokenStream.prototype.getMatchingToken = function(/**String*/start, /**String*/stop) { - var depth = 0; - var cursor = this.cursor; - - if (!start) { - start = JSDOC.Lang.matching(stop); - depth = 1; - } - if (!stop) stop = JSDOC.Lang.matching(start); - - while ((token = this.tokens[cursor])) { - if (token.is(start)) { - depth++; - } - - if (token.is(stop) && cursor) { - depth--; - if (depth == 0) return this.tokens[cursor]; - } - cursor++; - } -} - -JSDOC.TokenStream.prototype.insertAhead = function(/**JSDOC.Token*/token) { - this.tokens.splice(this.cursor+1, 0, token); -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/Util.js b/build/jsdoc-toolkit/app/lib/JSDOC/Util.js deleted file mode 100644 index 6d7edb36..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/Util.js +++ /dev/null @@ -1,32 +0,0 @@ -/** - * @namespace - * @deprecated Use {@link FilePath} instead. - */ -JSDOC.Util = { -} - -/** - * @deprecated Use {@link FilePath.fileName} instead. - */ -JSDOC.Util.fileName = function(path) { - LOG.warn("JSDOC.Util.fileName is deprecated. Use FilePath.fileName instead."); - var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0); - return path.substring(nameStart); -} - -/** - * @deprecated Use {@link FilePath.fileExtension} instead. - */ -JSDOC.Util.fileExtension = function(filename) { - LOG.warn("JSDOC.Util.fileExtension is deprecated. Use FilePath.fileExtension instead."); - return filename.split(".").pop().toLowerCase(); -}; - -/** - * @deprecated Use {@link FilePath.dir} instead. - */ -JSDOC.Util.dir = function(path) { - LOG.warn("JSDOC.Util.dir is deprecated. Use FilePath.dir instead."); - var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0); - return path.substring(0, nameStart-1); -} diff --git a/build/jsdoc-toolkit/app/lib/JSDOC/Walker.js b/build/jsdoc-toolkit/app/lib/JSDOC/Walker.js deleted file mode 100644 index 6ecaea88..00000000 --- a/build/jsdoc-toolkit/app/lib/JSDOC/Walker.js +++ /dev/null @@ -1,507 +0,0 @@ -if (typeof JSDOC == "undefined") JSDOC = {}; - -/** @constructor */ -JSDOC.Walker = function(/**JSDOC.TokenStream*/ts) { - this.init(); - if (typeof ts != "undefined") { - this.walk(ts); - } -} - -JSDOC.Walker.prototype.init = function() { - this.ts = null; - - var globalSymbol = new JSDOC.Symbol("_global_", [], "GLOBAL", new JSDOC.DocComment("")); - globalSymbol.isNamespace = true; - globalSymbol.srcFile = ""; - globalSymbol.isPrivate = false; - JSDOC.Parser.addSymbol(globalSymbol); - this.lastDoc = null; - this.token = null; - - /** - The chain of symbols under which we are currently nested. - @type Array - */ - this.namescope = [globalSymbol]; - this.namescope.last = function(n){ if (!n) n = 0; return this[this.length-(1+n)] || "" }; -} - -JSDOC.Walker.prototype.walk = function(/**JSDOC.TokenStream*/ts) { - this.ts = ts; - while (this.token = this.ts.look()) { - if (this.token.popNamescope) { - - var symbol = this.namescope.pop(); - if (symbol.is("FUNCTION")) { - if (this.ts.look(1).is("LEFT_PAREN") && symbol.comment.getTag("function").length == 0) { - symbol.isa = "OBJECT"; - } - } - } - this.step(); - if (!this.ts.next()) break; - } -} - -JSDOC.Walker.prototype.step = function() { - if (this.token.is("JSDOC")) { // it's a doc comment - - var doc = new JSDOC.DocComment(this.token.data); - - - if (doc.getTag("exports").length > 0) { - var exports = doc.getTag("exports")[0]; - - exports.desc.match(/(\S+) as (\S+)/i); - var n1 = RegExp.$1; - var n2 = RegExp.$2; - - if (!n1 && n2) throw "@exports tag requires a value like: 'name as ns.name'"; - - JSDOC.Parser.rename = (JSDOC.Parser.rename || {}); - JSDOC.Parser.rename[n1] = n2 - } - - if (doc.getTag("lends").length > 0) { - var lends = doc.getTag("lends")[0]; - - var name = lends.desc - if (!name) throw "@lends tag requires a value."; - - var symbol = new JSDOC.Symbol(name, [], "OBJECT", doc); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - - this.lastDoc = null; - return true; - } - else if (doc.getTag("name").length > 0 && doc.getTag("overview").length == 0) { // it's a virtual symbol - var virtualName = doc.getTag("name")[0].desc; - if (!virtualName) throw "@name tag requires a value."; - - if (doc.getTag("memberOf").length > 0) { - virtualName = (doc.getTag("memberOf")[0] + "." + virtualName) - .replace(/([#.])\./, "$1"); - doc.deleteTag("memberOf"); - } - - var symbol = new JSDOC.Symbol(virtualName, [], "VIRTUAL", doc); - - JSDOC.Parser.addSymbol(symbol); - - this.lastDoc = null; - return true; - } - else if (doc.meta) { // it's a meta doclet - if (doc.meta == "@+") JSDOC.DocComment.shared = doc.src; - else if (doc.meta == "@-") JSDOC.DocComment.shared = ""; - else if (doc.meta == "nocode+") JSDOC.Parser.conf.ignoreCode = true; - else if (doc.meta == "nocode-") JSDOC.Parser.conf.ignoreCode = JSDOC.opt.n; - else throw "Unrecognized meta comment: "+doc.meta; - - this.lastDoc = null; - return true; - } - else if (doc.getTag("overview").length > 0) { // it's a file overview - symbol = new JSDOC.Symbol("", [], "FILE", doc); - - JSDOC.Parser.addSymbol(symbol); - - this.lastDoc = null; - return true; - } - else { - this.lastDoc = doc; - return false; - } - } - else if (!JSDOC.Parser.conf.ignoreCode) { // it's code - if (this.token.is("NAME")) { // it's the name of something - var symbol; - var name = this.token.data; - var doc = null; if (this.lastDoc) doc = this.lastDoc; - var params = []; - - // it's inside an anonymous object - if (this.ts.look(1).is("COLON") && this.ts.look(-1).is("LEFT_CURLY") && !(this.ts.look(-2).is("JSDOC") || this.namescope.last().comment.getTag("lends").length || this.ts.look(-2).is("ASSIGN") || this.ts.look(-2).is("COLON"))) { - name = "$anonymous"; - name = this.namescope.last().alias+"-"+name - - params = []; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken(null, "RIGHT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // function foo() {} - else if (this.ts.look(-1).is("FUNCTION") && this.ts.look(1).is("LEFT_PAREN")) { - var isInner; - - if (this.lastDoc) doc = this.lastDoc; - - if (doc && doc.getTag("memberOf").length > 0) { - name = (doc.getTag("memberOf")[0]+"."+name).replace("#.", "#"); - doc.deleteTag("memberOf"); - } - else { - name = this.namescope.last().alias+"-"+name; - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - - if (!this.namescope.last().is("GLOBAL")) isInner = true; - - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - symbol = new JSDOC.Symbol(name, params, "FUNCTION", doc); - if (isInner) symbol.isInner = true; - - if (this.ts.look(1).is("JSDOC")) { - var inlineReturn = ""+this.ts.look(1).data; - inlineReturn = inlineReturn.replace(/(^\/\*\* *| *\*\/$)/g, ""); - symbol.type = inlineReturn; - } - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo = function() {} - else if (this.ts.look(1).is("ASSIGN") && this.ts.look(2).is("FUNCTION")) { - var constructs; - var isConstructor = false; - if (doc && (constructs = doc.getTag("constructs")) && constructs.length) { - if (constructs[0].desc) { - name = constructs[0].desc; - isConstructor = true; - } - } - - var isInner; - if (this.ts.look(-1).is("VAR") || this.isInner) { - if (doc && doc.getTag("memberOf").length > 0) { - name = (doc.getTag("memberOf")[0]+"."+name).replace("#.", "#"); - doc.deleteTag("memberOf"); - } - else { - name = this.namescope.last().alias+"-"+name; - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - else if (name.indexOf("this.") == 0) { - name = this.resolveThis(name); - } - - if (this.lastDoc) doc = this.lastDoc; - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - symbol = new JSDOC.Symbol(name, params, "FUNCTION", doc); - - if (isInner) symbol.isInner = true; - if (isConstructor) symbol.isa = "CONSTRUCTOR"; - - if (this.ts.look(1).is("JSDOC")) { - var inlineReturn = ""+this.ts.look(1).data; - inlineReturn = inlineReturn.replace(/(^\/\*\* *| *\*\/$)/g, ""); - symbol.type = inlineReturn; - } - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo = new function() {} or foo = (function() {} - else if (this.ts.look(1).is("ASSIGN") && (this.ts.look(2).is("NEW") || this.ts.look(2).is("LEFT_PAREN")) && this.ts.look(3).is("FUNCTION")) { - var isInner; - if (this.ts.look(-1).is("VAR") || this.isInner) { - name = this.namescope.last().alias+"-"+name - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - else if (name.indexOf("this.") == 0) { - name = this.resolveThis(name); - } - - this.ts.next(3); // advance past the "new" or "(" - - if (this.lastDoc) doc = this.lastDoc; - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - if (isInner) symbol.isInner = true; - - if (this.ts.look(1).is("JSDOC")) { - var inlineReturn = ""+this.ts.look(1).data; - inlineReturn = inlineReturn.replace(/(^\/\*\* *| *\*\/$)/g, ""); - symbol.type = inlineReturn; - } - - JSDOC.Parser.addSymbol(symbol); - - symbol.scopeType = "INSTANCE"; - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo: function() {} - else if (this.ts.look(1).is("COLON") && this.ts.look(2).is("FUNCTION")) { - name = (this.namescope.last().alias+"."+name).replace("#.", "#"); - - if (this.lastDoc) doc = this.lastDoc; - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - if (doc && doc.getTag("constructs").length) { - name = name.replace(/\.prototype(\.|$)/, "#"); - - if (name.indexOf("#") > -1) name = name.match(/(^[^#]+)/)[0]; - else name = this.namescope.last().alias; - - symbol = new JSDOC.Symbol(name, params, "CONSTRUCTOR", doc); - } - else { - symbol = new JSDOC.Symbol(name, params, "FUNCTION", doc); - } - - if (this.ts.look(1).is("JSDOC")) { - var inlineReturn = ""+this.ts.look(1).data; - inlineReturn = inlineReturn.replace(/(^\/\*\* *| *\*\/$)/g, ""); - symbol.type = inlineReturn; - } - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo = {} - else if (this.ts.look(1).is("ASSIGN") && this.ts.look(2).is("LEFT_CURLY")) { - var isInner; - if (this.ts.look(-1).is("VAR") || this.isInner) { - name = this.namescope.last().alias+"-"+name - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - else if (name.indexOf("this.") == 0) { - name = this.resolveThis(name); - } - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - if (isInner) symbol.isInner = true; - - - if (doc) JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // var foo; - else if (this.ts.look(1).is("SEMICOLON")) { - var isInner; - - if (this.ts.look(-1).is("VAR") || this.isInner) { - name = this.namescope.last().alias+"-"+name - if (!this.namescope.last().is("GLOBAL")) isInner = true; - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - if (isInner) symbol.isInner = true; - - - if (doc) JSDOC.Parser.addSymbol(symbol); - } - } - // foo = x - else if (this.ts.look(1).is("ASSIGN")) { - var isInner; - if (this.ts.look(-1).is("VAR") || this.isInner) { - name = this.namescope.last().alias+"-"+name - if (!this.namescope.last().is("GLOBAL")) isInner = true; - } - else if (name.indexOf("this.") == 0) { - name = this.resolveThis(name); - } - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - if (isInner) symbol.isInner = true; - - - if (doc) JSDOC.Parser.addSymbol(symbol); - } - // foo: {} - else if (this.ts.look(1).is("COLON") && this.ts.look(2).is("LEFT_CURLY")) { - name = (this.namescope.last().alias+"."+name).replace("#.", "#"); - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - - - if (doc) JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - // foo: x - else if (this.ts.look(1).is("COLON")) { - name = (this.namescope.last().alias+"."+name).replace("#.", "#");; - - if (this.lastDoc) doc = this.lastDoc; - - symbol = new JSDOC.Symbol(name, params, "OBJECT", doc); - - - if (doc) JSDOC.Parser.addSymbol(symbol); - } - // foo(...) - else if (this.ts.look(1).is("LEFT_PAREN")) { - if (typeof JSDOC.PluginManager != "undefined") { - var functionCall = {name: name}; - - var cursor = this.ts.cursor; - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - this.ts.cursor = cursor; - - for (var i = 0; i < params.length; i++) - functionCall["arg" + (i + 1)] = params[i].name; - - JSDOC.PluginManager.run("onFunctionCall", functionCall); - if (functionCall.doc) { - this.ts.insertAhead(new JSDOC.Token(functionCall.doc, "COMM", "JSDOC")); - } - } - } - this.lastDoc = null; - } - else if (this.token.is("FUNCTION")) { // it's an anonymous function - if ( - (!this.ts.look(-1).is("COLON") || !this.ts.look(-1).is("ASSIGN")) - && !this.ts.look(1).is("NAME") - ) { - if (this.lastDoc) doc = this.lastDoc; - - name = "$anonymous"; - name = this.namescope.last().alias+"-"+name - - params = JSDOC.Walker.onParamList(this.ts.balance("LEFT_PAREN")); - - symbol = new JSDOC.Symbol(name, params, "FUNCTION", doc); - - JSDOC.Parser.addSymbol(symbol); - - this.namescope.push(symbol); - - var matching = this.ts.getMatchingToken("LEFT_CURLY"); - if (matching) matching.popNamescope = name; - else LOG.warn("Mismatched } character. Can't parse code in file " + symbol.srcFile + "."); - } - } - } - return true; -} - -/** - Resolves what "this." means when it appears in a name. - @param name The name that starts with "this.". - @returns The name with "this." resolved. - */ -JSDOC.Walker.prototype.resolveThis = function(name) { - name.match(/^this\.(.+)$/) - var nameFragment = RegExp.$1; - if (!nameFragment) return name; - - var symbol = this.namescope.last(); - var scopeType = symbol.scopeType || symbol.isa; - - // if we are in a constructor function, `this` means the instance - if (scopeType == "CONSTRUCTOR") { - name = symbol.alias+"#"+nameFragment; - } - - // if we are in an anonymous constructor function, `this` means the instance - else if (scopeType == "INSTANCE") { - name = symbol.alias+"."+nameFragment; - } - - // if we are in a function, `this` means the container (possibly the global) - else if (scopeType == "FUNCTION") { - // in a method of a prototype, so `this` means the constructor - if (symbol.alias.match(/(^.*)[#.-][^#.-]+/)) { - var parentName = RegExp.$1; - var parent = JSDOC.Parser.symbols.getSymbol(parentName); - - if (!parent) { - if (JSDOC.Lang.isBuiltin(parentName)) parent = JSDOC.Parser.addBuiltin(parentName); - else { - if (symbol.alias.indexOf("$anonymous") < 0) // these will be ignored eventually - LOG.warn("Trying to document "+symbol.alias+" without first documenting "+parentName+"."); - } - } - if (parent) name = parentName+(parent.is("CONSTRUCTOR")?"#":".")+nameFragment; - } - else { - parent = this.namescope.last(1); - name = parent.alias+(parent.is("CONSTRUCTOR")?"#":".")+nameFragment; - } - } - // otherwise it means the global - else { - name = nameFragment; - } - - return name; -} - -JSDOC.Walker.onParamList = function(/**Array*/paramTokens) { - if (!paramTokens) { - LOG.warn("Malformed parameter list. Can't parse code."); - return []; - } - var params = []; - for (var i = 0, l = paramTokens.length; i < l; i++) { - if (paramTokens[i].is("JSDOC")) { - var paramType = paramTokens[i].data.replace(/(^\/\*\* *| *\*\/$)/g, ""); - - if (paramTokens[i+1] && paramTokens[i+1].is("NAME")) { - i++; - params.push({type: paramType, name: paramTokens[i].data}); - } - } - else if (paramTokens[i].is("NAME")) { - params.push({name: paramTokens[i].data}); - } - } - return params; -} diff --git a/build/jsdoc-toolkit/app/main.js b/build/jsdoc-toolkit/app/main.js deleted file mode 100644 index f9008c87..00000000 --- a/build/jsdoc-toolkit/app/main.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * @version $Id: main.js 818 2009-11-08 14:51:41Z micmath $ - */ - -function main() { - IO.include("lib/JSDOC.js"); - IO.includeDir("plugins/"); - - // process the options - - // the -c option: options are defined in a configuration file - if (JSDOC.opt.c) { - eval("JSDOC.conf = " + IO.readFile(JSDOC.opt.c)); - - LOG.inform("Using configuration file at '"+JSDOC.opt.c+"'."); - - for (var c in JSDOC.conf) { - if (c !== "D" && !defined(JSDOC.opt[c])) { // commandline overrules config file - JSDOC.opt[c] = JSDOC.conf[c]; - } - } - - if (typeof JSDOC.conf["_"] != "undefined") { - JSDOC.opt["_"] = JSDOC.opt["_"].concat(JSDOC.conf["_"]); - } - - LOG.inform("With configuration: "); - for (var o in JSDOC.opt) { - LOG.inform(" "+o+": "+JSDOC.opt[o]); - } - } - - // be verbose - if (JSDOC.opt.v) LOG.verbose = true; - - // send log messages to a file - if (JSDOC.opt.o) LOG.out = IO.open(JSDOC.opt.o); - - // run the unit tests - if (JSDOC.opt.T) { - LOG.inform("JsDoc Toolkit running in test mode at "+new Date()+"."); - IO.include("frame/Testrun.js"); - IO.include("test.js"); - } - else { - // a template must be defined and must be a directory path - if (!JSDOC.opt.t && System.getProperty("jsdoc.template.dir")) { - JSDOC.opt.t = System.getProperty("jsdoc.template.dir"); - } - if (JSDOC.opt.t && SYS.slash != JSDOC.opt.t.slice(-1)) { - JSDOC.opt.t += SYS.slash; - } - - // verbose messages about the options we were given - LOG.inform("JsDoc Toolkit main() running at "+new Date()+"."); - LOG.inform("With options: "); - for (var o in JSDOC.opt) { - LOG.inform(" "+o+": "+JSDOC.opt[o]); - } - - // initialize and build a symbolSet from your code - JSDOC.JsDoc(); - - // debugger's option: dump the entire symbolSet produced from your code - if (JSDOC.opt.Z) { - LOG.warn("So you want to see the data structure, eh? This might hang if you have circular refs..."); - IO.include("frame/Dumper.js"); - var symbols = JSDOC.JsDoc.symbolSet.toArray(); - for (var i = 0, l = symbols.length; i < l; i++) { - var symbol = symbols[i]; - print("// symbol: " + symbol.alias); - print(symbol.serialize()); - } - } - else { - if (typeof JSDOC.opt.t != "undefined") { - try { - // a file named "publish.js" must exist in the template directory - load(JSDOC.opt.t+"publish.js"); - - // and must define a function named "publish" - if (!publish) { - LOG.warn("No publish() function is defined in that template so nothing to do."); - } - else { - // which will be called with the symbolSet produced from your code - publish(JSDOC.JsDoc.symbolSet); - } - } - catch(e) { - LOG.warn("Sorry, that doesn't seem to be a valid template: "+JSDOC.opt.t+"publish.js : "+e); - } - } - else { - LOG.warn("No template given. Might as well read the usage notes."); - JSDOC.usage(); - } - } - } - - // notify of any warnings - if (!JSDOC.opt.q && LOG.warnings.length) { - print(LOG.warnings.length+" warning"+(LOG.warnings.length != 1? "s":"")+"."); - } - - // stop sending log messages to a file - if (LOG.out) { - LOG.out.flush(); - LOG.out.close(); - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/plugins/bean.js b/build/jsdoc-toolkit/app/plugins/bean.js deleted file mode 100644 index 98e5c65f..00000000 --- a/build/jsdoc-toolkit/app/plugins/bean.js +++ /dev/null @@ -1,23 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.bean", - { - beanSymbols: {}, - onSymbol: function(symbol) { - if (symbol.comment.getTag('bean').length) { - var bean = symbol.name.match(/([^#]+#)(get|is)(([A-Z])(.*))$/); - symbol.alias = bean[1] + bean[4].toLowerCase() + bean[5]; - symbol.isa = "OBJECT"; - symbol.readOnly = true; - this.beanSymbols[symbol.alias] = symbol; - } - var setter = symbol.name.match(/([^#]+#)(set)(([A-Z])(.*))$/); - if (setter) { - var getterName = setter[1] + setter[4].toLowerCase() + setter[5]; - var getter = this.beanSymbols[getterName]; - if (getter && getter.readOnly) { - getter.readOnly = false; - } - } - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/plugins/commentSrcJson.js b/build/jsdoc-toolkit/app/plugins/commentSrcJson.js deleted file mode 100644 index e826b572..00000000 --- a/build/jsdoc-toolkit/app/plugins/commentSrcJson.js +++ /dev/null @@ -1,20 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.commentSrcJson", - { - onDocCommentSrc: function(comment) { - var json; - if (/^\s*@json\b/.test(comment)) { - comment.src = new String(comment.src).replace("@json", ""); - - eval("json = "+comment.src); - var tagged = ""; - for (var i in json) { - var tag = json[i]; - // todo handle cases where tag is an object - tagged += "@"+i+" "+tag+"\n"; - } - comment.src = tagged; - } - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/plugins/constructors.js b/build/jsdoc-toolkit/app/plugins/constructors.js deleted file mode 100644 index f1a71e26..00000000 --- a/build/jsdoc-toolkit/app/plugins/constructors.js +++ /dev/null @@ -1,14 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.constructors", - { - beanSymbols: {}, - onSymbol: function(symbol) { - // If the method name is 'initialize', or it is a static method - // with a capitalized first character, it is a constructor - if (/(#initialize|\.[A-Z][a-z][^#.]+$)/.test(symbol.alias)) { - symbol.isConstructor = true; - symbol.isa = 'FUNCTION'; - } - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/plugins/frameworkPrototype.js b/build/jsdoc-toolkit/app/plugins/frameworkPrototype.js deleted file mode 100644 index 9c417518..00000000 --- a/build/jsdoc-toolkit/app/plugins/frameworkPrototype.js +++ /dev/null @@ -1,16 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.frameworkPrototype", - { - onPrototypeClassCreate: function(classCreator) { - var desc = ""; - if (classCreator.comment) { - desc = classCreator.comment; - } - var insert = desc+"/** @name "+classCreator.name+"\n@constructor\n@scope "+classCreator.name+".prototype */" - - insert = insert.replace(/\*\/\/\*\*/g, "\n"); - /*DEBUG*///print("insert is "+insert); - classCreator.addComment.data = insert; - } - } -); diff --git a/build/jsdoc-toolkit/app/plugins/grouptitle.js b/build/jsdoc-toolkit/app/plugins/grouptitle.js deleted file mode 100644 index 7720907b..00000000 --- a/build/jsdoc-toolkit/app/plugins/grouptitle.js +++ /dev/null @@ -1,14 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.grouptitle", - { - beanSymbols: {}, - onSymbol: function(symbol) { - var matches = symbol.desc.match(/\{@grouptitle ([^}]+)\}/), - groupTitle; - if (matches) { - symbol.groupTitle = matches[1]; - symbol.desc = symbol.desc.replace(/\{@grouptitle ([^}]+)\}/, ''); - } - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/plugins/ignore.js b/build/jsdoc-toolkit/app/plugins/ignore.js deleted file mode 100644 index de8eae61..00000000 --- a/build/jsdoc-toolkit/app/plugins/ignore.js +++ /dev/null @@ -1,10 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.ignore", - { - onSymbol: function(symbol) { - if (symbol.comment.getTag('ignore').length) { - symbol.ignore = true; - } - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/plugins/operator.js b/build/jsdoc-toolkit/app/plugins/operator.js deleted file mode 100644 index b28ce4de..00000000 --- a/build/jsdoc-toolkit/app/plugins/operator.js +++ /dev/null @@ -1,11 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.operator", - { - onSymbol: function(symbol) { - var operators = symbol.comment.getTag('operator'); - if (operators.length) { - symbol.operator = operators[0].desc; - } - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/plugins/readonly.js b/build/jsdoc-toolkit/app/plugins/readonly.js deleted file mode 100644 index d3793c92..00000000 --- a/build/jsdoc-toolkit/app/plugins/readonly.js +++ /dev/null @@ -1,10 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.readonly", - { - onSymbol: function(symbol) { - if (symbol.comment.getTag('readonly').length) { - symbol.readOnly = symbol.comment.getTag('readonly')[0] != 'false'; - } - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/plugins/symbolLink.js b/build/jsdoc-toolkit/app/plugins/symbolLink.js deleted file mode 100644 index c87f1ca7..00000000 --- a/build/jsdoc-toolkit/app/plugins/symbolLink.js +++ /dev/null @@ -1,10 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.symbolLink", - { - onSymbolLink: function(link) { - // modify link.linkPath (the href part of the link) - // or link.linkText (the text displayed) - // or link.linkInner (the #name part of the link) - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/plugins/tagParamConfig.js b/build/jsdoc-toolkit/app/plugins/tagParamConfig.js deleted file mode 100644 index 3ea8a1be..00000000 --- a/build/jsdoc-toolkit/app/plugins/tagParamConfig.js +++ /dev/null @@ -1,31 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.tagParamConfig", - { - onDocCommentTags: function(comment) { - var currentParam = null; - var tags = comment.tags; - for (var i = 0, l = tags.length; i < l; i++) { - - if (tags[i].title == "param") { - if (tags[i].name.indexOf(".") == -1) { - currentParam = i; - } - } - else if (tags[i].title == "config") { - tags[i].title = "param"; - if (currentParam == null) { - tags[i].name = "arguments"+"."+tags[i].name; - } - else if (tags[i].name.indexOf(tags[currentParam].name+".") != 0) { - tags[i].name = tags[currentParam].name+"."+tags[i].name; - } - currentParam != null - //tags[currentParam].properties.push(tags[i]); - } - else { - currentParam = null; - } - } - } - } -); diff --git a/build/jsdoc-toolkit/app/plugins/tagSynonyms.js b/build/jsdoc-toolkit/app/plugins/tagSynonyms.js deleted file mode 100644 index 49a874f1..00000000 --- a/build/jsdoc-toolkit/app/plugins/tagSynonyms.js +++ /dev/null @@ -1,43 +0,0 @@ -JSDOC.PluginManager.registerPlugin( - "JSDOC.tagSynonyms", - { - onDocCommentSrc: function(comment) { - comment.src = comment.src.replace(/@methodOf\b/i, "@function\n@memberOf"); - comment.src = comment.src.replace(/@fieldOf\b/i, "@field\n@memberOf"); - }, - - onDocCommentTags: function(comment) { - for (var i = 0, l = comment.tags.length; i < l; i++) { - var title = comment.tags[i].title.toLowerCase(); - var syn; - if ((syn = JSDOC.tagSynonyms.synonyms["="+title])) { - comment.tags[i].title = syn; - } - } - } - } -); - -new Namespace( - "JSDOC.tagSynonyms", - function() { - JSDOC.tagSynonyms.synonyms = { - "=member": "memberOf", - "=memberof": "memberOf", - "=description": "desc", - "=exception": "throws", - "=argument": "param", - "=returns": "return", - "=classdescription": "class", - "=fileoverview": "overview", - "=extends": "augments", - "=base": "augments", - "=projectdescription": "overview", - "=classdescription": "class", - "=link": "see", - "=borrows": "inherits", - "=scope": "lends", - "=construct": "constructor" - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/run.js b/build/jsdoc-toolkit/app/run.js deleted file mode 100644 index 1f875cdb..00000000 --- a/build/jsdoc-toolkit/app/run.js +++ /dev/null @@ -1,348 +0,0 @@ -/** - * @fileOverview - * A bootstrap script that creates some basic required objects - * for loading other scripts. - * @author Michael Mathews, micmath@gmail.com - * @version $Id: run.js 756 2009-01-07 21:32:58Z micmath $ - */ - -/** - * @namespace Keep track of any messages from the running script. - */ -LOG = { - warn: function(msg, e) { - if (JSDOC.opt.q) return; - if (e) msg = e.fileName+", line "+e.lineNumber+": "+msg; - - msg = ">> WARNING: "+msg; - LOG.warnings.push(msg); - if (LOG.out) LOG.out.write(msg+"\n"); - else print(msg); - }, - - inform: function(msg) { - if (JSDOC.opt.q) return; - msg = " > "+msg; - if (LOG.out) LOG.out.write(msg+"\n"); - else if (typeof LOG.verbose != "undefined" && LOG.verbose) print(msg); - } -}; -LOG.warnings = []; -LOG.verbose = false -LOG.out = undefined; - -/** - * @class Manipulate a filepath. - */ -function FilePath(absPath, separator) { - this.slash = separator || "/"; - this.root = this.slash; - this.path = []; - this.file = ""; - - var parts = absPath.split(/[\\\/]/); - if (parts) { - if (parts.length) this.root = parts.shift() + this.slash; - if (parts.length) this.file = parts.pop() - if (parts.length) this.path = parts; - } - - this.path = this.resolvePath(); -} - -/** Collapse any dot-dot or dot items in a filepath. */ -FilePath.prototype.resolvePath = function() { - var resolvedPath = []; - for (var i = 0; i < this.path.length; i++) { - if (this.path[i] == "..") resolvedPath.pop(); - else if (this.path[i] != ".") resolvedPath.push(this.path[i]); - } - return resolvedPath; -} - -/** Trim off the filename. */ -FilePath.prototype.toDir = function() { - if (this.file) this.file = ""; - return this; -} - -/** Go up a directory. */ -FilePath.prototype.upDir = function() { - this.toDir(); - if (this.path.length) this.path.pop(); - return this; -} - -FilePath.prototype.toString = function() { - return this.root - + this.path.join(this.slash) - + ((this.path.length > 0)? this.slash : "") - + this.file; -} - -/** - * Turn a path into just the name of the file. - */ -FilePath.fileName = function(path) { - var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0); - return path.substring(nameStart); -} - -/** - * Get the extension of a filename - */ -FilePath.fileExtension = function(filename) { - return filename.split(".").pop().toLowerCase(); -}; - -/** - * Turn a path into just the directory part. - */ -FilePath.dir = function(path) { - var nameStart = Math.max(path.lastIndexOf("/")+1, path.lastIndexOf("\\")+1, 0); - return path.substring(0, nameStart-1); -} - - -importClass(java.lang.System); - -/** - * @namespace A collection of information about your system. - */ -SYS = { - /** - * Information about your operating system: arch, name, version. - * @type string - */ - os: [ - new String(System.getProperty("os.arch")), - new String(System.getProperty("os.name")), - new String(System.getProperty("os.version")) - ].join(", "), - - /** - * Which way does your slash lean. - * @type string - */ - slash: System.getProperty("file.separator")||"/", - - /** - * The path to the working directory where you ran java. - * @type string - */ - userDir: new String(System.getProperty("user.dir")), - - /** - * Where is Java's home folder. - * @type string - */ - javaHome: new String(System.getProperty("java.home")), - - /** - * The absolute path to the directory containing this script. - * @type string - */ - pwd: undefined -}; - -// jsrun appends an argument, with the path to here. -if (arguments[arguments.length-1].match(/^-j=(.+)/)) { - if (RegExp.$1.charAt(0) == SYS.slash || RegExp.$1.charAt(1) == ":") { // absolute path to here - SYS.pwd = new FilePath(RegExp.$1).toDir().toString(); - } - else { // relative path to here - SYS.pwd = new FilePath(SYS.userDir + SYS.slash + RegExp.$1).toDir().toString(); - } - arguments.pop(); -} -else { - print("The run.js script requires you use jsrun.jar."); - quit(); -} - -// shortcut -var File = Packages.java.io.File; - -/** - * @namespace A collection of functions that deal with reading a writing to disk. - */ -IO = { - - /** - * Create a new file in the given directory, with the given name and contents. - */ - saveFile: function(/**string*/ outDir, /**string*/ fileName, /**string*/ content) { - var out = new Packages.java.io.PrintWriter( - new Packages.java.io.OutputStreamWriter( - new Packages.java.io.FileOutputStream(outDir+SYS.slash+fileName), - IO.encoding - ) - ); - out.write(content); - out.flush(); - out.close(); - }, - - /** - * @type string - */ - readFile: function(/**string*/ path) { - if (!IO.exists(path)) { - throw "File doesn't exist there: "+path; - } - return readFile(path, IO.encoding); - }, - - /** - * @param inFile - * @param outDir - * @param [fileName=The original filename] - */ - copyFile: function(/**string*/ inFile, /**string*/ outDir, /**string*/ fileName) { - if (fileName == null) fileName = FilePath.fileName(inFile); - - var inFile = new File(inFile); - var outFile = new File(outDir+SYS.slash+fileName); - - var bis = new Packages.java.io.BufferedInputStream(new Packages.java.io.FileInputStream(inFile), 4096); - var bos = new Packages.java.io.BufferedOutputStream(new Packages.java.io.FileOutputStream(outFile), 4096); - var theChar; - while ((theChar = bis.read()) != -1) { - bos.write(theChar); - } - bos.close(); - bis.close(); - }, - - /** - * Creates a series of nested directories. - */ - mkPath: function(/**Array*/ path) { - if (path.constructor != Array) path = path.split(/[\\\/]/); - var make = ""; - for (var i = 0, l = path.length; i < l; i++) { - make += path[i] + SYS.slash; - if (! IO.exists(make)) { - IO.makeDir(make); - } - } - }, - - /** - * Creates a directory at the given path. - */ - makeDir: function(/**string*/ path) { - (new File(path)).mkdir(); - }, - - /** - * @type string[] - * @param dir The starting directory to look in. - * @param [recurse=1] How many levels deep to scan. - * @returns An array of all the paths to files in the given dir. - */ - ls: function(/**string*/ dir, /**number*/ recurse, _allFiles, _path) { - if (_path === undefined) { // initially - var _allFiles = []; - var _path = [dir]; - } - if (_path.length == 0) return _allFiles; - if (recurse === undefined) recurse = 1; - - dir = new File(dir); - if (!dir.directory) return [String(dir)]; - var files = dir.list(); - - for (var f = 0; f < files.length; f++) { - var file = String(files[f]); - if (file.match(/^\.[^\.\/\\]/)) continue; // skip dot files - - if ((new File(_path.join(SYS.slash)+SYS.slash+file)).list()) { // it's a directory - _path.push(file); - if (_path.length-1 < recurse) IO.ls(_path.join(SYS.slash), recurse, _allFiles, _path); - _path.pop(); - } - else { - _allFiles.push((_path.join(SYS.slash)+SYS.slash+file).replace(SYS.slash+SYS.slash, SYS.slash)); - } - } - - return _allFiles; - }, - - /** - * @type boolean - */ - exists: function(/**string*/ path) { - file = new File(path); - - if (file.isDirectory()){ - return true; - } - if (!file.exists()){ - return false; - } - if (!file.canRead()){ - return false; - } - return true; - }, - - /** - * - */ - open: function(/**string*/ path, /**string*/ append) { - var append = true; - var outFile = new File(path); - var out = new Packages.java.io.PrintWriter( - new Packages.java.io.OutputStreamWriter( - new Packages.java.io.FileOutputStream(outFile, append), - IO.encoding - ) - ); - return out; - }, - - /** - * Sets {@link IO.encoding}. - * Encoding is used when reading and writing text to files, - * and in the meta tags of HTML output. - */ - setEncoding: function(/**string*/ encoding) { - if (/ISO-8859-([0-9]+)/i.test(encoding)) { - IO.encoding = "ISO8859_"+RegExp.$1; - } - else { - IO.encoding = encoding; - } - }, - - /** - * @default "utf-8" - * @private - */ - encoding: "utf-8", - - /** - * Load the given script. - */ - include: function(relativePath) { - load(SYS.pwd+relativePath); - }, - - /** - * Loads all scripts from the given directory path. - */ - includeDir: function(path) { - if (!path) return; - - for (var lib = IO.ls(SYS.pwd+path), i = 0; i < lib.length; i++) - if (/\.js$/i.test(lib[i])) load(lib[i]); - } -} - -// now run the application -IO.include("frame.js"); -IO.include("main.js"); - -main(); diff --git a/build/jsdoc-toolkit/app/t/TestDoc.js b/build/jsdoc-toolkit/app/t/TestDoc.js deleted file mode 100644 index c0768b71..00000000 --- a/build/jsdoc-toolkit/app/t/TestDoc.js +++ /dev/null @@ -1,144 +0,0 @@ -var TestDoc = { - fails: 0, - plans: 0, - passes: 0, - results: [] -}; - -TestDoc.record = function(result) { - TestDoc.results.push(result); - if (typeof result.verdict == "boolean") { - if (result.verdict === false) TestDoc.fails++; - if (result.verdict === true) TestDoc.passes++; - } -} - -TestDoc.prove = function(filePath) { - if (typeof document != "undefined" && typeof document.write != "undefined") { - if (TestDoc.console) print = function(s) { TestDoc.console.appendChild(document.createTextNode(s+"\n")); } - else print = function(s) { document.write(s+"
"); } - } - TestDoc.run(TestDoc.readFile(filePath)); -} - -TestDoc.run = function(src) { - try { eval(src); } catch(e) { print("# ERROR! "+e); } - - var chunks = src.split(/\/\*t:/); - - var run = function(chunk) { - // local shortcuts - var is = TestDoc.assertEquals; - var isnt = TestDoc.assertNotEquals; - var plan = TestDoc.plan; - var requires = TestDoc.requires; - - try { eval(chunk); } catch(e) { print("# ERROR! "+e); } - } - for (var start = -1, end = 0; (start = src.indexOf("/*t:", end)) > end; start = end) { - run( - src.substring( - start+4, - (end = src.indexOf("*/", start)) - ) - ); - } -} - -TestDoc.Result = function(verdict, message) { - this.verdict = verdict; - this.message = message; -} - -TestDoc.Result.prototype.toString = function() { - if (typeof this.verdict == "boolean") { - return (this.verdict? "ok" : "not ok") + " " + (++TestDoc.report.counter) + " - " + this.message; - } - - return "# " + this.message; -} - -TestDoc.requires = function(file) { - if (!TestDoc.requires.loaded[file]) { - load(file); - TestDoc.requires.loaded[file] = true; - } -} -TestDoc.requires.loaded = {}; - -TestDoc.report = function() { - TestDoc.report.counter = 0; - print("1.."+TestDoc.plans); - for (var i = 0; i < TestDoc.results.length; i++) { - print(TestDoc.results[i]); - } - print("----------------------------------------"); - if (TestDoc.fails == 0 && TestDoc.passes == TestDoc.plans) { - print("All tests successful."); - } - else { - print("Failed " + TestDoc.fails + "/" + TestDoc.plans + " tests, "+((TestDoc.plans == 0)? 0 : Math.round(TestDoc.passes/(TestDoc.passes+TestDoc.fails)*10000)/100)+"% okay. Planned to run "+TestDoc.plans+", did run "+(TestDoc.passes+TestDoc.fails)+".") - } -} - -TestDoc.plan = function(n, message) { - TestDoc.plans += n; - TestDoc.record(new TestDoc.Result(null, message+" ("+n+" tests)")); -} - -TestDoc.assertEquals = function(a, b, message) { - var result = (a == b); - if (!result) message += "\n#\n# " + a + " does not equal " + b + "\n#"; - TestDoc.record(new TestDoc.Result(result, message)); -} - -TestDoc.assertNotEquals = function(a, b, message) { - var result = (a != b); - if (!result) message += "\n#\n# " + a + " equals " + b + "\n#"; - TestDoc.record(new TestDoc.Result(result, message)); -} - -TestDoc.readFile = (function(){ - // rhino - if (typeof readFile == "function") { - return function(url) { - var text = readFile(url); - return text || ""; - } - } - - // a web browser - else { - return function(url) { - var httpRequest; - - if (window.XMLHttpRequest) { // Mozilla, Safari, etc - httpRequest = new XMLHttpRequest(); - } - else if (window.ActiveXObject) { // IE - try { - httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); - } - catch (e) { - try { - httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); - } - catch (e) { - } - } - } - - if (!httpRequest) { throw "Cannot create HTTP Request."; } - - httpRequest.open('GET', url, false); - httpRequest.send(''); - if (httpRequest.readyState == 4) { - if (httpRequest.status >= 400) { - throw "The HTTP Request returned an error code: "+httpRequest.status; - } - } - - return httpRequest.responseText || ""; - } - } -})(); diff --git a/build/jsdoc-toolkit/app/t/runner.js b/build/jsdoc-toolkit/app/t/runner.js deleted file mode 100644 index 3f9fb4c9..00000000 --- a/build/jsdoc-toolkit/app/t/runner.js +++ /dev/null @@ -1,13 +0,0 @@ -// try: java -jar ../../jsrun.jar runner.js - -load("TestDoc.js"); - -TestDoc.prove("../frame/Opt.js"); -TestDoc.prove("../lib/JSDOC.js"); -TestDoc.prove("../frame/String.js"); -TestDoc.prove("../lib/JSDOC/DocTag.js"); -TestDoc.prove("../lib/JSDOC/DocComment.js"); -TestDoc.prove("../lib/JSDOC/TokenReader.js"); -TestDoc.prove("../lib/JSDOC/Symbol.js"); - -TestDoc.report(); diff --git a/build/jsdoc-toolkit/app/test.js b/build/jsdoc-toolkit/app/test.js deleted file mode 100644 index 8b2dc8b1..00000000 --- a/build/jsdoc-toolkit/app/test.js +++ /dev/null @@ -1,342 +0,0 @@ -load("app/frame/Dumper.js"); -function symbolize(opt) { - symbols = null; - JSDOC.JsDoc(opt); - symbols = JSDOC.JsDoc.symbolSet; -} - -var testCases = [ - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/overview.js"]}); - //print(Dumper.dump(symbols)); - is('symbols.getSymbolByName("My Cool Library").name', 'My Cool Library', 'File overview can be found by alias.'); - } - , - function() { - symbolize({_: [SYS.pwd+"test/name.js"]}); - - is('symbols.getSymbol("Response").name', "Response", 'Virtual class name is found.'); - is('symbols.getSymbol("Response#text").alias', "Response#text", 'Virtual method name is found.'); - is('symbols.getSymbol("Response#text").memberOf', "Response", 'Virtual method parent name is found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/prototype.js"]}); - - is('symbols.getSymbol("Article").name', "Article", 'Function set to constructor prototype with inner constructor name is found.'); - is('symbols.getSymbol("Article").hasMethod("init")', true, 'The initializer method name of prototype function is correct.'); - is('symbols.getSymbol("Article").hasMember("counter")', true, 'A static property set in the prototype definition is found.'); - is('symbols.getSymbol("Article").hasMember("title")', true, 'An instance property set in the prototype is found.'); - is('symbols.getSymbol("Article#title").isStatic', false, 'An instance property has isStatic set to false.'); - is('symbols.getSymbol("Article.counter").name', "counter", 'A static property set in the initializer has the name set correctly.'); - is('symbols.getSymbol("Article.counter").memberOf', "Article", 'A static property set in the initializer has the memberOf set correctly.'); - is('symbols.getSymbol("Article.counter").isStatic', true, 'A static property set in the initializer has isStatic set to true.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/prototype_oblit.js"]}); - - is('symbols.getSymbol("Article").name', "Article", 'Oblit set to constructor prototype name is found.'); - is('typeof symbols.getSymbol("Article.prototype")', "undefined", 'The prototype oblit is not a symbol.'); - is('symbols.getSymbol("Article#getTitle").name', "getTitle", 'The nonstatic method name of prototype oblit is correct.'); - is('symbols.getSymbol("Article#getTitle").alias', "Article#getTitle", 'The alias of non-static method of prototype oblit is correct.'); - is('symbols.getSymbol("Article#getTitle").isStatic', false, 'The isStatic of a nonstatic method of prototype oblit is correct.'); - is('symbols.getSymbol("Article.getTitle").name', "getTitle", 'The static method name of prototype oblit is correct.'); - is('symbols.getSymbol("Article.getTitle").isStatic', true, 'The isStatic of a static method of prototype oblit is correct.'); - is('symbols.getSymbol("Article#getTitle").isa', "FUNCTION", 'The isa of non-static method of prototype oblit is correct.'); - is('symbols.getSymbol("Article.getTitle").alias', "Article.getTitle", 'The alias of a static method of prototype oblit is correct.'); - is('symbols.getSymbol("Article.getTitle").isa', "FUNCTION", 'The isa of static method of prototype oblit is correct.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/prototype_oblit_constructor.js"]}); - - is('symbols.getSymbol("Article").name', "Article", 'Oblit set to constructor prototype with inner constructor name is found.'); - is('symbols.getSymbol("Article#init").name', "init", 'The initializer method name of prototype oblit is correct.'); - is('symbols.getSymbol("Article").hasMember("pages")', true, 'Property set by initializer method "this" is on the outer constructor.'); - is('symbols.getSymbol("Article#Title").name', "Title", 'Name of the inner constructor name is found.'); - is('symbols.getSymbol("Article#Title").memberOf', "Article", 'The memberOf of the inner constructor name is found.'); - is('symbols.getSymbol("Article#Title").isa', "CONSTRUCTOR", 'The isa of the inner constructor name is constructor.'); - is('symbols.getSymbol("Article#Title").hasMember("title")', true, 'A property set on the inner constructor "this" is on the inner constructor.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/inner.js"]}); - - is('symbols.getSymbol("Outer").name', "Outer", 'Outer constructor prototype name is found.'); - is('symbols.getSymbol("Outer").methods.length', 1, 'Inner function doesnt appear as a method of the outer.'); - is('symbols.getSymbol("Outer").hasMethod("open")', true, 'Outer constructors methods arent affected by inner function.'); - is('symbols.getSymbol("Outer-Inner").alias', "Outer-Inner", 'Alias of inner function is found.'); - is('symbols.getSymbol("Outer-Inner").isa', "CONSTRUCTOR", 'isa of inner function constructor is found.'); - is('symbols.getSymbol("Outer-Inner").memberOf', "Outer", 'The memberOf of inner function is found.'); - is('symbols.getSymbol("Outer-Inner").name', "Inner", 'The name of inner function is found.'); - is('symbols.getSymbol("Outer-Inner#name").name', "name", 'A member of the inner function constructor, attached to "this" is found on inner.'); - is('symbols.getSymbol("Outer-Inner#name").memberOf', "Outer-Inner", 'The memberOf of an inner function member is found.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/prototype_nested.js"]}); - - is('symbols.getSymbol("Word").name', "Word", 'Base constructor name is found.'); - is('symbols.getSymbol("Word").hasMethod("reverse")', true, 'Base constructor method is found.'); - is('symbols.getSymbol("Word").methods.length', 1, 'Base constructor has only one method.'); - is('symbols.getSymbol("Word").memberOf', "", 'Base constructor memberOf is empty.'); - is('symbols.getSymbol("Word#reverse").name', "reverse", 'Member of constructor prototype name is found.'); - is('symbols.getSymbol("Word#reverse").memberOf', "Word", 'Member of constructor prototype memberOf is found.'); - is('symbols.getSymbol("Word#reverse.utf8").name', "utf8", 'Member of constructor prototype method name is found.'); - is('symbols.getSymbol("Word#reverse.utf8").memberOf', "Word#reverse", 'Static nested member memberOf is found.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/namespace_nested.js"]}); - - is('symbols.getSymbol("ns1").name', "ns1", 'Base namespace name is found.'); - is('symbols.getSymbol("ns1").memberOf', "", 'Base namespace memberOf is empty (its a constructor).'); - is('symbols.getSymbol("ns1.ns2").name', "ns2", 'Nested namespace name is found.'); - is('symbols.getSymbol("ns1.ns2").alias', "ns1.ns2", 'Nested namespace alias is found.'); - is('symbols.getSymbol("ns1.ns2").memberOf', "ns1", 'Nested namespace memberOf is found.'); - is('symbols.getSymbol("ns1.ns2.Function1").name', "Function1", 'Method of nested namespace name is found.'); - is('symbols.getSymbol("ns1.ns2.Function1").memberOf', "ns1.ns2", 'Constructor of nested namespace memberOf is found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/functions_nested.js"]}); - - is('symbols.getSymbol("Zop").name', "Zop", 'Any constructor name is found.'); - is('symbols.getSymbol("Zop").isa', "CONSTRUCTOR", 'It isa constructor.'); - is('symbols.getSymbol("Zop").hasMethod("zap")', true, 'Its method name, set later, is in methods array.'); - is('symbols.getSymbol("Foo").name', "Foo", 'The containing constructor name is found.'); - is('symbols.getSymbol("Foo").hasMethod("methodOne")', true, 'Its method name is found.'); - is('symbols.getSymbol("Foo").hasMethod("methodTwo")', true, 'Its second method name is found.'); - is('symbols.getSymbol("Foo#methodOne").alias', "Foo#methodOne", 'A methods alias is found.'); - is('symbols.getSymbol("Foo#methodOne").isStatic', false, 'A methods is not static.'); - is('symbols.getSymbol("Bar").name', "Bar", 'A global function declared inside another function is found.'); - is('symbols.getSymbol("Bar").isa', "FUNCTION", 'It isa function.'); - is('symbols.getSymbol("Bar").memberOf', "_global_", 'It is global.'); - is('symbols.getSymbol("Foo-inner").name', "inner", 'An inner functions name is found.'); - is('symbols.getSymbol("Foo-inner").memberOf', "Foo", 'It is member of the outer function.'); - is('symbols.getSymbol("Foo-inner").isInner', true, 'It is an inner function.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/memberof_constructor.js"]}); - - is('symbols.getSymbol("Circle#Tangent").name', "Tangent", 'Constructor set on prototype using @member has correct name.'); - is('symbols.getSymbol("Circle#Tangent").memberOf', "Circle", 'Constructor set on prototype using @member has correct memberOf.'); - is('symbols.getSymbol("Circle#Tangent").alias', "Circle#Tangent", 'Constructor set on prototype using @member has correct alias.'); - is('symbols.getSymbol("Circle#Tangent").isa', "CONSTRUCTOR", 'Constructor set on prototype using @member has correct isa.'); - is('symbols.getSymbol("Circle#Tangent").isStatic', false, 'Constructor set on prototype using @member is not static.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").name', "getDiameter", 'Method set on prototype using @member has correct name.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").memberOf', "Circle#Tangent", 'Method set on prototype using @member has correct memberOf.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").alias', "Circle#Tangent#getDiameter", 'Method set on prototype using @member has correct alias.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").isa', "FUNCTION", 'Method set on prototype using @member has correct isa.'); - is('symbols.getSymbol("Circle#Tangent#getDiameter").isStatic', false, 'Method set on prototype using @member is not static.'); - } - , - function() { - symbolize({a:true, p: true, _: [SYS.pwd+"test/memberof.js"]}); - - is('symbols.getSymbol("pack.install").alias', "pack.install", 'Using @memberOf sets alias, when parent name is in memberOf tag.'); - is('symbols.getSymbol("pack.install.overwrite").name', "install.overwrite", 'Using @memberOf sets name, even if the name is dotted.'); - is('symbols.getSymbol("pack.install.overwrite").memberOf', "pack", 'Using @memberOf sets memberOf.'); - is('symbols.getSymbol("pack.install.overwrite").isStatic', true, 'Using @memberOf with value not ending in octothorp sets isStatic to true.'); - } - , - function() { - symbolize({a:true, p: true, _: [SYS.pwd+"test/memberof2.js"]}); - - is('symbols.getSymbol("Foo#bar").alias', "Foo#bar", 'An inner function can be documented as an instance method.'); - is('symbols.getSymbol("Foo.zip").alias', "Foo.zip", 'An inner function can be documented as a static method.'); - is('symbols.getSymbol("Foo.Fiz").alias', "Foo.Fiz", 'An inner function can be documented as a static constructor.'); - is('symbols.getSymbol("Foo.Fiz#fipple").alias', "Foo.Fiz#fipple", 'An inner function can be documented as a static constructor with a method.'); - is('symbols.getSymbol("Foo#blat").alias', "Foo#blat", 'An global function can be documented as an instance method.'); - } - , - function() { - symbolize({a:true, p: true, _: [SYS.pwd+"test/memberof3.js"]}); - - is('symbols.getSymbol("Foo#bar").alias', "Foo#bar", 'A virtual field can be documented as an instance method.'); - is('symbols.getSymbol("Foo2#bar").alias', "Foo2#bar", 'A virtual field with the same name can be documented as an instance method.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/borrows.js"]}); - - is('symbols.getSymbol("Layout").name', "Layout", 'Constructor can be found.'); - is('symbols.getSymbol("Layout").hasMethod("init")', true, 'Constructor method name can be found.'); - is('symbols.getSymbol("Layout").hasMember("orientation")', true, 'Constructor property name can be found.'); - - is('symbols.getSymbol("Page").hasMethod("reset")', true, 'Second constructor method name can be found.'); - is('symbols.getSymbol("Page").hasMember("orientation")', true, 'Second constructor borrowed property name can be found in properties.'); - is('symbols.getSymbol("Page#orientation").memberOf', "Page", 'Second constructor borrowed property memberOf can be found.'); - is('symbols.getSymbol("Page-getInnerElements").alias', "Page-getInnerElements", 'Can borrow an inner function and it is still inner.'); - is('symbols.getSymbol("Page.units").alias', "Page.units", 'Can borrow a static function and it is still static.'); - - is('symbols.getSymbol("ThreeColumnPage#init").alias', "ThreeColumnPage#init", 'Third constructor method can be found even though method with same name is borrowed.'); - is('symbols.getSymbol("ThreeColumnPage#reset").alias', "ThreeColumnPage#reset", 'Borrowed method can be found.'); - is('symbols.getSymbol("ThreeColumnPage#orientation").alias', "ThreeColumnPage#orientation", 'Twice borrowed method can be found.'); - - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/borrows2.js"]}); - - is('symbols.getSymbol("Foo").hasMethod("my_zop")', true, 'Borrowed method can be found.'); - is('symbols.getSymbol("Bar").hasMethod("my_zip")', true, 'Second borrowed method can be found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/constructs.js"]}); - - is('symbols.getSymbol("Person").hasMethod("say")', true, 'The constructs tag creates a class that lends can add a method to.'); - } - , - function() { - symbolize({a: true, _: [SYS.pwd+"test/augments.js", SYS.pwd+"test/augments2.js"]}); - - is('symbols.getSymbol("Page").augments[0]', "Layout", 'An augmented class can be found.'); - is('symbols.getSymbol("Page#reset").alias', "Page#reset", 'Method of augmenter can be found.'); - is('symbols.getSymbol("Page").hasMethod("Layout#init")', true, 'Method from augmented can be found.'); - is('symbols.getSymbol("Page").hasMember("Layout#orientation")', true, 'Property from augmented can be found.'); - is('symbols.getSymbol("Page").methods.length', 3, 'Methods of augmented class are included in methods array.'); - - is('symbols.getSymbol("ThreeColumnPage").augments[0]', "Page", 'The extends tag is a synonym for augments.'); - is('symbols.getSymbol("ThreeColumnPage").hasMethod("ThreeColumnPage#init")', true, 'Local method overrides augmented method of same name.'); - is('symbols.getSymbol("ThreeColumnPage").methods.length', 3, 'Local method count is right.'); - - is('symbols.getSymbol("NewsletterPage").augments[0]', "ThreeColumnPage", 'Can augment across file boundaries.'); - is('symbols.getSymbol("NewsletterPage").augments.length', 2, 'Multiple augments are supported.'); - is('symbols.getSymbol("NewsletterPage").inherits[0].alias', "Junkmail#annoy", 'Inherited method with augments.'); - is('symbols.getSymbol("NewsletterPage").methods.length', 6, 'Methods of augmented class are included in methods array across files.'); - is('symbols.getSymbol("NewsletterPage").properties.length', 1, 'Properties of augmented class are included in properties array across files.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/static_this.js"]}); - - is('symbols.getSymbol("box.holder").name', "holder", 'Static namespace name can be found.'); - is('symbols.getSymbol("box.holder.foo").name', "foo", 'Static namespace method name can be found.'); - is('symbols.getSymbol("box.holder").isStatic', true, 'Static namespace method is static.'); - - is('symbols.getSymbol("box.holder.counter").name', "counter", 'Instance namespace property name set on "this" can be found.'); - is('symbols.getSymbol("box.holder.counter").alias', "box.holder.counter", 'Instance namespace property alias set on "this" can be found.'); - is('symbols.getSymbol("box.holder.counter").memberOf', "box.holder", 'Static namespace property memberOf set on "this" can be found.'); - } - , - function() { - symbolize({a:true, p: true, _: [SYS.pwd+"test/lend.js"]}); - - is('symbols.getSymbol("Person").name', "Person", 'Class defined in lend comment is found.'); - is('symbols.getSymbol("Person").hasMethod("initialize")', true, 'Lent instance method name can be found.'); - is('symbols.getSymbol("Person").hasMethod("say")', true, 'Second instance method can be found.'); - is('symbols.getSymbol("Person#sing").isStatic', false, 'Instance method is known to be not static.'); - - is('symbols.getSymbol("Person.getCount").name', "getCount", 'Static method name from second lend comment can be found.'); - is('symbols.getSymbol("Person.getCount").isStatic', true, 'Static method from second lend comment is known to be static.'); - - is('LOG.warnings.filter(function($){if($.indexOf("notok") > -1) return $}).length', 1, 'A warning is emitted when lending to an undocumented parent.'); - } - , - function() { - symbolize({a:true, _: [SYS.pwd+"test/param_inline.js"]}); - - is('symbols.getSymbol("Layout").params[0].type', "int", 'Inline param name is set.'); - is('symbols.getSymbol("Layout").params[0].desc', "The number of columns.", 'Inline param desc is set from comment.'); - is('symbols.getSymbol("Layout#getElement").params[0].name', "id", 'User defined param documentation takes precedence over parser defined.'); - is('symbols.getSymbol("Layout#getElement").params[0].isOptional', true, 'Default for param is to not be optional.'); - is('symbols.getSymbol("Layout#getElement").params[1].isOptional', false, 'Can mark a param as being optional.'); - is('symbols.getSymbol("Layout#getElement").params[1].type', "number|string", 'Type of inline param doc can have multiple values.'); - is('symbols.getSymbol("Layout#Canvas").params[0].type', "", 'Type can be not defined for some params.'); - is('symbols.getSymbol("Layout#Canvas").params[2].type', "int", 'Type can be defined inline for only some params.'); - is('symbols.getSymbol("Layout#rotate").params.length', 0, 'Docomments inside function sig is ignored without a param.'); - is('symbols.getSymbol("Layout#init").params[2].type', "zoppler", 'Doc comment type overrides inline type for param with same name.'); - } - , - function() { - symbolize({a: true, _: [SYS.pwd+"test/shared.js", SYS.pwd+"test/shared2.js"]}); - - is('symbols.getSymbol("Array#some").name', 'some', 'The name of a symbol in a shared section is found.'); - is('symbols.getSymbol("Array#some").alias', 'Array#some', 'The alias of a symbol in a shared section is found.'); - is('symbols.getSymbol("Array#some").desc', "Extension to builtin array.", 'A description can be shared.'); - is('symbols.getSymbol("Array#filter").desc', "Extension to builtin array.\nChange every element of an array.", 'A shared description is appended.'); - is('symbols.getSymbol("Queue").desc', "A first in, first out data structure.", 'A description is not shared when outside a shared section.'); - is('symbols.getSymbol("Queue.rewind").alias', "Queue.rewind", 'Second shared tag can be started.'); - is('symbols.getSymbol("startOver").alias', "startOver", 'Shared tag doesnt cross over files.'); - } - , - function() { - symbolize({a: true, _: [SYS.pwd+"test/config.js"]}); - is('symbols.getSymbol("Contact").params[0].name', 'person', 'The name of a param is found.'); - is('symbols.getSymbol("Contact").params[1].name', 'person.name', 'The name of a param set with a dot name is found.'); - is('symbols.getSymbol("Contact").params[2].name', 'person.age', 'The name of a second param set with a dot name is found.'); - is('symbols.getSymbol("Contact").params[4].name', 'connection', 'The name of a param after config is found.'); - - is('symbols.getSymbol("Family").params[0].name', 'persons', 'Another name of a param is found.'); - is('symbols.getSymbol("Family").params[1].name', 'persons.Father', 'The name of a param+config is found.'); - is('symbols.getSymbol("Family").params[2].name', 'persons.Mother', 'The name of a second param+config is found.'); - is('symbols.getSymbol("Family").params[3].name', 'persons.Children', 'The name of a third param+config is found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/ignore.js"]}); - is('LOG.warnings.filter(function($){if($.indexOf("undocumented symbol Ignored") > -1) return $}).length', 1, 'A warning is emitted when documenting members of an ignored parent.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/functions_anon.js"]}); - is('symbols.getSymbol("a.b").alias', 'a.b', 'In anonymous constructor this is found to be the container object.'); - is('symbols.getSymbol("a.f").alias', 'a.f', 'In anonymous constructor this can have a method.'); - is('symbols.getSymbol("a.c").alias', 'a.c', 'In anonymous constructor method this is found to be the container object.'); - is('symbols.getSymbol("g").alias', 'g', 'In anonymous function executed inline this is the global.'); - is('symbols.getSymbol("bar2.p").alias', 'bar2.p', 'In named constructor executed inline this is the container object.'); - is('symbols.getSymbol("module.pub").alias', 'module.pub', 'In parenthesized anonymous function executed inline function scoped variables arent documented.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/oblit_anon.js"]}); - is('symbols.getSymbol("opt").name', 'opt', 'Anonymous object properties are created.'); - is('symbols.getSymbol("opt.conf.keep").alias', 'opt.conf.keep', 'Anonymous object first property is assigned to $anonymous.'); - is('symbols.getSymbol("opt.conf.base").alias', 'opt.conf.base', 'Anonymous object second property is assigned to $anonymous.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/params_optional.js"]}); - is('symbols.getSymbol("Document").params.length', 3, 'Correct number of params are found when optional param syntax is used.'); - is('symbols.getSymbol("Document").params[1].name', "id", 'Name of optional param is found.'); - is('symbols.getSymbol("Document").params[1].isOptional', true, 'Optional param is marked isOptional.'); - is('symbols.getSymbol("Document").params[2].name', "title", 'Name of optional param with default value is found.'); - is('symbols.getSymbol("Document").params[2].isOptional', true, 'Optional param with default value is marked isOptional.'); - is('symbols.getSymbol("Document").params[2].defaultValue', " This is untitled.", 'Optional param default value is found.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/synonyms.js"]}); - is('symbols.getSymbol("myObject.myFunc").type', 'function', 'Type can be set to function.'); - } - , - function() { - symbolize({a:true, p:true, _: [SYS.pwd+"test/event.js"]}); - is('symbols.getSymbol("Kitchen#event:cakeEaten").isEvent', true, 'Function with event prefix is an event.'); - is('symbols.getSymbol("Kitchen#cakeEaten").isa', "FUNCTION", 'Function with same name as event isa function.'); - } - , - function() { - symbolize({x:"js", a:true, _: [SYS.pwd+"test/scripts/"]}); - is('JSDOC.JsDoc.srcFiles.length', 1, 'Only js files are scanned when -x=js.'); - } - , - function() { - symbolize({x:"js", a:true, _: [SYS.pwd+"test/exports.js"]}); - is('symbols.getSymbol("mxn.Map#doThings").name', 'doThings', 'Exports creates a documentation alias that can have methods.'); - } - , - function() { - symbolize({p:true, a:true, _: [SYS.pwd+"test/module.js"]}); - is('symbols.getSymbol("myProject.myModule.myPublicMethod").name', 'myPublicMethod', 'A function wrapped in parens can be recognized.'); - is('symbols.getSymbol("myProject.myModule-myPrivateMethod").name', 'myPrivateMethod', 'A private method in the scope of a function wrapped in parens can be recognized.'); - is('symbols.getSymbol("myProject.myModule-myPrivateVar").name', 'myPrivateVar', 'A private member in the scope of a function wrapped in parens can be recognized.'); - } -]; - -//// run and print results -print(testrun(testCases)); diff --git a/build/jsdoc-toolkit/app/test/addon.js b/build/jsdoc-toolkit/app/test/addon.js deleted file mode 100644 index 88862053..00000000 --- a/build/jsdoc-toolkit/app/test/addon.js +++ /dev/null @@ -1,24 +0,0 @@ -String.prototype.reverse = function() { -} - -String.prototype.reverse.utf8 = function() { -} - -Function.count = function() { -} - -/** @memberOf Function */ -Function.count.reset = function() { -} - -/** @memberOf Function */ -count.getValue = function() { -} - -/** @memberOf Function.prototype */ -getSig = function() { -} - -/** @memberOf Function.prototype */ -Function.prototype.getProps = function() { -} diff --git a/build/jsdoc-toolkit/app/test/anon_inner.js b/build/jsdoc-toolkit/app/test/anon_inner.js deleted file mode 100644 index 227eeee5..00000000 --- a/build/jsdoc-toolkit/app/test/anon_inner.js +++ /dev/null @@ -1,14 +0,0 @@ -/** - * @name bar - * @namespace - */ - -new function() { - /** - * @name bar-foo - * @function - * @param {number} x - */ - function foo(x) { - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/augments.js b/build/jsdoc-toolkit/app/test/augments.js deleted file mode 100644 index 12e706eb..00000000 --- a/build/jsdoc-toolkit/app/test/augments.js +++ /dev/null @@ -1,31 +0,0 @@ -/** -@constructor -*/ -function Layout(p) { - this.init = function(p) { - } - - this.getId = function() { - } - - /** @type Page */ - this.orientation = "landscape"; -} - -/** -@constructor -@augments Layout -*/ -function Page() { - this.reset = function(b) { - } -} - -/** -@extends Page -@constructor -*/ -function ThreeColumnPage() { - this.init = function(resetCode) { - } -} diff --git a/build/jsdoc-toolkit/app/test/augments2.js b/build/jsdoc-toolkit/app/test/augments2.js deleted file mode 100644 index e8388f0f..00000000 --- a/build/jsdoc-toolkit/app/test/augments2.js +++ /dev/null @@ -1,26 +0,0 @@ -/** -@constructor -*/ -function LibraryItem() { - this.reserve = function() { - } -} - -/** -@constructor -*/ -function Junkmail() { - this.annoy = function() { - } -} - -/** -@inherits Junkmail.prototype.annoy as pester -@augments ThreeColumnPage -@augments LibraryItem -@constructor -*/ -function NewsletterPage() { - this.getHeadline = function() { - } -} diff --git a/build/jsdoc-toolkit/app/test/borrows.js b/build/jsdoc-toolkit/app/test/borrows.js deleted file mode 100644 index a5d8ea4a..00000000 --- a/build/jsdoc-toolkit/app/test/borrows.js +++ /dev/null @@ -1,46 +0,0 @@ -/** -@constructor -*/ -function Layout(p) { - /** initilize 1 */ - this.init = function(p) { - } - - /** get the id */ - this.getId = function() { - } - - /** @type string */ - this.orientation = "landscape"; - - function getInnerElements(elementSecretId){ - } -} - -/** A static method. */ -Layout.units = function() { -} - -/** -@constructor -@borrows Layout#orientation -@borrows Layout-getInnerElements -@borrows Layout.units -*/ -function Page() { - /** reset the page */ - this.reset = function(b) { - } -} - -/** -@constructor -@borrows Layout.prototype.orientation as this.orientation -@borrows Layout.prototype.init as #init -@inherits Page.prototype.reset as #reset -*/ -function ThreeColumnPage() { - /** initilize 2 */ - this.init = function(p) { - } -} diff --git a/build/jsdoc-toolkit/app/test/borrows2.js b/build/jsdoc-toolkit/app/test/borrows2.js deleted file mode 100644 index c0d5ea21..00000000 --- a/build/jsdoc-toolkit/app/test/borrows2.js +++ /dev/null @@ -1,23 +0,0 @@ -// testing circular borrows - -/** - @class - @borrows Bar#zop as this.my_zop -*/ -function Foo() { - /** this is a zip. */ - this.zip = function() {} - - this.my_zop = new Bar().zop; -} - -/** - @class - @borrows Foo#zip as this.my_zip -*/ -function Bar() { - /** this is a zop. */ - this.zop = function() {} - - this.my_zip = new Foo().zip; -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/config.js b/build/jsdoc-toolkit/app/test/config.js deleted file mode 100644 index 0748a210..00000000 --- a/build/jsdoc-toolkit/app/test/config.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * @constructor - * @param person The person. - * @param {string} person.name The person's name. - * @config {integer} age The person's age. - * @config [id=1] Optional id number to use. - * @param connection - */ -function Contact(person, connection) { - -} - -/** - * @constructor - * @param persons - * @config {string} Father The paternal person. - * @config {string} Mother The maternal person. - * @config {string[]} Children And the rest. - */ -function Family(/**Object*/persons) { - -} diff --git a/build/jsdoc-toolkit/app/test/constructs.js b/build/jsdoc-toolkit/app/test/constructs.js deleted file mode 100644 index cca5dbd3..00000000 --- a/build/jsdoc-toolkit/app/test/constructs.js +++ /dev/null @@ -1,18 +0,0 @@ -var Person = makeClass( - /** - @scope Person - */ - { - /** - This is just another way to define a constructor. - @constructs - @param {string} name The name of the person. - */ - initialize: function(name) { - this.name = name; - }, - say: function(message) { - return this.name + " says: " + message; - } - } -); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/encoding.js b/build/jsdoc-toolkit/app/test/encoding.js deleted file mode 100644 index ba642193..00000000 --- a/build/jsdoc-toolkit/app/test/encoding.js +++ /dev/null @@ -1,10 +0,0 @@ - -/** - * @Constructor - * @desc é…置文件 - * @class 什么也ä¸è¿”回 - */ -function Test(conf) { - // do something; -} - diff --git a/build/jsdoc-toolkit/app/test/encoding_other.js b/build/jsdoc-toolkit/app/test/encoding_other.js deleted file mode 100644 index b144da4c..00000000 --- a/build/jsdoc-toolkit/app/test/encoding_other.js +++ /dev/null @@ -1,12 +0,0 @@ - -/** - * @Constructor - * @desc ðïîÛ - * @class ßàáâãäåæçèçìëêíîï °±²³´µ¡¶·¸¹ - */ -function Test(conf) { - // do something; -} - -// run with commanline option -e=iso-8859-5 - diff --git a/build/jsdoc-toolkit/app/test/event.js b/build/jsdoc-toolkit/app/test/event.js deleted file mode 100644 index 7e41d6f6..00000000 --- a/build/jsdoc-toolkit/app/test/event.js +++ /dev/null @@ -1,54 +0,0 @@ -/** - * @name Kitchen - * @constructor - * @fires Bakery#event:donutOrdered - */ - -/** - * Fired when some cake is eaten. - * @name Kitchen#event:cakeEaten - * @function - * @param {Number} pieces The number of pieces eaten. - */ - -/** - * Find out if cake was eaten. - * @name Kitchen#cakeEaten - * @function - * @param {Boolean} wasEaten - */ - -/** - * @name getDesert - * @function - * @fires Kitchen#event:cakeEaten - */ - -/** - * @name Bakery - * @constructor - * @extends Kitchen - */ - -/** - * Fired when a donut order is made. - * @name Bakery#event:donutOrdered - * @event - * @param {Event} e The event object. - * @param {String} [e.topping] Optional sprinkles. - */ - -/** - * @constructor - * @borrows Bakery#event:donutOrdered as this.event:cakeOrdered - */ -function CakeShop() { -} - -/** @event */ -CakeShop.prototype.icingReady = function(isPink) { -} - -/** @event */ -function amHungry(/**Boolean*/enoughToEatAHorse) { -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/exports.js b/build/jsdoc-toolkit/app/test/exports.js deleted file mode 100644 index 63a87cb4..00000000 --- a/build/jsdoc-toolkit/app/test/exports.js +++ /dev/null @@ -1,14 +0,0 @@ -/** @namespace */ -var mxn = {}; - -(function(){ - /** @exports Map as mxn.Map */ - var Map = - /** @constructor */ - mxn.Map = function() { - }; - - /** A method. */ - Map.prototype.doThings = function() { - }; -})(); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/functions_anon.js b/build/jsdoc-toolkit/app/test/functions_anon.js deleted file mode 100644 index e9dd6c1b..00000000 --- a/build/jsdoc-toolkit/app/test/functions_anon.js +++ /dev/null @@ -1,39 +0,0 @@ -/** an anonymous constructor executed inline */ -a = new function() { - /** a.b*/ - this.b = 1; - /** a.f */ - this.f = function() { - /** a.c */ - this.c = 2; - } -} - - -/** - named function executed inline -*/ -bar1 = function Zoola1() { - /** property of global */ - this.g = 1; -}(); - -/** - named constructor executed inline -*/ -bar2 = new function Zoola2() { - /** property of bar */ - this.p = 1; -}; - -/** module pattern */ -module = (function () { - /** won't appear in documentation */ - var priv = 1; - - /** @scope module */ - return { - /** will appear as a property of module */ - pub: 1 - } -})(); diff --git a/build/jsdoc-toolkit/app/test/functions_nested.js b/build/jsdoc-toolkit/app/test/functions_nested.js deleted file mode 100644 index f044fafe..00000000 --- a/build/jsdoc-toolkit/app/test/functions_nested.js +++ /dev/null @@ -1,33 +0,0 @@ -/** @constructor */ -function Zop() { -} - -/** - @class -*/ -Foo = function(id) { - // this is a bit twisted, but if you call Foo() you will then - // modify Foo(). This is kinda, sorta non-insane, because you - // would have to call Foo() 100% of the time to use Foo's methods - Foo.prototype.methodOne = function(bar) { - alert(bar); - }; - - // same again - Foo.prototype.methodTwo = function(bar2) { - alert(bar2); - }; - - // and these are only executed if the enclosing function is actually called - // and who knows if that will ever happen? - Bar = function(pez) { - alert(pez); - }; - Zop.prototype.zap = function(p){ - alert(p); - }; - - // but this is only visible inside Foo - function inner() { - } -}; diff --git a/build/jsdoc-toolkit/app/test/global.js b/build/jsdoc-toolkit/app/test/global.js deleted file mode 100644 index 5ea48949..00000000 --- a/build/jsdoc-toolkit/app/test/global.js +++ /dev/null @@ -1,13 +0,0 @@ -/** ecks */ -var x = [1, 2, 4]; - -var y = { - foo: function(){ - } -} - -bar = function() { -} - -function zop() { -} diff --git a/build/jsdoc-toolkit/app/test/globals.js b/build/jsdoc-toolkit/app/test/globals.js deleted file mode 100644 index 3f83fb1f..00000000 --- a/build/jsdoc-toolkit/app/test/globals.js +++ /dev/null @@ -1,25 +0,0 @@ -function example(/**Circle*/a, b) { - /** a global defined in function */ - var number = a; - - var hideNumber = function(){ - } - - setNumber = function(){ - } - alert('You have chosen: ' + b); -} - -function initPage() { - var supported = document.createElement && document.getElementsByTagName; - if (!supported) return; - // start of DOM script - var x = document.getElementById('writeroot'); - // etc. -} - -/** an example var */ -var document = new Document(x, y); - -var getNumber = function(){ -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/ignore.js b/build/jsdoc-toolkit/app/test/ignore.js deleted file mode 100644 index d3fac9ed..00000000 --- a/build/jsdoc-toolkit/app/test/ignore.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * A test constructor. - * @constructor - * @ignore - */ -function Ignored() { - /** a method */ - this.bar = function() { - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/inner.js b/build/jsdoc-toolkit/app/test/inner.js deleted file mode 100644 index 37cfa9dc..00000000 --- a/build/jsdoc-toolkit/app/test/inner.js +++ /dev/null @@ -1,16 +0,0 @@ -/** - * @constructor - */ -function Outer() { - /** - * @constructor - */ - function Inner(name) { - /** The name of this. */ - this.name = name; - } - - this.open = function(name) { - return (new Inner(name)); - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/jsdoc_test.js b/build/jsdoc-toolkit/app/test/jsdoc_test.js deleted file mode 100644 index 08177128..00000000 --- a/build/jsdoc-toolkit/app/test/jsdoc_test.js +++ /dev/null @@ -1,477 +0,0 @@ -/** - * @fileoverview This file is to be used for testing the JSDoc parser - * It is not intended to be an example of good JavaScript OO-programming, - * nor is it intended to fulfill any specific purpose apart from - * demonstrating the functionality of the - * JSDoc parser - * - * @author Gabriel Reid gab_reid@users.sourceforge.net - * @version 0.1 - */ - - -/** - * Construct a new Shape object. - * @class This is the basic Shape class. - * It can be considered an abstract class, even though no such thing - * really existing in JavaScript - * @constructor - * @throws MemoryException if there is no more memory - * @throws GeneralShapeException rarely (if ever) - * @return {Shape|Coordinate} A new shape. - */ -function Shape(){ - - /** - * This is an example of a function that is not given as a property - * of a prototype, but instead it is assigned within a constructor. - * For inner functions like this to be picked up by the parser, the - * function that acts as a constructor must be denoted with - * the @constructor tag in its comment. - * @type String - */ - this.getClassName = function(){ - return "Shape"; - } - - /** - * This is an inner method, just used here as an example - * @since version 0.5 - * @author Sue Smart - */ - function addReference(){ - // Do nothing... - } - -} - -/** - * Create a new Hexagon instance. - * @extends Shape - * @class Hexagon is a class that is a logical sublcass of - * {@link Shape} (thanks to the @extends tag), but in - * reality it is completely unrelated to Shape. - * @param {int} sideLength The length of one side for the new Hexagon - * @example - * var h = new Hexagon(2); - * @example - * if (hasHex) { - * hex = new Hexagon(5); - * color = hex.getColor(); - * } - */ -function Hexagon(sideLength) { -} - - -/** - * This is an unattached (static) function that adds two integers together. - * @param {int} One The first number to add - * @param {int} Two The second number to add - * @author Gabriel Reid - * @deprecated So you shouldn't use it anymore! Use {@link Shape#getClassName} instead. - */ -function Add(One, Two){ - return One + Two; -} - - -/** - * The color of this shape - * @type Color - */ -Shape.prototype.color = null; - -/** - * The border of this shape. - * @field - * @type int - */ -Shape.prototype.border = function(){return border;}; - -/* - * These are all the instance method implementations for Shape - */ - -/** - * Get the coordinates of this shape. It is assumed that we're always talking - * about shapes in a 2D location here. - * @requires The {@link Shape} class - * @returns A Coordinate object representing the location of this Shape - * @type Coordinate[] - */ -Shape.prototype.getCoords = function(){ - return this.coords; -} - -/** - * Get the color of this shape. - * @see #setColor - * @see The Color library. - * @link Shape - * @type Color - */ -Shape.prototype.getColor = function(){ - return this.color; -} - -/** - * Set the coordinates for this Shape - * @param {Coordinate} coordinates The coordinates to set for this Shape - */ -Shape.prototype.setCoords = function(coordinates){ - this.coords = coordinates; -} - -/** - * Set the color for this Shape - * @param {Color} color The color to set for this Shape - * @param other There is no other param, but it can still be documented if - * optional parameters are used - * @throws NonExistantColorException (no, not really!) - * @see #getColor - */ -Shape.prototype.setColor = function(color){ - this.color = color; -} - -/** - * Clone this shape - * @returns A copy of this shape - * @type Shape - * @author Gabriel Reid - */ -Shape.prototype.clone = function(){ - return new Shape(); -} - -/** - * Create a new Rectangle instance. - * @class A basic rectangle class, inherits from Shape. - * This class could be considered a concrete implementation class - * @constructor - * @param {int} width The optional width for this Rectangle - * @param {int} height Thie optional height for this Rectangle - * @author Gabriel Reid - * @see Shape is the base class for this - * @augments Shape - * @hilited - */ -function Rectangle(width, // This is the width - height // This is the height - ){ - if (width){ - this.width = width; - if (height){ - this.height = height; - } - } -} - - -/* Inherit from Shape */ -Rectangle.prototype = new Shape(); - -/** - * Value to represent the width of the Rectangle. - *
Text in bold and italic and a - * link to SourceForge - * @private - * @type int - */ -Rectangle.prototype.width = 0; - -/** - * Value to represent the height of the Rectangle - * @private - * @type int - */ -Rectangle.prototype.height = 0; - -/** - * Get the type of this object. - * @type String - */ -Rectangle.prototype.getClassName= function(){ - return "Rectangle"; -} - -/** - * Get the value of the width for the Rectangle - * @type int - * @see Rectangle#setWidth - */ -Rectangle.prototype.getWidth = function(){ - return this.width; -} - -/** - * Get the value of the height for the Rectangle. - * Another getter is the {@link Shape#getColor} method in the - * {@link Shape} base class. - * @return The height of this Rectangle - * @type int - * @see Rectangle#setHeight - */ -Rectangle.prototype.getHeight = function(){ - return this.height; -} - -/** - * Set the width value for this Rectangle. - * @param {int} width The width value to be set - * @see #setWidth - */ -Rectangle.prototype.setWidth = function(width){ - this.width = width; -} - -/** - * Set the height value for this Rectangle. - * @param {int} height The height value to be set - * @see #getHeight - */ -Rectangle.prototype.setHeight = function(height){ - this.height = height; -} - -/** - * Get the value for the total area of this Rectangle - * @return total area of this Rectangle - * @type int - */ -Rectangle.prototype.getArea = function(){ - return width * height; -} - - -/** - * Create a new Square instance. - * @class A Square is a subclass of {@link Rectangle} - * @param {int} width The optional width for this Rectangle - * @param {int} height The optional height for this Rectangle - * @augments Rectangle - */ -function Square(width, height){ - if (width){ - this.width = width; - if (height){ - this.height = height; - } - } - -} - -/* Square is a subclass of Rectangle */ -Square.prototype = new Rectangle(); - -/** - * Set the width value for this Shape. - * @param {int} width The width value to be set - * @see #getWidth - */ -Square.prototype.setWidth = function(width){ - this.width = this.height = width; -} - -/** - * Set the height value for this Shape - * Sets the {@link Rectangle#height} attribute in the Rectangle. - * @param {int} height The height value to be set - */ -Square.prototype.setHeight = function(height){ - this.height = this.width = height; -} - - -/** - * Create a new Circle instance based on a radius. - * @class Circle class is another subclass of Shape - * @extends Shape - * @param {int} radius The optional radius of this {@link Circle } - * @mixin Square.prototype.setWidth as this.setDiameter - */ -function Circle(radius){ - if (radius) { - /** The radius of the this Circle. */ - this.radius = radius; - } -} - -/* Circle inherits from {@link Shape} */ -Circle.prototype = new Shape(); - -/** - * The radius value for this Circle - * @private - * @type int - */ -Circle.prototype.radius = 0; - -/** - * A very simple class (static) field that is also a constant - * @final - * @type float - */ -Circle.PI = 3.14; - -/** - * Get the radius value for this Circle - * @type int - * @see #setRadius - */ -Circle.prototype.getRadius = function(){ - return this.radius; -} - -/** - * Set the radius value for this Circle - * @param {int} radius The {@link Circle#radius} value to set - * @see #getRadius - */ -Circle.prototype.setRadius = function(radius){ - this.radius = radius; -} - -/** - * An example of a class (static) method that acts as a factory for Circle - * objects. Given a radius value, this method creates a new Circle. - * @param {int} radius The radius value to use for the new Circle. - * @type Circle - */ -Circle.createCircle = function(radius){ - return new Circle(radius); -} - - -/** - * Create a new Coordinate instance based on x and y grid data. - * @class Coordinate is a class that can encapsulate location information. - * @param {int} [x=0] The optional x portion of the Coordinate - * @param {int} [y=0] The optinal y portion of the Coordinate - */ -function Coordinate(x, y){ - if (x){ - this.x = x; - if (y){ - this.y = y; - } - } -} - -/** - * The x portion of the Coordinate - * @type int - * @see #getX - * @see #setX - */ -Coordinate.prototype.x = 0; - -/** - * The y portion of the Coordinate - * @type int - * @see #getY - * @see #setY - */ -Coordinate.prototype.y = 0; - -/** - * Gets the x portion of the Coordinate. - * @type int - * @see #setX - */ -Coordinate.prototype.getX = function(){ - return this.x; -} - -/** - * Get the y portion of the Coordinate. - * @type int - * @see #setY - */ -Coordinate.prototype.getY = function(){ - return this.y; -} - -/** - * Sets the x portion of the Coordinate. - * @param {int} x The x value to set - * @see #getX - */ -Coordinate.prototype.setX = function(x){ - this.x = x; -} - -/** - * Sets the y portion of the Coordinate. - * @param {int} y The y value to set - * @see #getY - */ -Coordinate.prototype.setY = function(y){ - this.y = y; -} - -/** - * @class This class exists to demonstrate the assignment of a class prototype - * as an anonymous block. - */ -function ShapeFactory(){ -} - -ShapeFactory.prototype = { - /** - * Creates a new {@link Shape} instance. - * @return A new {@link Shape} - * @type Shape - */ - createShape: function(){ - return new Shape(); - } -} - -/** - * An example of a singleton class - * @param ... Arguments represent {@link coordinate}s in the shape. - * @constructor - */ -MySingletonShapeFactory = function(){ - - /** - * Get the next {@link Shape} - * @type Shape - * @return A new {@link Shape} - */ - this.getShape = function(){ - return null; - } - -} - - -/** - * Create a new Foo instance. - * @class This is the Foo class. It exists to demonstrate 'nested' classes. - * @constructor - * @see Foo.Bar - */ -function Foo(){} - -/** - * Creates a new instance of Bar. - * @class This class exists to demonstrate 'nested' classes. - * @constructor - * @see Foo.Bar - */ -function Bar(){} - -/** - * Nested class - * @constructor - */ -Foo.Bar = function(){ - /** The x. */ this.x = 2; -} - -Foo.Bar.prototype = new Bar(); -/** The y. */ -Foo.Bar.prototype.y = '3'; diff --git a/build/jsdoc-toolkit/app/test/lend.js b/build/jsdoc-toolkit/app/test/lend.js deleted file mode 100644 index 92b15d5a..00000000 --- a/build/jsdoc-toolkit/app/test/lend.js +++ /dev/null @@ -1,33 +0,0 @@ - /** @class */ -var Person = Class.create( - /** - @lends Person.prototype - */ - { - initialize: function(name) { - this.name = name; - }, - say: function(message) { - return this.name + ': ' + message; - } - } - ); - -/** @lends Person.prototype */ -{ - /** like say but more musical */ - sing: function(song) { - } -} - -/** @lends Person */ -{ - getCount: function() { - } -} - -/** @lends Unknown.prototype */ -{ - notok: function() { - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/memberof.js b/build/jsdoc-toolkit/app/test/memberof.js deleted file mode 100644 index 883bbdeb..00000000 --- a/build/jsdoc-toolkit/app/test/memberof.js +++ /dev/null @@ -1,19 +0,0 @@ -/** @constructor */ -pack = function() { - this.init = function(){} - function config(){} -} - - pack.build = function(task) {}; - -/** @memberOf pack */ -pack.install = function() {} - -/** @memberOf pack */ -pack.install.overwrite = function() {} - -/** @memberOf pack */ -clean = function() {} - -/** @memberOf pack-config */ -install = function() {}; diff --git a/build/jsdoc-toolkit/app/test/memberof2.js b/build/jsdoc-toolkit/app/test/memberof2.js deleted file mode 100644 index bc3d9d8f..00000000 --- a/build/jsdoc-toolkit/app/test/memberof2.js +++ /dev/null @@ -1,38 +0,0 @@ -/** - * @constructor - */ -function Foo() { - /** - @memberOf Foo.prototype - */ - function bar(a, b) { - } - - /** - @memberOf Foo - */ - var zip = function(p, q) { - } - - /** - @memberOf Foo - */ - function zop( x,y ) { - } - - /** - @memberOf Foo - @constructor - */ - function Fiz() { - /** A method of Foo#Fiz. */ - this.fipple = function(fop){} - } -} - -/** - @memberOf Foo# - */ -var blat = function() { - -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/memberof3.js b/build/jsdoc-toolkit/app/test/memberof3.js deleted file mode 100644 index 8c259425..00000000 --- a/build/jsdoc-toolkit/app/test/memberof3.js +++ /dev/null @@ -1,33 +0,0 @@ -/** -* @name Foo -* @class -*/ - -/**#@+ -* @memberOf Foo# -* @field -*/ - -/** -* @name bar -* @type Object[] -*/ - -/**#@-*/ - -/** -* @name Foo2 -* @class -*/ - -/**#@+ -* @memberOf Foo2# -* @field -*/ - -/** -* @name bar -* @type Object[] -*/ - -/**#@-*/ \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/memberof_constructor.js b/build/jsdoc-toolkit/app/test/memberof_constructor.js deleted file mode 100644 index 80fde735..00000000 --- a/build/jsdoc-toolkit/app/test/memberof_constructor.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @constructor */ -function Circle(){} - -/** - @constructor - @memberOf Circle# - */ -Circle.prototype.Tangent = function(){}; - -// renaming Circle#Tangent to Circle#Circle#Tangent - -/** - @memberOf Circle#Tangent# - */ -Circle.prototype.Tangent.prototype.getDiameter = function(){}; - - diff --git a/build/jsdoc-toolkit/app/test/module.js b/build/jsdoc-toolkit/app/test/module.js deleted file mode 100644 index 5b3fe42c..00000000 --- a/build/jsdoc-toolkit/app/test/module.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @namespace */ -myProject = myProject || {}; - -/** @namespace */ -myProject.myModule = (function () { - /** describe myPrivateVar here */ - var myPrivateVar = ""; - - var myPrivateMethod = function () { - } - - /** @scope myProject.myModule */ - return { - myPublicMethod: function () { - } - }; -})(); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/multi_methods.js b/build/jsdoc-toolkit/app/test/multi_methods.js deleted file mode 100644 index bab35c76..00000000 --- a/build/jsdoc-toolkit/app/test/multi_methods.js +++ /dev/null @@ -1,25 +0,0 @@ - -/** - Get the entire flavor. - @name flavor^3 - @function - @returns {Object} The entire flavor hash. -*/ -/** - Get a named flavor. - @name flavor^2 - @function - @param {String} name The name of the flavor to get. - @returns {String} The value of that flavor. -*/ -/** - Set the flavor. - @param {String} name The name of the flavor to set. - @param {String} value The value of the flavor. - @returns {String} The value of that flavor. -*/ -function flavor(name, value) { - if (arguments.length > 1) flavor[name] = value; - else if (arguments.length == 1) return flavor[name]; - else return flavor; -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/name.js b/build/jsdoc-toolkit/app/test/name.js deleted file mode 100644 index e88a51a7..00000000 --- a/build/jsdoc-toolkit/app/test/name.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - @name Response - @class -*/ - -Response.prototype = { - /** - @name Response#text - @function - @description - Gets the body of the response as plain text - @returns {String} - Response as text - */ - - text: function() { - return this.nativeResponse.responseText; - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/namespace_nested.js b/build/jsdoc-toolkit/app/test/namespace_nested.js deleted file mode 100644 index 46cafa2f..00000000 --- a/build/jsdoc-toolkit/app/test/namespace_nested.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - @namespace This is the first namespace. -*/ -ns1 = {}; - -/** - This is the second namespace. - @namespace -*/ -ns1.ns2 = {}; - -/** - This part of ns1.ns2 - @constructor -*/ -ns1.ns2.Function1 = function() { -}; - -ns1.staticFunction = function() { -}; - -/** A static field in a namespace. */ -ns1.ns2.staticField = 1; diff --git a/build/jsdoc-toolkit/app/test/nocode.js b/build/jsdoc-toolkit/app/test/nocode.js deleted file mode 100644 index 1cf99bc9..00000000 --- a/build/jsdoc-toolkit/app/test/nocode.js +++ /dev/null @@ -1,13 +0,0 @@ -/**#nocode+*/ - /** - @name star - @function - */ - function blahblah() { - - } -/**#nocode-*/ - -function yaddayadda() { - -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/oblit_anon.js b/build/jsdoc-toolkit/app/test/oblit_anon.js deleted file mode 100644 index 8d9e9413..00000000 --- a/build/jsdoc-toolkit/app/test/oblit_anon.js +++ /dev/null @@ -1,20 +0,0 @@ -/** the options */ -opt = Opt.get( - arguments, - { - d: "directory", - c: "conf", - "D[]": "define" - } -); - -/** configuration */ -opt.conf = { - /** keep */ - keep: true, - /** base */ - base: getBase(this, {p: properties}) -} - - - diff --git a/build/jsdoc-toolkit/app/test/overview.js b/build/jsdoc-toolkit/app/test/overview.js deleted file mode 100644 index 1dfc09b1..00000000 --- a/build/jsdoc-toolkit/app/test/overview.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * @overview This "library" contains a - * lot of classes and functions. - * @example -

-	var x (x < 1);
-	alert("This 'is' \"code\"");
- 
- * @name My Cool Library - * @author Joe Smith jsmith@company.com - * @version 0.1 - */ - -/** - * Gets the current foo - * @param {String} fooId The unique identifier for the foo. - * @return {Object} Returns the current foo. - */ -function getFoo(fooID){ -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/param_inline.js b/build/jsdoc-toolkit/app/test/param_inline.js deleted file mode 100644 index 09845b28..00000000 --- a/build/jsdoc-toolkit/app/test/param_inline.js +++ /dev/null @@ -1,37 +0,0 @@ -/** - @constructor - @param columns The number of columns. -*/ -function Layout(/**int*/columns){ - /** - @param [id] The id of the element. - @param elName The name of the element. - */ - this.getElement = function( - /** string */ elName, - /** number|string */ id - ) { - }; - - /** - @constructor - */ - this.Canvas = function(top, left, /**int*/width, height) { - /** Is it initiated yet? */ - this.initiated = true; - } - - this.rotate = function(/**nothing*/) { - } - - /** - @param x - @param y - @param {zoppler} z*/ - this.init = function(x, y, /**abbler*/z) { - /** The xyz. */ - this.xyz = x+y+z; - this.getXyz = function() { - } - } -} diff --git a/build/jsdoc-toolkit/app/test/params_optional.js b/build/jsdoc-toolkit/app/test/params_optional.js deleted file mode 100644 index 18bf5982..00000000 --- a/build/jsdoc-toolkit/app/test/params_optional.js +++ /dev/null @@ -1,8 +0,0 @@ - -/** - * @param {Page[]} pages - * @param {number} [id] Specifies the id, if applicable. - * @param {String} [title = This is untitled.] Specifies the title. - */ -function Document(pages, id, title){ -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/prototype.js b/build/jsdoc-toolkit/app/test/prototype.js deleted file mode 100644 index 11470083..00000000 --- a/build/jsdoc-toolkit/app/test/prototype.js +++ /dev/null @@ -1,17 +0,0 @@ -/** @constructor */ -function Article() { -} - -Article.prototype.init = function(title) { - /** the instance title */ - this.title = title; - - /** the static counter */ - Article.counter = 1; -} - -a = new Article(); -a.Init("my title"); - -print(a.title); -print(Article.counter); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/prototype_nested.js b/build/jsdoc-toolkit/app/test/prototype_nested.js deleted file mode 100644 index e8ca1ced..00000000 --- a/build/jsdoc-toolkit/app/test/prototype_nested.js +++ /dev/null @@ -1,9 +0,0 @@ -/** @constructor */ -function Word() { -} - -Word.prototype.reverse = function() { -} - -Word.prototype.reverse.utf8 = function() { -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/prototype_oblit.js b/build/jsdoc-toolkit/app/test/prototype_oblit.js deleted file mode 100644 index 6cfc39ca..00000000 --- a/build/jsdoc-toolkit/app/test/prototype_oblit.js +++ /dev/null @@ -1,13 +0,0 @@ -/** @constructor */ -function Article() { -} - -Article.prototype = { - /** instance get title */ - getTitle: function(){ - } -} - -/** static get title */ -Article.getTitle = function(){ -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/prototype_oblit_constructor.js b/build/jsdoc-toolkit/app/test/prototype_oblit_constructor.js deleted file mode 100644 index 92482486..00000000 --- a/build/jsdoc-toolkit/app/test/prototype_oblit_constructor.js +++ /dev/null @@ -1,24 +0,0 @@ -/** @constructor */ -function Article() { -} - -Article.prototype = { - /** @constructor */ - Title: function(title) { - /** the value of the Title instance */ - this.title = title; - }, - - init: function(pages) { - /** the value of the pages of the Article instance */ - this.pages = pages; - } -} - -f = new Article(); -f.init("one two three"); - -t = new f.Title("my title"); - -print(f.pages); -print(t.title); \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/public.js b/build/jsdoc-toolkit/app/test/public.js deleted file mode 100644 index 35d34f6f..00000000 --- a/build/jsdoc-toolkit/app/test/public.js +++ /dev/null @@ -1,10 +0,0 @@ -/**@constructor*/ -function Foo() { - /** - @public - @static - @field - */ - var bar = function(x) { - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/scripts/code.js b/build/jsdoc-toolkit/app/test/scripts/code.js deleted file mode 100644 index e9d7ed2e..00000000 --- a/build/jsdoc-toolkit/app/test/scripts/code.js +++ /dev/null @@ -1,5 +0,0 @@ -/** - @class - */ -function thisiscode() { -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/scripts/notcode.txt b/build/jsdoc-toolkit/app/test/scripts/notcode.txt deleted file mode 100644 index fcd737e7..00000000 --- a/build/jsdoc-toolkit/app/test/scripts/notcode.txt +++ /dev/null @@ -1,5 +0,0 @@ -(This is not code) -function foo(){{{{ -( -! -@ \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/shared.js b/build/jsdoc-toolkit/app/test/shared.js deleted file mode 100644 index e1c277a6..00000000 --- a/build/jsdoc-toolkit/app/test/shared.js +++ /dev/null @@ -1,42 +0,0 @@ - -/** - * Builtin object. - * @class - * @name Array - */ - -/**#@+ - * Extension to builtin array. - * @memberOf Array - * @method - */ - -/** - * @returns Boolen if some array members... - */ -Array.prototype.some = function(){}; - -/** - * Change every element of an array. - * @returns Filtered array copy. - */ -Array.prototype.filter = function(){}; - -/**#@-*/ - - -/** - * A first in, first out data structure. - * @constructor - */ -Queue = function(){}; - -/**#@+ - * Extension to Queue. - * @memberOf Queue - */ - -rewind = function(){ -} - -// should close automatically here. \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/shared2.js b/build/jsdoc-toolkit/app/test/shared2.js deleted file mode 100644 index 3f7736a7..00000000 --- a/build/jsdoc-toolkit/app/test/shared2.js +++ /dev/null @@ -1,2 +0,0 @@ -startOver = function(){ -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/shortcuts.js b/build/jsdoc-toolkit/app/test/shortcuts.js deleted file mode 100644 index f738f1e1..00000000 --- a/build/jsdoc-toolkit/app/test/shortcuts.js +++ /dev/null @@ -1,22 +0,0 @@ -// /**#=+ -// * { -// * 'D': 'Date.prototype', -// * '$N': 'Number' -// * } -// */ -// var D = Date.prototype, -// $N = Number; -// -// D.locale = function(){ -// }; -// -// /** -// @return {string} The cardinal number string. -// */ -// $N.nth = function(n){ -// }; -// -// LOAD.file = function(){ -// } -// -// /**#=-*/ \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/static_this.js b/build/jsdoc-toolkit/app/test/static_this.js deleted file mode 100644 index 9407b20f..00000000 --- a/build/jsdoc-toolkit/app/test/static_this.js +++ /dev/null @@ -1,13 +0,0 @@ -/** the parent */ -var box = {}; - -/** @namespace */ -box.holder = {} - -box.holder.foo = function() { - /** the counter */ - this.counter = 1; -} - -box.holder.foo(); -print(box.holder.counter); diff --git a/build/jsdoc-toolkit/app/test/synonyms.js b/build/jsdoc-toolkit/app/test/synonyms.js deleted file mode 100644 index 09066b98..00000000 --- a/build/jsdoc-toolkit/app/test/synonyms.js +++ /dev/null @@ -1,31 +0,0 @@ -/** - @class - @inherits Bar#zop as #my_zop -*/ -function Foo() { - /** this is a zip. */ - this.zip = function() {} - - /** from Bar */ - this.my_zop = new Bar().zop; -} - -/** - @class - @borrows Foo#zip as this.my_zip -*/ -function Bar() { - /** this is a zop. */ - this.zop = function() {} - - /** from Foo */ - this.my_zip = new Foo().zip; -} - -/** @namespace */ -var myObject = { - /** - @type function - */ - myFunc: getFunction() -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/tosource.js b/build/jsdoc-toolkit/app/test/tosource.js deleted file mode 100644 index 706d4765..00000000 --- a/build/jsdoc-toolkit/app/test/tosource.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * @param {Object} object - * @return {string} - */ -function valueOf(object) {} - -/** - * @param {Object} object - * @return {string} - */ -function toString(object) {} - -/** - * @param {Object} object - * @return {string} - */ -function toSource(object) {} - -/** - * @param {Object} object - * @return {string} - */ -function constructor(object) {} \ No newline at end of file diff --git a/build/jsdoc-toolkit/app/test/variable_redefine.js b/build/jsdoc-toolkit/app/test/variable_redefine.js deleted file mode 100644 index 2c07da09..00000000 --- a/build/jsdoc-toolkit/app/test/variable_redefine.js +++ /dev/null @@ -1,14 +0,0 @@ -/** @constructor */ -function Foo() { - var bar = 1; - bar = 2; // redefining a private - - this.baz = 1; - baz = 2; // global - - /** a private */ - var blap = { - /** in here */ - tada: 1 - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/changes.txt b/build/jsdoc-toolkit/changes.txt deleted file mode 100644 index b0acbab7..00000000 --- a/build/jsdoc-toolkit/changes.txt +++ /dev/null @@ -1,124 +0,0 @@ -== 2.4.0 == - - * Fixed bug that added mutiple symbols with the same name to docs. - * Added support for the -m option to suppress warnings for multiple docs. - * Added patch by brownsea42 to support quoted user variables on the command line. ( issue #281 ) - * Fixed bug that sometimes caused links to events to be incorrect. ( issue #292 ) - -== 2.3.3 == - - * Fixed bug that made all fields declared with the @property tag static. ( issue #262 ) - * Minor fix to better handle trailing slash on path to template (from jwmetrocat). ( issue #237 ) - * Fix for @memberOf when applied to inner members. ( issue #264 ) - * Fix for @memberOf when applied to symbols documented with @name. ( issue #260 ) - * Applied patch from kunhualqk, fix for bug where @link to borrowed member did not resolve to parent class. ( issue #218 ) - * Fix for @requires not linking back to the required class - * Added experimental support for @constructs to have an argument, the class name, when applied to a function assignment. - -== 2.3.2 == - - * Minor update to the usage notes and corrected the version number displayed in the output. - -== 2.3.1 == - - * Fixed HTML typo in allfiles template. ( issue #228 ) - * Modified template to display version information for classes. - * Modified template to better support multiple methods with the same name. - * Fixed bug that caused template to error when backtick characters appeared around class names. - -== 2.3.0 == - - * Added option -u, --unique to avoid bug that causes multiple symbols with names that differ only by case to overwrite each others output on case-insensitive filesystems. ( issue #162 ) - * Fixed bug where {@links} in @deprecated tags did not resolve. ( issue #220 ) - * Fixed bug that caused parens around a function to make it to be unrecognized. ( issue #213 ) - * Fixed bug prevented explicit links to named anchors from working (thanks katgao.pku). ( issue #215 ) - * Fixed bug that prevented full description from appearing in file overview. ( issue #224 ) - -== 2.2.1 == - - * Fixed bug with class template, where sorting of methods was accidentally removed (thanks dezfowler). - * Added missing test files for the @exports unit tests. - -== 2.2.0 == - - * Fixed bug that caused exception when given a folder containing non-js files, even with the x commandline option set to "js". ( issue #193 ) - * Fixed typo in index template [patch submitted by olle]. ( issue #198 ) - * Modified @borrows tag experimentally to allow for missing "as ..." clause. - * Added support for the @exports tag, to allow one symbol to be documented as another. - * Added support for the -S option to document code following the Secure Modules pattern. - -== 2.1.0 == - - * Added support for the @event tag. - * Fixed bug that prevented the : character from appearing in symbol names. - * Fixed bug that prevented underscored symbols marked with @public being tagged as private. (issue #184 ) - * Fixed bug that randomly affected the @memberOf tag when the name of the symbol did not include the parent name. - * Fixed bug that prevented templates that were not in the jsdoc-toolkit folder from being found. ( issue #176 ) - * Added ability to check for trailing slash on template path. ( issue #177 ) - * Modified classDesc so that it no longer is appended with the constructor desc. - * Fixed call to plugin onDocCommentSrc. - * Added missing support for inline doc comments for function return types. ( issue #189 ) - * Added command line option -q, --quiet. - * Added command line option -E, --exclude. ( issue #143 ) - * Added 2 more hooks for plugins. ( issue #163 ) - * Added support for extending built-ins. ( issue #160 ) - * Added "compact" option to JSDOC.JsPlate.prototype.process. ( issue #159 ) - * @augments no longer documents static members as inherited. ( issue #138 ) - * @link to a class now goes to the page for that class, not the constructor. ( issue #178 ) - * Warnings of mismatched curly brace now include filename. ( issue #166 ) - * Fixed bug affecting template paths loaded via a configuration file when the trailing slash is missing. ( issue #191 ) - * Minor optimizations. - -== 2.0.2 == - - * Fixed bug that sometimes caused an example of division in the source code to be interpretted as a regex by the JsDoc Toolkit analyzer. ( issue #158 ) - * Fixed a bug that prevented private variables marked as @public from appearing in the documentation. ( issue #161 ) - * Fixed bug that prevented variable names with underscored properties from appearing in summaries. ( issue #173 ) - -== 2.0.1 == - - * Fixed bug that prevented @fileOverview tag from being recognized. - * Added support for @fieldOf as a synonym for @field plus @memberOf. - * Added support for @name tag in a @fileOverview comment to control the displayed name of the file. - * Added support for multiple @example tags. ( issue #152 ) - * Modified style sheet of jsdoc template to make more readable. ( issue #151 ) - * Fixed bug that prevented @since documentation from displaying correctly when it appeared in a class. ( issue #150 ) - * Fixed bug that caused inhertited properties to sometimes not resolve correctly. ( issue #144 ) - * Modified so that trailing whitespace in @example is always trimmed. ( issue #153 ) - * Added support for elseif to JsPlate. (hat tip to fredck) - * Added support for @location urls in the @overview comment to the jsdoc template. - -== Changes From Versions 1.4.0 to 2.0.0 == - - * Upgraded included version of Rhino from 1.6 to 1.7R1. - * Removed circular references in parsed documentation objects. - * Improved inheritance handling, now properties and events can be inherited same as methods. - * Improved handling of cross-file relationships, now having two related objects in separate files is not a problem. - * Improved ability to recognize membership of previously defined objects. - * Added ability to redefine parsing behavior with plugins. - * @methodOf is a synonym for @function and @memberOf. - * Added @default to document default values of members that are objects. - * Added ability to parse and refer to inner functions. - * Fixed bug that appeared when calling a method to set properties of the instance referred to by "this". - * Added ability to automatically create links to other symbols. - * New "jsdoc" template now produces fully W3C valid XHTML. - * Inline parameter type hint comments are now documented. - * Fixed error: Locally scoped variables (declared with var) no longer appear as global. - * It is now possible to run JsDoc Toolkit from any directory. - * Added support for inline {@link ...} tags. - * Added support for the -H command-line option to allow for custom content handlers. - * Tag names @inherits and @scope changed to @borrows and @lends. - ? Combining @constructor in a doclet with @lends now supported. - * Multiple @lend tags now supported. - * Added support for the @constructs tag, used inside a @lends block. - * Added support for the @constant tag. - * Fixed bug that prevented the use of [] as a default value. - * Added support for the @field tag. - * Added support for the @public tag (applied to inner functions). - * @namespace tag can now be applied to functions, not just object literals. - * Added support for the -s command line option to suppress source code output. - * Added new unit test framework. - * Underscored symbols are now treated as if they have a @private tag by default. - * Improved support for anonymous constructors. - * Added support for the nocode meta tag. - \ No newline at end of file diff --git a/build/jsdoc-toolkit/conf/docs.conf b/build/jsdoc-toolkit/conf/docs.conf deleted file mode 100644 index 6dcd1fc1..00000000 --- a/build/jsdoc-toolkit/conf/docs.conf +++ /dev/null @@ -1,30 +0,0 @@ -/* - This is an example of one way you could set up a configuration file to more - conveniently define some commandline options. You might like to do this if - you frequently reuse the same options. Note that you don't need to define - every option in this file, you can combine a configuration file with - additional options on the commandline if your wish. - - You would include this configuration file by running JsDoc Toolkit like so: - java -jar jsrun.jar app/run.js -c=conf/sample.conf - -*/ - -{ - // source files to use - _: ['../../src'], - - r: 2, - - // document all functions, even uncommented ones - a: false, - - // including those marked @private - p: false, - - // use this directory as the output directory - d: "../../dist/docs", - - // use this template - t: "templates/jsdoc" -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/conf/templates.conf b/build/jsdoc-toolkit/conf/templates.conf deleted file mode 100644 index 301e9130..00000000 --- a/build/jsdoc-toolkit/conf/templates.conf +++ /dev/null @@ -1,30 +0,0 @@ -/* - This is an example of one way you could set up a configuration file to more - conveniently define some commandline options. You might like to do this if - you frequently reuse the same options. Note that you don't need to define - every option in this file, you can combine a configuration file with - additional options on the commandline if your wish. - - You would include this configuration file by running JsDoc Toolkit like so: - java -jar jsrun.jar app/run.js -c=conf/sample.conf - -*/ - -{ - // source files to use - _: ['../../src'], - - r: 2, - - // document all functions, even uncommented ones - a: false, - - // including those marked @private - p: false, - - // use this directory as the output directory - d: "../../dist/templates", - - // use this template - t: "templates/jsdoc" -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/java/build.xml b/build/jsdoc-toolkit/java/build.xml deleted file mode 100644 index bb845ce3..00000000 --- a/build/jsdoc-toolkit/java/build.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/build/jsdoc-toolkit/java/build_1.4.xml b/build/jsdoc-toolkit/java/build_1.4.xml deleted file mode 100644 index ab408a4c..00000000 --- a/build/jsdoc-toolkit/java/build_1.4.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/build/jsdoc-toolkit/java/classes/js.jar b/build/jsdoc-toolkit/java/classes/js.jar deleted file mode 100755 index e2dade3371347d407e54859eb120190313e7ce07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1069510 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
4#?jqPY+>EI!5Fkn6ZBRe8Ym;JOSEY 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
    M&`B6O%lU%G@;OBeBeAS!0O)t{RFua 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

    ui@H481t+~oNJSt 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�&R6ewMdp^ov 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 F{{ZN+?*0G( diff --git a/build/jsdoc-toolkit/java/src/JsDebugRun.java b/build/jsdoc-toolkit/java/src/JsDebugRun.java deleted file mode 100755 index 319a5c67..00000000 --- a/build/jsdoc-toolkit/java/src/JsDebugRun.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A trivial bootstrap class that simply adds the path to the - * .js file as an argument to the Rhino call. This little hack - * allows the code in the .js file to have access to it's own - * path via the Rhino arguments object. This is necessary to - * allow the .js code to find resource files in a location - * relative to itself. - * - * USAGE: java -jar jsdebug.jar path/to/file.js - */ -public class JsDebugRun { - public static void main(String[] args) { - String[] jsargs = {"-j="+args[0]}; - - String[] allArgs = new String[jsargs.length + args.length]; - System.arraycopy(args, 0, allArgs, 0, args.length); - System.arraycopy(jsargs, 0, allArgs, args.length ,jsargs.length); - - org.mozilla.javascript.tools.debugger.Main.main(allArgs); - } -} diff --git a/build/jsdoc-toolkit/java/src/JsRun.java b/build/jsdoc-toolkit/java/src/JsRun.java deleted file mode 100644 index 25f519a9..00000000 --- a/build/jsdoc-toolkit/java/src/JsRun.java +++ /dev/null @@ -1,21 +0,0 @@ -/** - * A trivial bootstrap class that simply adds the path to the - * .js file as an argument to the Rhino call. This little hack - * allows the code in the .js file to have access to it's own - * path via the Rhino arguments object. This is necessary to - * allow the .js code to find resource files in a location - * relative to itself. - * - * USAGE: java -jar jsrun.jar path/to/file.js - */ -public class JsRun { - public static void main(String[] args) { - String[] jsargs = {"-j="+args[0]}; - - String[] allArgs = new String[jsargs.length + args.length]; - System.arraycopy(args, 0, allArgs, 0, args.length); - System.arraycopy(jsargs, 0, allArgs, args.length ,jsargs.length); - - org.mozilla.javascript.tools.shell.Main.main(allArgs); - } -} diff --git a/build/jsdoc-toolkit/jsdebug.jar b/build/jsdoc-toolkit/jsdebug.jar deleted file mode 100644 index a0ac7daa6bfa2633f1e2d27696b8afa8577e986b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1307 zcmWIWW@h1H0D;(^G7B&RN^ml;F!;KLIO=-(x#|Bq#lR2%Rm#B-15_Gh=^Z)&sB{?+ zivTfPsjs7-r<-eVh@P*T@0pE!O$H*Z5BGZBf7s?J9KC|AJ+Gr%P373Zt1%C?1ay4! z4L`nZJ^S^yzhCRRY9aU1#Ru-b(2LaT^9st^7=T_lsq$iQI1#K0f`^nq8gOKMVSdQfSeUUE)iadB?oX}?1b zBDT(rPHVY39z=hf=+J1g%QbR^G{+GaA)!adn0$kSZY|SQ`w^bkknx87N8mBZgD!HL zccec%cXIFZdB4B@eaF1xNNa=XkxG?{9L@&<{R$@wX17jhFezhslhl9QuAjN-!`8f4 zaWflEKbysJ(0cXipcmS^JSUv8yIOUsTS>ZWeUC&qk4`XQtNg9% zGShSOd#ytyQynaSbUJkZX1Fe;JcFZGVA>9CDfb7`TleVyJU=C1`VJ=bpTaJmVjMqx zeiJrB!D?-{JZiMm3U6pj0Y-}fFj~05(Skch1iisA@`8)WaAHf#j*U*us!MZkB{kJQ zW$QRr*C3xdN6_bqVRv=fJKLS#&+Lr9|K6^Fdk$xW;~e*<<82IlA2}xRm`8eWdL(-v zFe|Hg^XY~%NBqlW@1}BCXx>)fxEGb%>*Rmcw`t0kfVZpkS0$}Tb6;8Amsi$xvyDS= zHOt1ILXK5-rI)YwZhLm&TkE^69kntY7Doj8dpeTme6SGR*eBt*;?ceDXJ;-e_m5rs zG_Z43Zg$%21q!->nw&6s01TzTcq0cCEWWsI0r}7M*Gbh5zyv6N7d1 zJ*UnreLn4SVAZwNc@nD*S>&C*nCt&h=X8PS_ef)&rEa;dY&q_4SR7_dHCcBte2&sW ziAnAX`TJWmjMJmmDfonQOlg|WVX~9I;H+R%=LLbpnY))1a_oyc`*YKO4^GpWr;9h) zyQv(1nreSM@2BCS$@_jV26!_vi7?|X5`ZxR1Og0i9YHia*Fy>jm{#mX1V{r2ENRpR zl5nj^1qQ-$hzaOf6s#R=!doDTo?+2-qo*Ws{n6SHjpF>5PkvDf-E2& E061^!ZU6uP diff --git a/build/jsdoc-toolkit/jsrun.jar b/build/jsdoc-toolkit/jsrun.jar deleted file mode 100644 index 5e7afc4e61c2342dee998a1e0f7b9b4cdc30d909..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1293 zcmWIWW@h1H0D;$Y4%&ekP=b?zg~8V~#8KDN&rSc|DF%iBs8SAwS3sqvvs_;{0hLY# zVi6#QEA@5s^K^3!4$<><^F3|Ie@H=u<-y#R{|8nu2dwFw$ZMT>>4?P+`;Rl7q`WFJ z9_^o=*Z2MIT@KAX6ISg>UbsO;yXTcf@k{?0Hv5Gc*G@GX&EaKT_$YYZzTEl{H@jVP z-~8TtW5=9yk>^jYPTMT#H0dypOIXZ{Z+>rgs#UgHMJ_C9;m_DFG^uZilE^uW-;4-1 zzW}<~Lt^%oOhyI<3nm5z0ic_`id|BZO4EZ%^YoH)5{rv-15f)MauBg~Zgg79)$t(u z<3xu>lf>xMg?S1B!k!)-(%dG#o|&_Qd_Jtd!*KBi|A)mr#!a0zX@%#{%$;0)-uCiym{PkT(Mud>BH7U$+(#fr=QJYIcU9m zb>NHDZLSke*DW_(IwEk4TxlZr<+wj9Cp)(8F zWUm+4+}xa7tWbWlW!JM)rCIt$3A>Zj84l?zE$rU+NQCp~1QW)}->NP%JwLzKI#e>% z!SY9^L-%in>$4PQaP$gJ+ac7O{Gm7M-t<4|UMsv~8YlnJRH|I3@UyZ^+edKj)ua5V z(Q>_&`AG^eS`2{E!VQiVEHT0q#_IB6?T?P74zo6_-E={eB}s{svoN`p&D-ntmZL2H zPw@)${$;Q~WuZLdM6%fTGk2t{9EV!T6C%{tL$mp^A~C1Crw#7 zBGfzdr*Rl{ubkbOS7Oq>P5;|ER+&d02MqlxQds9a>N&o%!S@KKQ|R})gmb2Qt6yd2 z_IrioMjKnRxE8j~T6!gCiIc#`HTH>`g)>*2sZV@S6*XUBl~tcrPV~144!`URwA@#& z@d%w!I(^#ZslTtS&XZVm#vK^En6DX`M3`|G0>Bsn0s)4%jvyMI&mlzuOe^+60i*#0mNaSu zNw`*|A_8GK2LrY&3f2xb;XaT=&#>sa(NhvacNs8kc@@LcRe(1u8%UA`2)_VnW)=_+ E0A}6x82|tP diff --git a/build/jsdoc-toolkit/jsrun.sh b/build/jsdoc-toolkit/jsrun.sh deleted file mode 100644 index 74ca79c0..00000000 --- a/build/jsdoc-toolkit/jsrun.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/bin/ksh - -# launcher script for jsdoc -# Author: Avi Deitcher -# -# This program is released under the MIT License as follows: - -# Copyright (c) 2008-2009 Atomic Inc -# -#Permission is hereby granted, free of charge, to any person -#obtaining a copy of this software and associated documentation -#files (the "Software"), to deal in the Software without -#restriction, including without limitation the rights to use, -#copy, modify, merge, publish, distribute, sublicense, and/or sell -#copies of the Software, and to permit persons to whom the -#Software is furnished to do so, subject to the following -#conditions: -## -#The above copyright notice and this permission notice shall be -#included in all copies or substantial portions of the Software. -# -#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -#EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -#OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -#NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -#HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -#WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -#FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -#OTHER DEALINGS IN THE SOFTWARE. -# - - -if [[ -n "$JSDOCDIR" ]]; then - _DOCDIR="-Djsdoc.dir=$JSDOCDIR" - _APPDIR="$JSDOCDIR/app" - _BASEDIR="$JSDOCDIR" -else - _DOCDIR="" - _APPDIR="./app" - _BASEDIR="." -fi - -if [[ -n "$JSDOCTEMPLATEDIR" ]]; then - _TDIR="-Djsdoc.template.dir=$JSDOCTEMPLATEDIR" -else - _TDIR="" -fi - -CMD="java $_DOCDIR $_TDIR -jar $_BASEDIR/jsrun.jar $_APPDIR/run.js $@" -echo $CMD -$CMD - diff --git a/build/jsdoc-toolkit/templates/jsdoc/classLayout.js b/build/jsdoc-toolkit/templates/jsdoc/classLayout.js deleted file mode 100644 index edf13ac7..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/classLayout.js +++ /dev/null @@ -1,14 +0,0 @@ -var classLayout = { - '_global_': ['Global Scope:_global_'], - 'Basic Types': ['Point', 'Size', 'Rectangle', 'Matrix'], - 'Items': ['Item', 'Layer', 'Group', 'Raster', 'PlacedSymbol'], - 'Paths': ['Path', 'CompoundPath', 'Segment', 'Curve', 'PathStyle', 'ruler', - 'CurveLocation'], - 'Tools': ['Tool', 'ToolEvent', 'Key', 'KeyEvent'], - 'Projects': ['Project', 'View', 'Symbol'], - 'Colors': ['Color', 'RGBColor', 'GrayColor', 'HSBColor'], - 'Gradients': ['GradientColor', 'Gradient', 'GradientStop'], - 'Typography': ['TextItem', 'PointText', { - 'Style': ['CharacterStyle', 'ParagraphStyle'] - }] -}; \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/publish.js b/build/jsdoc-toolkit/templates/jsdoc/publish.js deleted file mode 100644 index c70e79b2..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/publish.js +++ /dev/null @@ -1,99 +0,0 @@ -/** Called automatically by JsDoc Toolkit. */ -load(JSDOC.opt.t + 'src/Symbol.js'); -load(JSDOC.opt.t + 'src/Utils.js'); -load(JSDOC.opt.t + 'src/Operator.js'); -load(JSDOC.opt.t + 'src/Render.js'); - -function publish(symbolSet) { - var renderMode = JSDOC.opt.D.renderMode; - var templates = renderMode == 'templates'; - var extension = '.html'; - var templateDir = JSDOC.opt.t || SYS.pwd + '../templates/jsdoc/'; - var outDir = JSDOC.opt.d || SYS.pwd + '../dist/docs/'; - - publish.conf = { // trailing slash expected for dirs - // Use no extensions in links for templates - ext: templates ? '' : extension, - outDir: outDir, - templateDir: templateDir, - staticDir: templateDir + 'static/', - classesDir: outDir + 'classes/', - symbolsDir: templates ? 'reference/' : 'classes/', - srcDir: 'symbols/src/', - renderMode: renderMode, - globalName: 'Global Scope' - }; - - Link.base = templates ? '/' : '../'; - - if (renderMode == 'docs') { - // Copy over the static files - Utils.copyDirectory( - new java.io.File(publish.conf.staticDir), - new java.io.File(publish.conf.outDir) - ); - } else { - Utils.deleteFiles(new File(publish.conf.outDir)); - } - // Create the classes directory - new java.io.File(publish.conf.classesDir).mkdirs(); - - // used to allow Link to check the details of things being linked to - Link.symbolSet = symbolSet; - - // get an array version of the symbolset, useful for filtering - var symbols = symbolSet.toArray(), - files = JSDOC.opt.srcFiles, - aliasSort = Utils.makeSortby('alias'), - classes = symbols.filter(Utils.isaClass).sort(aliasSort); - - // create a filemap in which outfiles must be to be named uniquely, ignoring case - // Since we want lowercase links in templates, we always use this - var filemapCounts = {}; - Link.filemap = {}; - for (var i = 0, l = classes.length; i < l; i++) { - var alias = classes[i].alias, - lcAlias = alias.toLowerCase(); - - if (!filemapCounts[lcAlias]) { - filemapCounts[lcAlias] = 1; - } else { - filemapCounts[lcAlias]++; - } - // Use lowercase links for templates - var linkAlias = templates ? lcAlias : alias; - // Rename _global_.html to global.html - if (linkAlias == '_global_') - linkAlias = 'global'; - Link.filemap[alias] = filemapCounts[lcAlias] > 1 - ? linkAlias + '_' + filemapCounts[lcAlias] : linkAlias; - } - - // create each of the class pages - for (var i = 0, l = classes.length; i < l; i++) { - var symbol = classes[i]; - - symbol.events = symbol.getEvents(); // 1 order matters - symbol.methods = symbol.getMethods(); // 2 - for (var j = 0; j < symbol.methods.length; j++) { - var method = symbol.methods[j]; - method.isOperator = Operator.isOperator(method); - } - - Link.currentSymbol = symbol; - var html = Render._class(symbol); - var name = Link.filemap[symbol.alias] + extension; - if (renderMode == 'docs') { - html = Render.html({ - content: html, - title: symbol.alias - }); - } - IO.saveFile(publish.conf.classesDir, name, html); - } - if (templates) { - IO.saveFile(publish.conf.outDir, 'packages.js', Render.packages()); - } else { - IO.saveFile(publish.conf.classesDir, 'index.html', Render.index()); - } -} \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/src/Operator.js b/build/jsdoc-toolkit/templates/jsdoc/src/Operator.js deleted file mode 100644 index e1545eb0..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/src/Operator.js +++ /dev/null @@ -1,30 +0,0 @@ -var Operator = new function() { - var operators = { - add: '+', subtract: '-', multiply: '*', divide: '/', equals: '==', - modulo: '%' - }; - var operatorNames = { - add: 'Addition', subtract: 'Subtraction', multiply: 'Multiplication', - divide: 'Division', equals: 'Comparison', modulo: 'Modulo' - }; - - return { - isOperator: function(symbol) { - // As a convention, only add non static bean properties to - // the documentation. static properties are all supposed to - // be uppercase and constants. - return symbol.params.length == 1 && !symbol.isStatic && ( - /^(add|subtract|multiply|divide|modulo)(\^[0-9])*$/.test(symbol.name) - && (symbol.operator != 'none') - ) || ( // equals - symbol.name == 'equals' - && symbol.returns.length - && symbol.returns[0].type.toLowerCase() == 'boolean' - ); - }, - - getOperator: function(symbol) { - return operators[symbol.name.replace(/\^[0-9]$/,'')]; - } - }; -}; \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/src/Render.js b/build/jsdoc-toolkit/templates/jsdoc/src/Render.js deleted file mode 100644 index 6bc30fee..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/src/Render.js +++ /dev/null @@ -1,394 +0,0 @@ -var Render = new function() { - var templatesDir = (JSDOC.opt.t || SYS.pwd + '../templates/jsdoc/') - + 'templates/'; - var templates = { - _class: 'class.tmpl', - method: 'method.tmpl', - property: 'property.tmpl', - parameters: 'parameters.tmpl', - parameter: 'parameter.tmpl', - operators: 'operators.tmpl', - returns: 'returns.tmpl', - 'return': 'return.tmpl', - seeAlsos: 'seeAlsos.tmpl', - example: 'example.tmpl', - constructor: 'constructor.tmpl', - html: 'html.tmpl', - index: 'index.tmpl', - packages: 'packages.tmpl', - operator: 'operator.tmpl' - }; - publish.classes = []; - for (var i in templates) { - templates[i] = new JSDOC.JsPlate(templatesDir + templates[i]); - } - - var processInlineTags = function(str, param) { - if (!param) - param = {}; - // .. ->

    ..
    - str = str.replace(/<(\/)*(code)>/g, '<$1pre>'); - - //
     -> 
    -		str = str.replace(/
    /g, '
    ');
    -
    -		// {@link ...} -> html links
    -		str = str.replace(/\{@link ([^} ]+) ?\}/gi,
    -			function(match, symbolName) {
    -				return new Link(true).toSymbol(symbolName.replace(/[\^]/g, '-'));
    -			}
    -		);
    -		// {@code ...} -> code blocks
    -		str = str.replace(/\{@code[\s]([^}]+)\}/gi,
    -			function(match, code) {
    -				return '' + code + '';
    -			}
    -		);
    -
    -		// {@true ...} -> true if.. false otherwise..
    -		str = str.replace(/\{@true[\s]([^}]+)\}/gi,
    -			function(match, text) {
    -				return 'true ' + text + ', false otherwise';
    -			}
    -		);
    -
    -		var lineBreak = java.lang.System.getProperty('line.separator');
    -
    -		// Convert any type of lineBreak to the one we're using now:
    -		str = str.replace(/(\r\n|\n|\r)/g, function(match, lineBreak) {
    -			return lineBreak;
    -		});
    -
    -		// Replace inline  with 
    -		str = str.replace(/[ \t]*([^\n\r]*?)[ \t]*<\/code>/g, function(match, content) {
    -			return '' + content + '';
    -		});
    -
    -		// Put code and pre tags on the same line as the content, as white-space: pre is set:
    -		str = str.replace(/(<(?:code|pre)>)\s*([\u0000-\uffff]*?)\s*(<\/(?:code|pre)>)/g, function(match, open, content, close) {
    -			// Filter out the first white space at the beginning of each line, since
    -			// that stems from the space after the * in the comment and replace 
    -			// with 
    , to fix a IE problem where lighter.js does not receive
    -			// linebreaks from code tags weven when white-space: pre is set.
    -			return '
    ' + content.replace(/(\r\n|\n|\r) /mg, function(match, lineBreak) {
    -				return lineBreak;
    -			}) + '
    '; - }); - // Empty lines -> Paragraphs - if (!param.stripParagraphs) { - if (param.wrapInParagraphs === undefined || param.wrapInParagraphs) - str = '

    ' + str.trim() + '

    '; - str = str.trim().replace(/(\r\n|\n|\r)\s*(\r\n|\n|\r)/g, function(match, lineBreak) { - return '

    ' + lineBreak + '

    '; - }); - // Automatically put

    at the end of sentences with line breaks. - // Match following

    and

    tags and swallow them. This happens when - // the original content contains these. - str = str.trim().replace(/([.:?!;])\s*(\r\n|\n|\r)(\s*)(<\/p>|

    |)/g, function(match, before, lineBreak, whiteSpace, after) { - // Include following whiteSpace as well, since for code blocks they are relevant (e.g. indentation on new line) - return before + '

    ' + lineBreak + whiteSpace + '

    '; - }); - // Filter out

    tags within and around and

     blocks again
    -			str = str.replace(/((?:

    \s*|)<(?:code|pre)[^>]*>[\u0000-\uffff]*<\/(?:code|pre)>(?:\s*<\/p>|))/g, function(match, code) { - return Utils.stripTags(code, 'p'); - }); - // Filter out empty paragraphs - str = str.replace(/

    <\/p>/g, ''); - } - - return str; - }; - - /** Build output for displaying function parameters. */ - var makeSignature = function(params) { - if (!params) return '()'; - var postString = ''; - var first = true; - params = params.filter( - function($) { - return $.name.indexOf('.') == -1; // don't show config params in signature - } - ); - var signature = ''; - var postSignature = ''; - for (var i = 0, l = params.length; i < l; i++) { - var param = params[i]; - if (param.isOptional) { - signature += '['; - postSignature += ']'; - } - if (i > 0) - signature += ', '; - signature += param.name; - } - return '(' + signature + postSignature + ')'; - }; - var paperScriptId = 0; - return { - _class: function(symbol) { - var param = { - name: symbol.alias, - description: processInlineTags(symbol.classDesc), - symbol: symbol, - constructors: symbol.getConstructors(), - properties: symbol.getProperties(), - staticProperties: symbol.getStaticProperties(), - methods: symbol.getOwnMethods(), - staticMethods: symbol.getStaticMethods(), - showConstructors: (!(/(Event|Style)/).test(symbol.alias) - && !symbol.isNamespace && !symbol.ignore - && symbol.desc.length), - inheritedClasses: symbol.getInheritedClasses() - }; - param.inheritedLinks = []; - for (var i in param.inheritedClasses) { - param.inheritedLinks.push('' + new Link(true).toSymbol(i) + ''); - } - param.inheritedLinks = param.inheritedLinks.join(', '); - // Add the grouped operators to param: - var operators = symbol.getOperators(); - if (operators.length) { - param.operators = {}; - for (var i = 0, l = operators.length; i < l; i++) { - var operator = operators[i]; - var name = operator.name.replace(/\^[0-9]$/, ''); - if (!param.operators[name]) - param.operators[name] = []; - param.operators[name].push(operator); - } - } - var name = param.name == '_global_' && publish.conf.globalName - || param.name; - publish.curClass = { - name: name, - index: { - 'class': { - title: name, - text: param.description - } - } - }; - publish.classes.push(publish.curClass); - return templates._class.process(param); - }, - constructor: function(symbol) { - var param = { - symbol: symbol, - id: symbol.getId(), - name: symbol.alias.replace(/(#|\^).+$/, ''), - description: processInlineTags(symbol.desc), - signature: makeSignature(symbol.params), - parameters: Render.parameters(symbol), - returns: Render.returns(symbol), - examples: Render.examples(symbol), - seeAlsos: Render.seeAlsos(symbol) - }; - if (symbol.returns.length == 0) { - var type = symbol.memberOf ? symbol.memberOf : symbol.alias; - symbol.returns = [{type: type, desc: ''}]; - } - publish.curClass.index[param.id] = { - title: param.name, - text: param.description - }; - return templates.constructor.process(param); - }, - method: function(symbol) { - var name = symbol.name.replace(/\^\d+$/, ''); - if (symbol.isStatic) - name = symbol.memberOf + '.' + name; - var param = { - name: name, - id: symbol.getId(), - signature: makeSignature(symbol.params), - description: processInlineTags(symbol.desc), - symbol: symbol - }; - publish.curClass.index[param.id] = { - title: param.name, - text: param.description - }; - return templates.method.process(param); - }, - property: function(symbol) { - var name = symbol.name.replace(/\^\d+$/, ''); - if (symbol.isStatic) - name = symbol.memberOf + '.' + name; - var param = { - name: name, - id: symbol.getId(), - description: processInlineTags(symbol.desc), - symbol: symbol - }; - publish.curClass.index[param.id] = { - title: param.name, - text: param.description - }; - return templates.property.process(param); - }, - parameters: function(symbol) { - return templates.parameters.process(symbol); - }, - parameter: function(symbol) { - return templates.parameter.process({ - name: symbol.name, - description: processInlineTags(symbol.desc, - {stripParagraphs: true}), - typeLink: new Link(true).toSymbol(symbol.type), - symbol: symbol - }); - }, - operators: function(symbols) { - var operatorCount = 0; - var title = []; - for (var i = 0, l = symbols.length; i < l; i++) { - var type = symbols[i].params[0].type; - type = type.charAt(0).toUpperCase() + type.slice(1); - title.push('' + Operator.getOperator(symbols[i]) + ' ' + type + ''); - } - - return templates.operators.process({ - id: symbols[0].name.toLowerCase().replace(/\^[0-9]$/, ''), - title: title.join(', '), - operators: symbols - }); - }, - operator: function(symbol, id) { - var type = symbol.params[0].type; - return templates.operator.process({ - id: id, - name: Operator.getOperator(symbol), - type: type.charAt(0).toUpperCase() + type.slice(1), - description: processInlineTags(symbol.desc), - symbol: symbol - }); - }, - returns: function(symbol) { - return templates.returns.process(symbol); - }, - 'return': function(symbol) { - return templates['return'].process({ - name: symbol.name, - description: processInlineTags(symbol.desc, - {stripParagraphs: true}), - typeLink: new Link(true).toSymbol(symbol.type), - symbol: symbol - }); - }, - seeAlsos: function(symbol) { - return templates.seeAlsos.process(symbol); - }, - examples: function(symbol) { - var out = [], - examples = symbol.example; - for (var i = 0, l = examples.length; i < l; i++) { - var example = examples[i].toString(); - - // Parse {@paperscript} inline tags - var paperScript = null; - example = example.replace(/\{@paperscript[\s]*([^}]+)*\}/, - function(tag, content) { - paperScript = { - width: 520, - height: 100, - split: 'true', - id: paperScriptId++ - }; - var pairs = tag.match(/[\S]+=[^\s}]+/g); - if (pairs) { - for (var i = 0, l = pairs.length; i < l; i++) { - var pair = pairs[i].split('='); - paperScript[pair[0]] = pair[1]; - } - } - paperScript.mode = paperScript.split == 'true' ? 'split' - : paperScript.source == 'true' ? 'source' : null; - return ''; - } - ).trim(); - - var lines = example.split('\n'), - description = []; - // The description is the first commented lines: - while (/^[\/]{2}/.test(lines[0])) { - description.push(lines.shift().replace('// ', '')); - } - - out.push(Render.example({ - description: description.join(' ').trim(), - code: lines.join('\n').trim(), - paperScript: paperScript - })); - } - return out.join('\n'); - }, - example: function(param) { - return templates.example.process(param); - }, - html: function(content) { - return templates.html.process(content); - }, - classes: function() { - // TODO: Use a template instead? - var renderMode = publish.conf.renderMode; - var out = '

      '; - - load(JSDOC.opt.t + 'classLayout.js'); - function parseClassNames(classNames) { - var out = ''; - for (var i = 0, l = classNames.length; i < l; i++) { - if (typeof classNames[i] == 'string') { - var name = classNames[i]; - out += (name == 'ruler') ? getRuler() : getLink(name); - } else { - for (var j in classNames[i]) { - out += getHeading(j); - out += parseClassNames(classNames[i][j]); - } - } - } - return out; - } - - function getLink(name) { - var link = name; - if (name.indexOf(':') > 0) { - var names = name.split(':'); - name = names[0]; - link = names[1]; - } - return '
    • ' + new Link(false).toSymbol(link) + '
    • \n'; - } - - function getRuler() { - return '

    • \n'; - } - - function getHeading(title) { - return '
    • ' + title + '

    • \n'; - } - - var first = true; - for (var i in classLayout) { - if (i != '_global_') { - out += '' : '>\n'); - out += '

      ' + i + '

      \n'; - out += '
        \n'; - } - out += parseClassNames(classLayout[i]); - if (i != '_global_') { - out += '
      \n'; - } - first = false; - } - - return out + '
    '; - }, - index: function(html) { - return templates.index.process(html); - }, - packages: function() { - return templates.packages.process(publish.classes); - } - }; -}; \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/src/Symbol.js b/build/jsdoc-toolkit/templates/jsdoc/src/Symbol.js deleted file mode 100644 index 947bbc25..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/src/Symbol.js +++ /dev/null @@ -1,78 +0,0 @@ -JSDOC.Symbol.prototype.getId = function() { - var id = this.isConstructor - ? [this.alias.replace(/([#].+$|[\^][0-9])/g, '').toLowerCase() - .replace(/[.]/, '-')] - : [this.name.toLowerCase().replace(/[\^][0-9]/g, '')]; - if (this.params) { - for (var i = 0, l = this.params.length; i < l; i++) { - var param = this.params[i]; - if (!param.isOptional) - id.push(param.name); - } - } - return id.join('-'); -}; - -JSDOC.Symbol.prototype.getOwnMethods = function(param) { - if (!param) - param = {}; - return this.methods.filter(function($) { - return $.memberOf == this.alias && !$.isNamespace - && (param.operators ? $.isOperator : !$.isOperator) - && (param.constructors ? $.isConstructor : !$.isConstructor) - && (param.statics ? $.isStatic : !$.isStatic); - }, this); -}; - -JSDOC.Symbol.prototype.getOperators = function() { - return this.getOwnMethods({ - operators: true - }); -}; - -JSDOC.Symbol.prototype.getStaticMethods = function() { - return this.getOwnMethods({ - statics: true - }); -}; - -JSDOC.Symbol.prototype.getConstructors = function() { - return [this].concat(this.getOwnMethods({ - constructors: true - })); -}; - -JSDOC.Symbol.prototype.getProperties = function(param) { - if (!param) - param = {}; - return this.properties.filter(function($) { - return $.memberOf == this.alias && !$.isNamespace && !$.isConstructor - && (param.statics ? $.isStatic : !$.isStatic); - }, this); -}; - -JSDOC.Symbol.prototype.getStaticProperties = function() { - return this.getProperties({ - statics: true - }); -}; - -JSDOC.Symbol.prototype.getInheritedClasses = function() { - var inheritedClasses = {}; - var addInherited = function(symbol) { - if (symbol.memberOf != this.alias) { - var _class = inheritedClasses[symbol.memberOf]; - if (!_class) { - _class = inheritedClasses[symbol.memberOf] = { - className: symbol.memberOf, - properties: [], - methods: [] - }; - } - _class[symbol.isa == "OBJECT" ? 'properties' : 'methods'].push(symbol); - } - }; - this.properties.map(addInherited, this); - this.methods.map(addInherited, this); - return inheritedClasses; -}; \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/src/Utils.js b/build/jsdoc-toolkit/templates/jsdoc/src/Utils.js deleted file mode 100644 index 55b1ce8a..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/src/Utils.js +++ /dev/null @@ -1,61 +0,0 @@ -var Utils = { - isaClass: function(symbol) { - return symbol.is('CONSTRUCTOR') || symbol.isNamespace; - }, - - stripTags: function(str, tag) { - var tag = tag || '.*?'; // Default: all tags - return str.replace(new RegExp('<' + tag + '>|', 'g'), ''); - }, - - copyDirectory: function(sourceLocation, targetLocation) { - if (sourceLocation.isDirectory()) { - if (!targetLocation.exists()) { - targetLocation.mkdir(); - } - - var children = sourceLocation.list(); - for (var i = 0; i < children.length; i++) { - Utils.copyDirectory(new File(sourceLocation, children[i]), - new File(targetLocation, children[i])); - } - } else { - // Copy the file with FileChannels: - targetLocation.createNewFile(); - var src = new java.io.FileInputStream(sourceLocation).getChannel(); - var dst = new java.io.FileOutputStream(targetLocation).getChannel(); - var amount = dst.transferFrom(src, 0, src.size()); - src.close(); - dst.close(); - } - }, - - deleteFiles: function(path) { - if (path.isDirectory()) { - var files = path.listFiles(); - for (var i = 0, l = files.length; i < l; i++) { - Utils.deleteFiles(files[i]); - } - } - if (!path['delete']()) - throw Error('Could not delete ' + path); - }, - - makeSortby: function(attribute) { - return function(a, b) { - if (a[attribute] != undefined && b[attribute] != undefined) { - a = a[attribute].toLowerCase(); - b = b[attribute].toLowerCase(); - if (a < b) return -1; - if (a > b) return 1; - return 0; - } - }; - }, - - /** Pull in the contents of an external file at the given path. */ - include: function(path) { - var path = publish.conf.templateDir + path; - return IO.readFile(path); - } -}; \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/index.html b/build/jsdoc-toolkit/templates/jsdoc/static/index.html deleted file mode 100644 index b815ec0d..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/static/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - -Paper.js API - - - - - - - diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/assets/bullet.gif b/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/assets/bullet.gif deleted file mode 100644 index 1789496d2e8f2b05ba41eef2d231489051507b22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 tcmZ?wbhEHbWM^PxXkcJ4H8o{mU{L(Y0wft2bU*}1hJlH>g`btd8UTw21o{8~ diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/codemirror.css b/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/codemirror.css deleted file mode 100644 index 35bc1277..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/codemirror.css +++ /dev/null @@ -1,110 +0,0 @@ -.CodeMirror, -.CodeMirror textarea, -.CodeMirror pre { - font-family: Menlo, Consolas, "Vera Mono", monospace; - font-size: 12px; -} - -.CodeMirror { - overflow: auto; - height: 100%; -} - -.CodeMirror-gutter { - position: absolute; - left: 0; - top: 0; - min-width: 30px; - height: 100%; - background-color: #f4f4f4; - border-right: 1px solid #999; -} - -.CodeMirror-gutter-text { - color: #aaa; - text-align: right; - padding: 2px 8px 2px 8px; /* 2px required for CodeMirror-selected */ -} - -.CodeMirror-gutter-text pre { - font-size: 10px; -} - -.CodeMirror-lines { - background: #ffffff; - padding: 2px 0 2px 8px; /* 2px required for CodeMirror-selected */ -} - -.CodeMirror-lines pre.highlight { - background-color: #edf5fc; -} - -/* -.CodeMirror-lines pre:hover { - background-color: #edf5fc; -} - -.CodeMirror-lines pre.highlight:hover { - background-color: #ffffff; -} -*/ - -.CodeMirror pre { - line-height: 16px; - margin: 0; - padding: 0; - background: transparent; - font-family: inherit; -} - -.CodeMirror-cursor { - z-index: 10; - position: absolute; - visibility: hidden; - border-left: 1px solid #7c7c7c !important; - height: 16px; -} - -.CodeMirror-focused .CodeMirror-cursor { - visibility: visible; -} - -span.CodeMirror-selected { - background: #ccc !important; - color: HighlightText !important; - padding: 2px 0 2px 0; -} - -.CodeMirror-focused span.CodeMirror-selected { - background: Highlight !important; -} - -.CodeMirror-matchingbracket { - background: #e3fc8d !important; -} - -.CodeMirror-nonmatchingbracket { - color: #d62a28 !important; -} - -/* JavaScript */ - -span.js-comment { - color: #8c868f; -} -span.js-keyword { - color: #ff7800; -} -span.js-atom { - color: #3b5bb5; -} -span.js-string { - color: #409b1c; -} -span.js-variable { - color: #000000; -} -span.js-variabledef, -span.js-localvariable { - color: #3a4a64; -} diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/paperscript.css b/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/paperscript.css deleted file mode 100644 index 9665fae4..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/paperscript.css +++ /dev/null @@ -1,53 +0,0 @@ -.paperscript .button { - display: none; - position: relative; /* position (top / right) relative to paperscriptcontainer */ - float: right; /* align right as block */ - font-size: 11px; - line-height: 16px; - padding: 2px 6px; - margin-bottom: -20px; /* move canvas up by 16px (height) + 2 * 2px (padding) */ - top: 8px; /* margin to top */ - right: 8px; /* margin to right */ - background: #eee; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - z-index: 1; -} - -.paperscript .source { - overflow: auto; - border: 1px solid #999; -} - -.paperscript:hover .button { - display: block; -} - -.paperscript .button:hover { - background: #ddd; - cursor: pointer; -} - -.paperscript .CodeMirror { - margin-bottom: 0; /* Override any potential bottom margins again */ -} - -.paperscript .CodeMirror-gutter-text, -.paperscript .CodeMirror-lines { - padding-top: 10px; - padding-bottom: 10px; -} - -.paperscript .canvas { - line-height: 0; /* prevent weird 5px padding under canvas elements */ -} - -.paperscript .canvas.border canvas { - border: 1px solid #999; -} - -.paperscript.split .canvas { - border: 1px solid #999; - border-top: 0; -} diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/reference.css b/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/reference.css deleted file mode 100644 index 4ba326fb..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/reference.css +++ /dev/null @@ -1,133 +0,0 @@ -/* These styles are shared with the server version of docs */ - -.reference h1, .reference h2, .reference h3 { - font-size: 13px; - font-weight: normal; - height: 18px; /* -2px so border-bottom aligns with contained links */ - border-bottom: 1px solid; - margin-top: 0; - margin-bottom: 16px; -} - -.reference h3 { - margin-top: 16px; - border-bottom-style: dotted; -} - -.reference a tt { - line-height: 18px; -} -/* -.reference a tt, -.reference a tt b { - padding-bottom: 1px; -} -*/ - -.reference p { - margin: 0 0 16px 0; -} - -.reference ul { - margin: 0; - padding: 0; - list-style: none; -} - -.reference-list ul, .reference-inherited ul { - margin-left: 16px; -} - -.reference hr { - border: none; - border-bottom: 1px dotted; -} - -.reference-packages { - margin-left: 0px; -} - -.reference-packages h2, .reference-packages h3, .reference-packages hr { - margin: 10px 0 10px 0; -} - -.reference-packages .first h2 { - margin-top: 0; -} - -* html .reference-packages img { - margin-top: 5px; -} -.reference-packages li { - list-style: none; - list-style-image: none; /* needed for ie 6 */ -} - -.reference-members { - margin-bottom: 16px; -} - -.member-group-text { - margin-bottom: 16px; -} - -.member-description { - border: 1px solid #999; - /* .member-header defines border-top for operator lists */ - border-top: 0; - margin: 16px 0 16px 0; -} - -.member-header { - border-top: 1px solid #999; - padding: 10px; -} - -.member-title { - float: left; - width: 400px; -} - -.member-close { - float: right; -} - -.member-text { - border-top: 1px dashed #999; - padding: 10px 10px 0 10px; - margin-bottom: -6px; /* Compensate margins of p and ul to end up with 10px */ -} - -.reference ul, -.reference .paperscript, -.reference .CodeMirror { - margin-top: -8px; /* Move half way up close to previous paragraph */ - margin-bottom: 16px; -} - -.reference ul { - margin-top: 0; /* Clear the above -10px for ul again */ -} - -.member-link { - text-indent: -30px; - padding-left: 30px; -} - -.reference-inherited ul li { - text-indent: -30px; - padding-left: 30px; -} - -.package-classes { - padding-bottom: 4px; -} - -.package-classes ul { - margin-left: 10px; - margin-bottom: 10px; -} - -.reference h2 a { - font-weight: bold; -} diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/style.css b/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/style.css deleted file mode 100644 index e74a2dea..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/static/resources/css/style.css +++ /dev/null @@ -1,86 +0,0 @@ -body, select, input, textarea { - font-family: "Lucida Grande", Geneva, Verdana, Arial, sans-serif; -} - -body { - background: #fff; - margin: 16px; - font-size: 13px; - line-height: 20px; - color: #000; - max-width: 540px; -} - -select, input, textarea { - font-size: 11px; - margin: 0; - color: #000; -} - -tt, pre { - font-family: Menlo, Consolas, "Vera Mono", monospace; - font-size: 12px; - line-height: 20px; -} - -a { - color: #000; - text-decoration: none; - border-bottom: 1px solid #000; -} - -img { - border: 0; -} - -a:hover { - background: #e5e5e5; -} - -p { - margin: 0 0 20px 0; -} - -ul { - padding: 0; - margin: 0 0 20px 16px; - list-style: disc outside url(assets/bullet.gif); -} - -ol { - padding: 0; - margin: 0 0 20px 0; -} - -.clear { - clear: both; -} - -.hidden { - display: none; -} - -.reference-packages, .reference-packages a { - color: #009dec; - border-bottom: 0px; -} - -/* Border-bottom color for headers and ruler */ -.reference-packages h2, .reference-packages h3, .reference-packages hr { - border-color: #009dec; -} - -.reference-packages a:hover { - background: #e3f4fc; -} - -.reference h1 { - font-size: 18px; - font-weight: normal; - line-height: 24px; - border: none; -} - -.footer { - margin-top: 20px; -} diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/bootstrap.js b/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/bootstrap.js deleted file mode 100644 index 59d03a88..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/bootstrap.js +++ /dev/null @@ -1,4040 +0,0 @@ -new function() { - var fix = !this.__proto__ && [Function, Number, Boolean, String, Array, Date, RegExp]; - if (fix) - for (var i in fix) - fix[i].prototype.__proto__ = fix[i].prototype; - - var has = {}.hasOwnProperty - ? function(obj, name) { - return (!fix || name != '__proto__') && obj.hasOwnProperty(name); - } - : function(obj, name) { - return obj[name] !== (obj.__proto__ || Object.prototype)[name]; - }; - - function inject(dest, src, enumerable, base, preserve, generics) { - - function field(name, dontCheck, generics) { - var val = src[name], func = typeof val == 'function', res = val, prev = dest[name]; - if (generics && func && (!preserve || !generics[name])) generics[name] = function(bind) { - return bind && dest[name].apply(bind, - Array.prototype.slice.call(arguments, 1)); - } - if ((dontCheck || val !== undefined && has(src, name)) && (!preserve || !prev)) { - if (func) { - if (prev && /\bthis\.base\b/.test(val)) { - var fromBase = base && base[name] == prev; - res = (function() { - var tmp = this.base; - this.base = fromBase ? base[name] : prev; - try { return val.apply(this, arguments); } - finally { tmp ? this.base = tmp : delete this.base; } - }).pretend(val); - } - } - dest[name] = res; - } - } - if (src) { - for (var name in src) - if (has(src, name) && !/^(statics|generics|preserve|prototype|constructor|__proto__|toString|valueOf)$/.test(name)) - field(name, true, generics); - field('toString'); - field('valueOf'); - } - } - - function extend(obj) { - function ctor(dont) { - if (fix) this.__proto__ = obj; - if (this.initialize && dont !== ctor.dont) - return this.initialize.apply(this, arguments); - } - ctor.prototype = obj; - ctor.toString = function() { - return (this.prototype.initialize || function() {}).toString(); - } - return ctor; - } - - inject(Function.prototype, { - inject: function(src) { - if (src) { - var proto = this.prototype, base = proto.__proto__ && proto.__proto__.constructor; - inject(proto, src, false, base && base.prototype, src.preserve, src.generics && this); - inject(this, src.statics, true, base, src.preserve); - } - for (var i = 1, l = arguments.length; i < l; i++) - this.inject(arguments[i]); - return this; - }, - - extend: function(src) { - var proto = new this(this.dont), ctor = proto.constructor = extend(proto); - ctor.dont = {}; - inject(ctor, this, true); - return arguments.length ? this.inject.apply(ctor, arguments) : ctor; - }, - - pretend: function(fn) { - this.toString = function() { - return fn.toString(); - } - this.valueOf = function() { - return fn.valueOf(); - } - return this; - } - }); - - function each(obj, iter, bind) { - return obj ? (typeof obj.length == 'number' - ? Array : Hash).prototype.each.call(obj, iter, bind) : bind; - } - - Base = Object.extend({ - has: function(name) { - return has(this, name); - }, - - each: function(iter, bind) { - return each(this, iter, bind); - }, - - inject: function() { - for (var i = 0, l = arguments.length; i < l; i++) - inject(this, arguments[i]); - return this; - }, - - extend: function() { - var res = new (extend(this)); - return res.inject.apply(res, arguments); - }, - - statics: { - has: has, - each: each, - - type: function(obj) { - return (obj || obj === 0) && ( - obj._type || obj.nodeName && ( - obj.nodeType == 1 && 'element' || - obj.nodeType == 3 && 'textnode' || - obj.nodeType == 9 && 'document') - || obj.location && obj.frames && obj.history && 'window' - || typeof obj) || null; - }, - - check: function(obj) { - return !!(obj || obj === 0); - }, - - pick: function() { - for (var i = 0, l = arguments.length; i < l; i++) - if (arguments[i] !== undefined) - return arguments[i]; - return null; - }, - - iterator: function(iter) { - return !iter - ? function(val) { return val } - : typeof iter != 'function' - ? function(val) { return val == iter } - : iter; - }, - - stop: {} - } - }, { - generics: true, - - debug: function() { - return /^(string|number|function|regexp)$/.test(Base.type(this)) ? this - : Base.each(this, function(val, key) { this.push(key + ': ' + val); }, []).join(', '); - }, - - clone: function() { - return Base.each(this, function(val, i) { - this[i] = val; - }, new this.constructor()); - }, - - toQueryString: function() { - return Base.each(this, function(val, key) { - this.push(key + '=' + encodeURIComponent(val)); - }, []).join('&'); - } - }); -} - -$each = Base.each; -$type = Base.type; -$check = Base.check; -$pick = Base.pick; -$stop = $break = Base.stop; - -Enumerable = { - generics: true, - preserve: true, - - findEntry: function(iter, bind) { - var that = this, iter = Base.iterator(iter), ret = null; - Base.each(this, function(val, key) { - var res = iter.call(bind, val, key, that); - if (res) { - ret = { key: key, value: val, result: res }; - throw Base.stop; - } - }); - return ret; - }, - - find: function(iter, bind) { - var entry = this.findEntry(iter, bind); - return entry && entry.result; - }, - - contains: function(iter) { - return !!this.findEntry(iter); - }, - - remove: function(iter, bind) { - var entry = this.findEntry(iter, bind); - if (entry) { - delete this[entry.key]; - return entry.value; - } - }, - - filter: function(iter, bind) { - var that = this; - return Base.each(this, function(val, i) { - if (iter.call(bind, val, i, that)) - this[this.length] = val; - }, []); - }, - - map: function(iter, bind) { - var that = this; - return Base.each(this, function(val, i) { - this[this.length] = iter.call(bind, val, i, that); - }, []); - }, - - every: function(iter, bind) { - var that = this; - return this.find(function(val, i) { - return !iter.call(this, val, i, that); - }, bind || null) == null; - }, - - some: function(iter, bind) { - return this.find(iter, bind || null) != null; - }, - - collect: function(iter, bind) { - var that = this, iter = Base.iterator(iter); - return Base.each(this, function(val, i) { - val = iter.call(bind, val, i, that); - if (val != null) - this[this.length] = val; - }, []); - }, - - max: function(iter, bind) { - var that = this, iter = Base.iterator(iter); - return Base.each(this, function(val, i) { - val = iter.call(bind, val, i, that); - if (val >= (this.max || val)) this.max = val; - }, {}).max; - }, - - min: function(iter, bind) { - var that = this, iter = Base.iterator(iter); - return Base.each(this, function(val, i) { - val = iter.call(bind, val, i, that); - if (val <= (this.min || val)) this.min = val; - }, {}).min; - }, - - pluck: function(prop) { - return this.map(function(val) { - return val[prop]; - }); - }, - - sortBy: function(iter, bind) { - var that = this, iter = Base.iterator(iter); - return this.map(function(val, i) { - return { value: val, compare: iter.call(bind, val, i, that) }; - }, bind).sort(function(left, right) { - var a = left.compare, b = right.compare; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.map(function(value) { - return value; - }); - } -}; - -Hash = Base.extend(Enumerable, { - generics: true, - - initialize: function(arg) { - if (typeof arg == 'string') { - for (var i = 0, l = arguments.length; i < l; i += 2) - this[arguments[i]] = arguments[i + 1]; - } else { - this.append.apply(this, arguments); - } - return this; - }, - - each: function(iter, bind) { - var bind = bind || this, iter = Base.iterator(iter), has = Base.has; - try { - for (var i in this) - if (has(this, i)) - iter.call(bind, this[i], i, this); - } catch (e) { - if (e !== Base.stop) throw e; - } - return bind; - }, - - append: function() { - for (var i = 0, l = arguments.length; i < l; i++) { - var obj = arguments[i]; - for (var key in obj) - if (Base.has(obj, key)) - this[key] = obj[key]; - } - return this; - }, - - merge: function() { - return Array.each(arguments, function(obj) { - Base.each(obj, function(val, key) { - this[key] = Base.type(this[key]) == 'object' - ? Hash.prototype.merge.call(this[key], val) - : Base.type(val) == 'object' ? Base.clone(val) : val; - }, this); - }, this); - }, - - getKeys: function() { - return Hash.getKeys(this); - }, - - getValues: Enumerable.toArray, - - getSize: function() { - return this.each(function() { - this.size++; - }, { size: 0 }).size; - }, - - statics: { - create: function(obj) { - return arguments.length == 1 && obj.constructor == Hash - ? obj : Hash.prototype.initialize.apply(new Hash(), arguments); - }, - - getKeys: Object.keys || function(obj) { - return Hash.map(function(val, key) { - return key; - }); - } - } -}); - -$H = Hash.create; - -Array.inject({ - generics: true, - preserve: true, - _type: 'array', - - forEach: function(iter, bind) { - for (var i = 0, l = this.length; i < l; i++) - iter.call(bind, this[i], i, this); - }, - - indexOf: function(obj, i) { - i = i || 0; - if (i < 0) i = Math.max(0, this.length + i); - for (var l = this.length; i < l; i++) - if (this[i] == obj) return i; - return -1; - }, - - lastIndexOf: function(obj, i) { - i = i != null ? i : this.length - 1; - if (i < 0) i = Math.max(0, this.length + i); - for (; i >= 0; i--) - if (this[i] == obj) return i; - return -1; - }, - - filter: function(iter, bind) { - var res = []; - for (var i = 0, l = this.length; i < l; i++) { - var val = this[i]; - if (iter.call(bind, val, i, this)) - res[res.length] = val; - } - return res; - }, - - map: function(iter, bind) { - var res = new Array(this.length); - for (var i = 0, l = this.length; i < l; i++) - res[i] = iter.call(bind, this[i], i, this); - return res; - }, - - every: function(iter, bind) { - for (var i = 0, l = this.length; i < l; i++) - if (!iter.call(bind, this[i], i, this)) - return false; - return true; - }, - - some: function(iter, bind) { - for (var i = 0, l = this.length; i < l; i++) - if (iter.call(bind, this[i], i, this)) - return true; - return false; - }, - - reduce: function(fn, value) { - var i = 0; - if (arguments.length < 2 && this.length) value = this[i++]; - for (var l = this.length; i < l; i++) - value = fn.call(null, value, this[i], i, this); - return value; - }, - - statics: { - isArray: function(obj) { - return Object.prototype.toString.call(obj) === '[object Array]'; - } - } -}, Enumerable, { - generics: true, - - each: function(iter, bind) { - try { - Array.prototype.forEach.call(this, Base.iterator(iter), bind = bind || this); - } catch (e) { - if (e !== Base.stop) throw e; - } - return bind; - }, - - collect: function(iter, bind) { - var that = this; - return this.each(function(val, i) { - if ((val = iter.call(bind, val, i, that)) != null) - this[this.length] = val; - }, []); - }, - - findEntry: function(iter, bind) { - if (typeof iter != 'function') { - var i = this.indexOf(iter); - return i == -1 ? null : { key: i, value: iter, result: iter }; - } - return Enumerable.findEntry.call(this, iter, bind); - }, - - remove: function(iter, bind) { - var entry = this.findEntry(iter, bind); - if (entry) { - this.splice(entry.key, 1); - return entry.value; - } - }, - - toArray: function() { - return Array.prototype.slice.call(this); - }, - - clone: function() { - return this.toArray(); - }, - - clear: function() { - this.length = 0; - }, - - compact: function() { - return this.filter(function(value) { - return value != null; - }); - }, - - append: function(items) { - for (var i = 0, l = items.length; i < l; i++) - this[this.length++] = items[i]; - return this; - }, - - associate: function(obj) { - if (!obj) - obj = this; - else if (typeof obj == 'function') - obj = this.map(obj); - if (obj.length != null) { - var that = this; - return Base.each(obj, function(name, index) { - this[name] = that[index]; - if (index == that.length) - throw Base.stop; - }, {}); - } else { - obj = Hash.append({}, obj); - return Array.each(this, function(val) { - var type = Base.type(val); - Base.each(obj, function(hint, name) { - if (hint == 'any' || type == hint) { - this[name] = val; - delete obj[name]; - throw Base.stop; - } - }, this); - }, {}); - } - }, - - flatten: function() { - return Array.each(this, function(val) { - if (val != null && val.flatten) this.append(val.flatten()); - else this.push(val); - }, []); - }, - - swap: function(i, j) { - var tmp = this[j]; - this[j] = this[i]; - this[i] = tmp; - return tmp; - }, - - shuffle: function() { - var res = this.clone(); - var i = this.length; - while (i--) res.swap(i, Math.rand(i + 1)); - return res; - }, - - pick: function() { - return this[Math.rand(this.length)]; - }, - - getFirst: function() { - return this[0]; - }, - - getLast: function() { - return this[this.length - 1]; - } -}, new function() { - function combine(subtract) { - return function(items) { - var res = new this.constructor(); - for (var i = this.length - 1; i >= 0; i--) - if (subtract == !Array.find(items, this[i])) - res.push(this[i]); - return res; - } - } - - return { - subtract: combine(true), - - intersect: combine(false) - } -}); - -Array.inject(new function() { - var proto = Array.prototype, fields = ['push','pop','shift','unshift','sort', - 'reverse','join','slice','splice','forEach','indexOf','lastIndexOf', - 'filter','map','every','some','reduce','concat'].each(function(name) { - this[name] = proto[name]; - }, { generics: true, preserve: true }); - - Array.inject(fields); - - Hash.append(fields, proto, { - clear: function() { - for (var i = 0, l = this.length; i < l; i++) - delete this[i]; - this.length = 0; - }, - - concat: function(list) { - return Browser.WEBKIT - ? new Array(this.length + list.length).append(this).append(list) - : Array.concat(this, list); - }, - - toString: proto.join, - - length: 0 - }); - - return { - statics: { - create: function(obj) { - if (obj == null) - return []; - if (obj.toArray) - return obj.toArray(); - if (typeof obj.length == 'number') - return Array.prototype.slice.call(obj); - return [obj]; - }, - - convert: function(obj) { - return Base.type(obj) == 'array' ? obj : Array.create(obj); - }, - - extend: function(src) { - var ret = Base.extend(fields, src); - ret.extend = Function.extend; - return ret; - } - } - }; -}); - -$A = Array.create; - -Function.inject(new function() { - - function timer(set) { - return function(delay, bind, args) { - var func = this.wrap(bind, args); - if (delay === undefined) - return func(); - var timer = set(func, delay); - func.clear = function() { - clearTimeout(timer); - clearInterval(timer); - }; - return func; - }; - } - - return { - generics: true, - preserve: true, - - delay: timer(setTimeout), - periodic: timer(setInterval), - - bind: function(bind) { - var that = this, slice = Array.prototype.slice, - args = arguments.length > 1 ? slice.call(arguments, 1) : null; - return function() { - return that.apply(bind, args ? arguments.length > 0 - ? args.concat(slice.call(arguments)) : args : arguments); - } - }, - - wrap: function(bind, args) { - var that = this; - return function() { - return that.apply(bind, args || arguments); - } - } - } -}); - -Number.inject({ - _type: 'number', - - limit: function(min, max) { - return Math.min(max, Math.max(min, this)); - }, - - times: function(func, bind) { - for (var i = 0; i < this; i++) - func.call(bind, i); - return bind || this; - }, - - toInt: function(base) { - return parseInt(this, base || 10); - }, - - toFloat: function() { - return parseFloat(this); - }, - - toPaddedString: function(length, base, prefix) { - var str = this.toString(base || 10); - return (prefix || '0').times(length - str.length) + str; - } -}); - -String.inject({ - _type: 'string', - - test: function(exp, param) { - return new RegExp(exp, param || '').test(this); - }, - - toArray: function() { - return this ? this.split(/\s+/) : []; - }, - - toInt: Number.prototype.toInt, - - toFloat: Number.prototype.toFloat, - - camelize: function(separator) { - return this.replace(separator ? new RegExp('[' + separator + '](\\w)', 'g') : /-(\w)/g, function(all, chr) { - return chr.toUpperCase(); - }); - }, - - uncamelize: function(separator) { - separator = separator || ' '; - return this.replace(/[a-z][A-Z0-9]|[0-9][a-zA-Z]|[A-Z]{2}[a-z]/g, function(match) { - return match.charAt(0) + separator + match.substring(1); - }); - }, - - hyphenate: function(separator) { - return this.uncamelize(separator || '-').toLowerCase(); - }, - - capitalize: function() { - return this.replace(/\b[a-z]/g, function(match) { - return match.toUpperCase(); - }); - }, - - escapeRegExp: function() { - return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1'); - }, - - trim: function(exp) { - exp = exp ? '[' + exp + ']' : '\\s'; - return this.replace(new RegExp('^' + exp + '+|' + exp + '+$', 'g'), ''); - }, - - clean: function() { - return this.replace(/\s{2,}/g, ' ').trim(); - }, - - contains: function(string, sep) { - return (sep ? (sep + this + sep).indexOf(sep + string + sep) : this.indexOf(string)) != -1; - }, - - times: function(count) { - return count < 1 ? '' : new Array(count + 1).join(this); - }, - - isHtml: function() { - return /^[^<]*(<(.|\s)+>)[^>]*$/.test(this); - } -}); - -RegExp.inject({ - _type: 'regexp' -}); - -Date.inject({ - statics: { - SECOND: 1000, - MINUTE: 60000, - HOUR: 3600000, - DAY: 86400000, - WEEK: 604800000, - MONTH: 2592000000, - YEAR: 31536000000, - - now: Date.now || function() { - return +new Date(); - } - } -}); - -Math.rand = function(first, second) { - return second == undefined - ? Math.rand(0, first) - : Math.floor(Math.random() * (second - first) + first); -} - -Array.inject({ - hexToRgb: function(toArray) { - if (this.length >= 3) { - var rgb = []; - for (var i = 0; i < 3; i++) - rgb.push((this[i].length == 1 ? this[i] + this[i] : this[i]).toInt(16)); - return toArray ? rgb : 'rgb(' + rgb.join(',') + ')'; - } - }, - - rgbToHex: function(toArray) { - if (this.length >= 3) { - if (this.length == 4 && this[3] == 0 && !toArray) return 'transparent'; - var hex = []; - for (var i = 0; i < 3; i++) { - var bit = (this[i] - 0).toString(16); - hex.push(bit.length == 1 ? '0' + bit : bit); - } - return toArray ? hex : '#' + hex.join(''); - } - }, - - rgbToHsb: function() { - var r = this[0], g = this[1], b = this[2]; - var hue, saturation, brightness; - var max = Math.max(r, g, b), min = Math.min(r, g, b); - var delta = max - min; - brightness = max / 255; - saturation = (max != 0) ? delta / max : 0; - if (saturation == 0) { - hue = 0; - } else { - var rr = (max - r) / delta; - var gr = (max - g) / delta; - var br = (max - b) / delta; - if (r == max) hue = br - gr; - else if (g == max) hue = 2 + rr - br; - else hue = 4 + gr - rr; - hue /= 6; - if (hue < 0) hue++; - } - return [Math.round(hue * 360), Math.round(saturation * 100), Math.round(brightness * 100)]; - }, - - hsbToRgb: function() { - var br = Math.round(this[2] / 100 * 255); - if (this[1] == 0) { - return [br, br, br]; - } else { - var hue = this[0] % 360; - var f = hue % 60; - var p = Math.round((this[2] * (100 - this[1])) / 10000 * 255); - var q = Math.round((this[2] * (6000 - this[1] * f)) / 600000 * 255); - var t = Math.round((this[2] * (6000 - this[1] * (60 - f))) / 600000 * 255); - switch (Math.floor(hue / 60)) { - case 0: return [br, t, p]; - case 1: return [q, br, p]; - case 2: return [p, br, t]; - case 3: return [p, q, br]; - case 4: return [t, p, br]; - case 5: return [br, p, q]; - } - } - } -}); - -String.inject({ - hexToRgb: function(toArray) { - var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/); - return hex && hex.slice(1).hexToRgb(toArray); - }, - - rgbToHex: function(toArray) { - var rgb = this.match(/\d{1,3}/g); - return rgb && rgb.rgbToHex(toArray); - } -}); - -Json = function(JSON) { - var special = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', "'" : "\\'", '\\': '\\\\' }; - return { - encode: JSON - ? function(obj, properties) { - return JSON.stringify(obj, properties || Browser.TRIDENT && function(key, value) { - return key == '__proto__' ? undefined : value; - }); - } - : function(obj, properties) { - if (Base.type(properties) == 'array') { - properties = properties.each(function(val) { - this[val] = true; - }, {}); - } - switch (Base.type(obj)) { - case 'string': - return '"' + obj.replace(/[\x00-\x1f\\"]/g, function(chr) { - return special[chr] || '\\u' + chr.charCodeAt(0).toPaddedString(4, 16); - }) + '"'; - case 'array': - return '[' + obj.collect(function(val) { - return Json.encode(val, properties); - }) + ']'; - case 'object': - case 'hash': - return '{' + Hash.collect(obj, function(val, key) { - if (!properties || properties[key]) { - val = Json.encode(val, properties); - if (val !== undefined) - return Json.encode(key) + ':' + val; - } - }) + '}'; - case 'function': - return undefined; - default: - return obj + ''; - } - return null; - }, - - decode: JSON - ? function(str, secure) { - try { - return JSON.parse(str); - } catch (e) { - return null; - } - } - : function(str, secure) { - try { - return Base.type(str) == 'string' && (str = str.trim()) && - (!secure || /^[\],:{}\s]*$/.test( - str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@") - .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]") - .replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) - ? (new Function('return ' + str))() : null; - } catch (e) { - return null; - } - } - }; -}(this.JSON); - -Browser = new function() { - var name = window.orientation != undefined ? 'ipod' - : (navigator.platform.match(/mac|win|linux|nix/i) || ['other'])[0].toLowerCase(); - var fields = { - PLATFORM: name, - XPATH: !!document.evaluate, - QUERY: !!document.querySelector - }; - fields[name.toUpperCase()] = true; - - function getVersion(prefix, min, max) { - var ver = (new RegExp(prefix + '([\\d.]+)', 'i').exec(navigator.userAgent) || [0, '0'])[1].split('.'); - return (ver.slice(0, min).join('') + '.' + ver.slice(min, max || ver.length).join('')).toFloat(); - } - - var engines = { - presto: function() { - return !window.opera ? false : getVersion('Presto/', 2) || getVersion('Opera[/ ]', 1); - }, - - trident: function() { - return !window.ActiveXObject ? false : getVersion('MSIE ', 1); - }, - - webkit: function() { - return navigator.taintEnabled ? false : getVersion('WebKit/', 1, 2); - }, - - gecko: function() { - return !document.getBoxObjectFor && window.mozInnerScreenX == null ? false : getVersion('rv:', 2); - } - }; - - for (var engine in engines) { - var version = engines[engine](); - if (version) { - fields.ENGINE = engine; - fields.VERSION = version; - engine = engine.toUpperCase(); - fields[engine] = true; - fields[(engine + version).replace(/\./g, '')] = true; - break; - } - } - - fields.log = function() { - if (!Browser.TRIDENT && window.console && console.log) - console.log.apply(console, arguments); - else - (window.console && console.log - || window.opera && opera.postError - || alert)(Array.join(arguments, ' ')); - } - - return fields; -}; - -DomNodes = Array.extend(new function() { - var unique = 0; - return { - initialize: function(nodes) { - this._unique = unique++; - this.append(nodes && nodes.length != null && !nodes.nodeType - ? nodes : arguments); - }, - - push: function() { - this.append(arguments); - return this.length; - }, - - append: function(items) { - for (var i = 0, l = items.length; i < l; i++) { - var el = items[i]; - if ((el = el && (el._wrapper || DomNode.wrap(el))) && el._unique != this._unique) { - el._unique = this._unique; - this[this.length++] = el; - } - } - return this; - }, - - toNode: function() { - return this; - }, - - statics: { - inject: function(src) { - var proto = this.prototype; - this.base(Base.each(src || {}, function(val, key) { - if (typeof val == 'function') { - var func = val, prev = proto[key]; - var count = func.length, prevCount = prev && prev.length; - val = function() { - var args = arguments, values; - if (prev && args.length == prevCount - || (args.length > count && args.length <= prevCount)) - return prev.apply(this, args); - this.each(function(obj) { - var ret = (obj[key] || func).apply(obj, args); - if (ret !== undefined && ret != obj) { - values = values || (DomNode.isNode(ret) - ? new obj._collection() : []); - values.push(ret); - } - }); - return values || this; - } - } - this[key] = val; - }, {})); - for (var i = 1, l = arguments.length; i < l; i++) - this.inject(arguments[i]); - return this; - } - } - }; -}); - -DomNode = Base.extend(new function() { - var nodes = []; - var tags = {}, classes = {}, classCheck, unique = 0; - - function dispose(force) { - for (var i = nodes.length - 1; i >= 0; i--) { - var el = nodes[i]; - if (force || (!el || el != window && el != document && - (!el.parentNode || !el.offsetParent))) { - if (el) { - var obj = el._wrapper; - if (obj && obj.finalize) obj.finalize(); - el._wrapper = el._unique = null; - } - if (!force) nodes.splice(i, 1); - } - } - } - - function inject(src) { - src = src || {}; - (src._methods || []).each(function(name) { - src[name] = function(arg) { - var ret = this.$[name] && this.$[name](arg); - return ret === undefined ? this : ret; - } - }); - (src._properties || []).each(function(name) { - var part = name.capitalize(), prop = name.toLowerCase(); - src['get' + part] = function() { - return this.getProperty(prop); - } - src['set' + part] = function(value) { - return this.setProperty(prop, value); - } - }); - delete src._methods; - delete src._properties; - return Function.inject.call(this, src); - } - - function getConstructor(el) { - var match; - return classCheck && el.className && (match = el.className.match(classCheck)) && match[2] && classes[match[2]] || - el.tagName && tags[el.tagName] || - el.className !== undefined && HtmlElement || - el.nodeType == 1 && DomElement || - el.nodeType == 3 && DomTextNode || - el.nodeType == 9 && (el.documentElement.nodeName.toLowerCase() == 'html' && HtmlDocument || DomDocument) || - el.location && el.frames && el.history && DomWindow || - DomNode; - } - - var dont = {}; - - return { - _type: 'node', - _collection: DomNodes, - _initialize: true, - - initialize: function(el, props, doc) { - if (!el) return null; - if (this._tag && Base.type(el) == 'object') { - props = el; - el = this._tag; - } - if (typeof(el) == 'string') { - el = DomElement.create(el, props, doc); - } else if (el._wrapper) { - return el._wrapper; - } - if (props === dont) { - props = null; - } else { - var ctor = getConstructor(el); - if (ctor != this.constructor) - return new ctor(el, props); - } - this.$ = el; - try { - el._wrapper = this; - nodes[nodes.length] = el; - } catch (e) {} - if (props) this.set(props); - }, - - statics: { - inject: function(src) { - if (src) { - var proto = this.prototype, that = this; - src.statics = Base.each(src, function(val, name) { - if (typeof val == 'function' && !this[name] && !that[name]) { - this[name] = function(el, param1, param2) { - if (el) try { - proto.$ = el.$ || el; - return proto[name](param1, param2); - } finally { - delete proto.$; - } - } - } - }, src.statics || {}); - inject.call(this, src); - delete src.toString; - proto._collection.inject(src); - } - for (var i = 1, l = arguments.length; i < l; i++) - this.inject(arguments[i]); - return this; - }, - - extend: function(src) { - var ret = this.base(); - var init = src.initialize; - if (init) src.initialize = function(el, props) { - var ret = this._initialize && this.base(el, props); - if (ret) return ret; - init.apply(this, arguments); - } - inject.call(ret, src); - if (ret.prototype._collection == this.prototype._collection) - ret.inject = inject; - if (src) { - if (src._tag) - tags[src._tag.toLowerCase()] = tags[src._tag.toUpperCase()] = ret; - if (src._class) { - classes[src._class] = ret; - classCheck = new RegExp('(^|\\s)(' + Base.each(classes, function(val, name) { - this.push(name); - }, []).join('|') + ')(\\s|$)'); - if (!src._lazy && src.initialize) Browser.document.addEvent('domready', function() { - this.getElements('.' + src._class); - }); - } - } - return ret; - }, - - wrap: function(el) { - return el ? typeof el == 'string' - ? DomElement.get(el) - : el._wrapper || el._collection && el || new (getConstructor(el))(el, dont) - : null; - }, - - unwrap: function(el) { - return el && el.$ || el; - }, - - unique: function(el) { - if (!el._unique) { - nodes.push(el); - el._unique = ++unique; - } - }, - - isNode: function(obj) { - return /^(element|node|textnode|document)$/.test( - typeof obj == 'string' ? obj : Base.type(obj)); - }, - - dispose: function() { - dispose(true); - } - } - } -}); - -DomNode.inject(new function() { - var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', - 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer' - ].associate(); - var properties = Hash.append({ - text: Browser.TRIDENT || Browser.WEBKIT && Browser.VERSION < 420 || Browser.PRESTO && Browser.VERSION < 9 - ? function(node) { - return node.$.innerText !== undefined ? 'innerText' : 'nodeValue' - } : 'textContent', - html: 'innerHTML', 'class': 'className', className: 'className', 'for': 'htmlFor' - }, [ - 'value', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', - 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', - 'selectedIndex', 'useMap', 'width', 'height' - ].associate(function(name) { - return name.toLowerCase(); - }), bools); - - var clones = { input: 'checked', option: 'selected', textarea: Browser.WEBKIT && Browser.VERSION < 420 ? 'innerHTML' : 'value' }; - - function handle(that, prefix, name, value) { - var ctor = that.__proto__.constructor; - var handlers = ctor.handlers = ctor.handlers || { get: {}, set: {} }; - var list = handlers[prefix]; - var fn = name == 'events' && prefix == 'set' ? that.addEvents : list[name]; - if (fn === undefined) - fn = list[name] = that[prefix + name.capitalize()] || null; - return fn - ? fn[Base.type(value) == 'array' ? 'apply' : 'call'](that, value) - : that[prefix + 'Property'](name, value); - } - - function toNodes(elements) { - var els = Base.type(elements) == 'array' ? elements : Array.create(arguments); - var created = els.find(function(el) { - return !DomNode.isNode(el); - }); - var result = els.toNode(this.getDocument()); - return { - array: result ? (Base.type(result) == 'array' ? result : [result]) : [], - result: created && result - }; - } - - var fields = { - _properties: ['text'], - - set: function(name, value) { - switch (Base.type(name)) { - case 'string': - return handle(this, 'set', name, value); - case 'object': - return Base.each(name, function(value, key) { - handle(this, 'set', key, value); - }, this); - } - return this; - }, - - get: function(name) { - return handle(this, 'get', name); - }, - - getDocument: function() { - return DomNode.wrap(this.$.ownerDocument); - }, - - getWindow: function() { - return this.getDocument().getWindow(); - }, - - getPreviousNode: function() { - return DomNode.wrap(this.$.previousSibling); - }, - - getNextNode: function() { - return DomNode.wrap(this.$.nextSibling); - }, - - getFirstNode: function() { - return DomNode.wrap(this.$.firstChild); - }, - - getLastNode: function() { - return DomNode.wrap(this.$.lastChild); - }, - - getParentNode: function() { - return DomNode.wrap(this.$.parentNode); - }, - - getChildNodes: function() { - return new DomNodes(this.$.childNodes); - }, - - hasChildNodes: function() { - return this.$.hasChildNodes(); - }, - - appendChild: function(el) { - if (el = DomNode.wrap(el)) { - var text = Browser.TRIDENT && el.$.text; - if (text) el.$.text = ''; - this.$.appendChild(el.$); - if (text) el.$.text = text; - } - return this; - }, - - appendChildren: function() { - return Array.flatten(arguments).each(function(el) { - this.appendChild($(DomNode.wrap(el))); - }, this); - }, - - appendText: function(text) { - return this.injectBottom(this.getDocument().createTextNode(text)); - }, - - prependText: function(text) { - return this.injectTop(this.getDocument().createTextNode(text)); - }, - - remove: function() { - if (this.$.parentNode) - this.$.parentNode.removeChild(this.$); - return this; - }, - - removeChild: function(el) { - el = DomNode.wrap(el); - this.$.removeChild(el.$); - return el; - }, - - removeChildren: function() { - var nodes = this.getChildNodes(); - nodes.remove(); - return nodes; - }, - - replaceWith: function(el) { - if (this.$.parentNode) { - el = toNodes.apply(this, arguments); - var els = el.array; - if (els.length > 0) - this.$.parentNode.replaceChild(els[0].$, this.$); - for (var i = els.length - 1; i > 0; i--) - els[i].insertAfter(els[0]); - return el.result; - } - return null; - }, - - wrap: function() { - var el = this.injectBefore.apply(this, arguments), last; - do { - last = el; - el = el.getFirst(); - } while(el); - last.appendChild(this); - return last; - }, - - clone: function(contents) { - var clone = this.$.cloneNode(!!contents); - function clean(left, right) { - if (Browser.TRIDENT) { - left.clearAttributes(); - left.mergeAttributes(right); - left.removeAttribute('_wrapper'); - left.removeAttribute('_unique'); - if (left.options) - for (var l = left.options, r = right.options, i = l.length; i--;) - l[i].selected = r[i].selected; - } - var name = clones[right.tagName.toLowerCase()]; - if (name && right[name]) - left[name] = right[name]; - if (contents) - for (var l = left.childNodes, r = right.childNodes, i = l.length; i--;) - clean(l[i], r[i]); - } - clean(clone, this.$); - return DomNode.wrap(clone); - }, - - hasProperty: function(name) { - var key = properties[name]; - key = key && typeof key == 'function' ? key(this) : key; - return key ? this.$[key] !== undefined : this.$.hasAttribute(name); - }, - - getProperty: function(name) { - var key = properties[name], value; - key = key && typeof key == 'function' ? key(this) : key; - var value = key ? this.$[key] : this.$.getAttribute(name); - return bools[name] ? !!value : value; - }, - - setProperty: function(name, value) { - var key = properties[name], defined = value !== undefined; - key = key && typeof key == 'function' ? key(this) : key; - if (key && bools[name]) value = value || !defined ? true : false; - else if (!defined) return this.removeProperty(name); - key ? this.$[key] = value : this.$.setAttribute(name, value); - return this; - }, - - removeProperty: function(name) { - var key = properties[name], bool = key && bools[name]; - key = key && typeof key == 'function' ? key(this) : key; - key ? this.$[key] = bool ? false : '' : this.$.removeAttribute(name); - return this; - }, - - getProperties: function() { - var props = {}; - for (var i = 0; i < arguments.length; i++) - props[arguments[i]] = this.getProperty(arguments[i]); - return props; - }, - - setProperties: function(src) { - return Base.each(src, function(value, name) { - this.setProperty(name, value); - }, this); - }, - - removeProperties: function() { - return Array.each(arguments, this.removeProperty, this); - } - }; - - var inserters = { - before: function(source, dest) { - if (source && dest && dest.$.parentNode) { - var text = Browser.TRIDENT && dest.$.text; - if (text) dest.$.text = ''; - dest.$.parentNode.insertBefore(source.$, dest.$); - if (text) dest.$.text = text; - } - }, - - after: function(source, dest) { - if (source && dest && dest.$.parentNode) { - var next = dest.$.nextSibling; - if (next) source.insertBefore(next); - else dest.getParent().appendChild(source); - } - }, - - bottom: function(source, dest) { - if (source && dest) - dest.appendChild(source); - }, - - top: function(source, dest) { - if (source && dest) { - var first = dest.$.firstChild; - if (first) source.insertBefore(first); - else dest.appendChild(source); - } - } - }; - - inserters.inside = inserters.bottom; - - Base.each(inserters, function(inserter, name) { - var part = name.capitalize(); - fields['insert' + part] = function(el) { - el = toNodes.apply(this, arguments); - for (var i = 0, list = el.array, l = list.length; i < l; i++) - inserter(i == 0 ? this : this.clone(true), list[i]); - return el.result || this; - } - - fields['inject' + part] = function(el) { - el = toNodes.apply(this, arguments); - for (var i = 0, list = el.array, l = list.length; i < l; i++) - inserter(list[i], this); - return el.result || this; - } - }); - - return fields; -}); - -DomElements = DomNodes.extend(); - -DomElement = DomNode.extend({ - _type: 'element', - _collection: DomElements, - - statics: { - get: function(selector, root) { - return (root && DomNode.wrap(root) || Browser.document).getElement(selector); - }, - - getAll: function(selector, root) { - return (root && DomNode.wrap(root) || Browser.document).getElements(selector); - }, - - create: function(tag, props, doc) { - if (Browser.TRIDENT && props) { - ['name', 'type', 'checked'].each(function(key) { - if (props[key]) { - tag += ' ' + key + '="' + props[key] + '"'; - if (key != 'checked') - delete props[key]; - } - }); - tag = '<' + tag + '>'; - } - return (DomElement.unwrap(doc) || document).createElement(tag); - }, - - isAncestor: function(el, parent) { - return !el ? false : el.ownerDocument == parent ? true - : Browser.WEBKIT && Browser.VERSION < 420 - ? Array.contains(parent.getElementsByTagName(el.tagName), el) - : parent.contains - ? parent != el && parent.contains(el) - : !!(parent.compareDocumentPosition(el) & 16) - } - } -}); - -DomElement.inject(new function() { - function walk(el, walk, start, match, all) { - var elements = all && new el._collection(); - el = el.$[start || walk]; - while (el) { - if (el.nodeType == 1 && (!match || DomElement.match(el, match))) { - if (!all) return DomNode.wrap(el); - elements.push(el); - } - el = el[walk]; - } - return elements; - } - - return { - _properties: ['id'], - - getTag: function() { - return (this.$.tagName || '').toLowerCase(); - }, - - getPrevious: function(match) { - return walk(this, 'previousSibling', null, match); - }, - - getAllPrevious: function(match) { - return walk(this, 'previousSibling', null, match, true); - }, - - getNext: function(match) { - return walk(this, 'nextSibling', null, match); - }, - - getAllNext: function(match) { - return walk(this, 'nextSibling', null, match, true); - }, - - getFirst: function(match) { - return walk(this, 'nextSibling', 'firstChild', match); - }, - - getLast: function(match) { - return walk(this, 'previousSibling', 'lastChild', match); - }, - - hasChild: function(match) { - return DomNode.isNode(match) - ? DomElement.isAncestor(DomElement.unwrap(match), this.$) - : !!this.getFirst(match); - }, - - getParent: function(match) { - return walk(this, 'parentNode', null, match); - }, - - getParents: function(match) { - return walk(this, 'parentNode', null, match, true); - }, - - hasParent: function(match) { - return DomNode.isNode(match) - ? DomElement.isAncestor(this.$, DomElement.unwrap(match)) - : !!this.getParent(match); - }, - - getChildren: function(match) { - return walk(this, 'nextSibling', 'firstChild', match, true); - }, - - hasChildren: function(match) { - return !!this.getChildren(match).length; - }, - - toString: function() { - return (this.$.tagName || this._type).toLowerCase() + - (this.$.id ? '#' + this.$.id : ''); - }, - - toNode: function() { - return this; - } - }; -}); - -$ = DomElement.get; -$$ = DomElement.getAll; - -DomTextNode = DomNode.extend({ - _type: 'textnode' -}); - -DomDocument = DomElement.extend({ - _type: 'document', - - initialize: function() { - if (Browser.TRIDENT && Browser.VERSION < 7) - try { - this.$.execCommand('BackgroundImageCache', false, true); - } catch (e) {} - }, - - createElement: function(tag, props) { - return DomNode.wrap(DomElement.create(tag, props, this.$)).set(props); - }, - - createTextNode: function(text) { - return $(this.$.createTextNode(text)); - }, - - getDocument: function() { - return this; - }, - - getWindow: function() { - return DomNode.wrap(this.$.defaultView || this.$.parentWindow); - }, - - open: function() { - this.$.open(); - }, - - close: function() { - this.$.close(); - }, - - write: function(markup) { - this.$.write(markup); - }, - - writeln: function(markup) { - this.$.writeln(markup); - } -}); - -Window = DomWindow = DomElement.extend({ - _type: 'window', - _initialize: false, - _methods: ['close', 'alert', 'prompt', 'confirm', 'blur', 'focus', 'reload'], - - getDocument: function() { - return DomNode.wrap(this.$.document); - }, - - getWindow: function() { - return this; - }, - - initialize: function(param) { - var win; - if (param.location && param.frames && param.history) { - win = this.base(param) || this; - } else { - if (typeof param == 'string') - param = { url: param }; - (['toolbar','menubar','location','status','resizable','scrollbars']).each(function(key) { - param[key] = param[key] ? 1 : 0; - }); - if (param.width && param.height) { - if (param.left == null) param.left = Math.round( - Math.max(0, (screen.width - param.width) / 2)); - if (param.top == null) param.top = Math.round( - Math.max(0, (screen.height - param.height) / 2 - 40)); - } - var str = Base.each(param, function(val, key) { - if (!/^(focus|confirm|url|name)$/.test(key)) - this.push(key + '=' + (val + 0)); - }, []).join(); - win = this.base(window.open(param.url, param.name.replace(/\s+|\.+|-+/gi, ''), str)) || this; - if (win && param.focus) - win.focus(); - } - return ['location', 'frames', 'history'].each(function(key) { - this[key] = this.$[key]; - }, win); - } -}); - -DomElement.inject(new function() { - function cumulate(name, parent, iter) { - var left = name + 'Left', top = name + 'Top'; - return function(that) { - var cur, next = that, x = 0, y = 0; - do { - cur = next; - x += cur.$[left] || 0; - y += cur.$[top] || 0; - } while((next = DomNode.wrap(cur.$[parent])) && (!iter || iter(cur, next))) - return { x: x, y: y }; - } - } - - function setBounds(fields, offset) { - return function(values) { - var vals = /^(object|array)$/.test(Base.type(values)) ? values : arguments; - if (offset) { - if (vals.x) vals.left = vals.x; - if (vals.y) vals.top = vals.y; - } - var i = 0; - return fields.each(function(name) { - var val = vals.length ? vals[i++] : vals[name]; - if (val != null) this.setStyle(name, val); - }, this); - } - } - - function isBody(that) { - return that.getTag() == 'body'; - } - - var getAbsolute = cumulate('offset', 'offsetParent', Browser.WEBKIT ? function(cur, next) { - return next.$ != document.body || cur.getStyle('position') != 'absolute'; - } : null, true); - - var getPositioned = cumulate('offset', 'offsetParent', function(cur, next) { - return next.$ != document.body && !/^(relative|absolute)$/.test(next.getStyle('position')); - }); - - var getScrollOffset = cumulate('scroll', 'parentNode'); - - var fields = { - - getSize: function() { - return isBody(this) - ? this.getWindow().getSize() - : { width: this.$.offsetWidth, height: this.$.offsetHeight }; - }, - - getOffset: function(relative, scroll) { - if (isBody(this)) - return this.getWindow().getOffset(); - if (relative && !DomNode.isNode(relative)) - return getPositioned(this); - var off = getAbsolute(this); - if (relative) { - var rel = getAbsolute(DomNode.wrap(relative)); - off = { x: off.x - rel.x, y: off.y - rel.y }; - } - if (scroll) { - scroll = this.getScrollOffset(); - off.x -= scroll.x; - off.y -= scroll.y; - } - return off; - }, - - getScrollOffset: function() { - return isBody(this) - ? this.getWindow().getScrollOffset() - : getScrollOffset(this); - }, - - getScrollSize: function() { - return isBody(this) - ? this.getWindow().getScrollSize() - : { width: this.$.scrollWidth, height: this.$.scrollHeight }; - }, - - getBounds: function(relative, scroll) { - if (isBody(this)) - return this.getWindow().getBounds(); - var off = this.getOffset(relative, scroll), - el = this.$; - return { - left: off.x, - top: off.y, - right: off.x + el.offsetWidth, - bottom: off.y + el.offsetHeight, - width: el.offsetWidth, - height: el.offsetHeight - }; - }, - - setBounds: setBounds(['left', 'top', 'width', 'height', 'clip'], true), - - setOffset: setBounds(['left', 'top'], true), - - setSize: setBounds(['width', 'height', 'clip']), - - setScrollOffset: function(x, y) { - if (isBody(this)) { - this.getWindow().setScrollOffset(x, y); - } else { - var off = typeof x == 'object' ? x : { x: x, y: y }; - this.$.scrollLeft = off.x; - this.$.scrollTop = off.y; - } - return this; - }, - - scrollTo: function(x, y) { - return this.setScrollOffset(x, y); - }, - - contains: function(pos) { - var bounds = this.getBounds(); - return pos.x >= bounds.left && pos.x < bounds.right && - pos.y >= bounds.top && pos.y < bounds.bottom; - }, - - isVisible: function(fully) { - var win = this.getWindow(), top = win.getScrollOffset().y, - bottom = top + win.getSize().height, - bounds = this.getBounds(false, true); - return (bounds.height > 0 || bounds.width > 0) - && (bounds.top >= top && bounds.bottom <= bottom - || (fully && bounds.top <= top && bounds.bottom >= bottom) - || !fully && (bounds.top <= top && bounds.bottom >= top - || bounds.top <= bottom && bounds.bottom >= bottom)); - } - }; - - ['left', 'top', 'right', 'bottom', 'width', 'height'].each(function(name) { - var part = name.capitalize(); - fields['get' + part] = function() { - return this.$['offset' + part]; - }; - fields['set' + part] = function(value) { - this.$.style[name] = isNaN(value) ? value : value + 'px'; - }; - }); - - return fields; -}); - -[DomDocument, DomWindow].each(function(ctor) { - ctor.inject(this); -}, { - - getSize: function() { - if (Browser.PRESTO || Browser.WEBKIT) { - var win = this.getWindow().$; - return { width: win.innerWidth, height: win.innerHeight }; - } - var doc = this.getCompatElement(); - return { width: doc.clientWidth, height: doc.clientHeight }; - }, - - getScrollOffset: function() { - var win = this.getWindow().$, doc = this.getCompatElement(); - return { x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop }; - }, - - getScrollSize: function() { - var doc = this.getCompatElement(), min = this.getSize(); - return { width: Math.max(doc.scrollWidth, min.width), height: Math.max(doc.scrollHeight, min.height) }; - }, - - getOffset: function() { - return { x: 0, y: 0 }; - }, - - getBounds: function() { - var size = this.getSize(); - return { - left: 0, top: 0, - right: size.width, bottom: size.height, - width: size.width, height: size.height - }; - }, - - setScrollOffset: function(x, y) { - var off = typeof x == 'object' ? x : { x: x, y: y }; - this.getWindow().$.scrollTo(off.x, off.y); - return this; - }, - - getElementAt: function(pos, exclude) { - var el = this.getDocument().getElement('body'); - while (true) { - var max = -1; - var ch = el.getFirst(); - while (ch) { - if (ch.contains(pos) && ch != exclude) { - var z = ch.$.style.zIndex.toInt() || 0; - if (z >= max) { - el = ch; - max = z; - } - } - ch = ch.getNext(); - } - if (max < 0) break; - } - return el; - }, - - getCompatElement: function() { - var doc = this.getDocument(); - return doc.getElement(!doc.$.compatMode - || doc.$.compatMode == 'CSS1Compat' ? 'html' : 'body').$; - } -}); - -DomEvent = Base.extend(new function() { - var keys = { - '8': 'backspace', - '13': 'enter', - '27': 'escape', - '32': 'space', - '37': 'left', - '38': 'up', - '39': 'right', - '40': 'down', - '46': 'delete' - }; - - function hover(name, type) { - return { - type: type, - listener: function(event) { - if (event.relatedTarget != this && !this.hasChild(event.relatedTarget)) - this.fireEvent(name, [event]); - } - } - } - - return { - initialize: function(event) { - this.event = event = event || window.event; - this.type = event.type; - this.target = DomNode.wrap(event.target || event.srcElement); - if (this.target && this.target.$.nodeType == 3) - this.target = this.target.getParentNode(); - this.shift = event.shiftKey; - this.control = event.ctrlKey; - this.alt = event.altKey; - this.meta = event.metaKey; - if (/^(mousewheel|DOMMouseScroll)$/.test(this.type)) { - this.wheel = event.wheelDelta ? - event.wheelDelta / (window.opera ? -120 : 120) : - - (event.detail || 0) / 3; - } else if (/^key/.test(this.type)) { - this.code = event.which || event.keyCode; - this.key = keys[this.code] || String.fromCharCode(this.code).toLowerCase(); - } else if (/^mouse|^click$/.test(this.type)) { - this.page = { - x: event.pageX || event.clientX + document.documentElement.scrollLeft, - y: event.pageY || event.clientY + document.documentElement.scrollTop - }; - this.client = { - x: event.pageX ? event.pageX - window.pageXOffset : event.clientX, - y: event.pageY ? event.pageY - window.pageYOffset : event.clientY - }; - var offset = this.target.getOffset(); - this.offset = { - x: this.page.x - offset.x, - y: this.page.y - offset.y - } - this.rightClick = event.which == 3 || event.button == 2; - if (/^mouse(over|out)$/.test(this.type)) - this.relatedTarget = DomNode.wrap(event.relatedTarget || - this.type == 'mouseout' ? event.toElement : event.fromElement); - } - }, - - stop: function() { - this.stopPropagation(); - this.preventDefault(); - return this; - }, - - stopPropagation: function() { - if (this.event.stopPropagation) this.event.stopPropagation(); - else this.event.cancelBubble = true; - this.stopped = true; - return this; - }, - - preventDefault: function() { - if (this.event.preventDefault) this.event.preventDefault(); - else this.event.returnValue = false; - return this; - }, - - statics: { - events: new Hash({ - mouseenter: hover('mouseenter', 'mouseover'), - - mouseleave: hover('mouseleave', 'mouseout'), - - mousewheel: { type: Browser.GECKO ? 'DOMMouseScroll' : 'mousewheel' }, - - domready: function(func) { - var win = this.getWindow(), doc = this.getDocument(); - if (Browser.loaded) { - func.call(this); - } else if (!doc.onDomReady) { - doc.onDomReady = function() { - if (!Browser.loaded) { - Browser.loaded = true; - doc.fireEvent('domready'); - win.fireEvent('domready'); - } - } - if (Browser.TRIDENT) { - var temp = doc.createElement('div'); - (function() { - try { - temp.$.doScroll('left'); - temp.insertBottom(DomElement.get('body')).setHtml('temp').remove(); - doc.onDomReady(); - } catch (e) { - arguments.callee.delay(50); - } - }).delay(0); - } else if (Browser.WEBKIT && Browser.VERSION < 525) { - (function() { - /^(loaded|complete)$/.test(doc.$.readyState) - ? doc.onDomReady() : arguments.callee.delay(50); - })(); - } else { - win.addEvent('load', doc.onDomReady); - doc.addEvent('DOMContentLoaded', doc.onDomReady); - } - } - } - }), - - add: function(events) { - this.events.append(events); - } - } - }; -}); - -DomElement.inject(new function() { - function callEvent(fire) { - return function(type, args, delay) { - var entries = (this.events || {})[type]; - if (entries) { - var event = args && args[0]; - if (event) - args[0] = event.event ? event : new DomEvent(event); - entries.each(function(entry) { - entry[fire ? 'func' : 'bound'].delay(delay, this, args); - }, this); - } - return !!entries; - } - } - - return { - addEvent: function(type, func) { - this.events = this.events || {}; - var entries = this.events[type] = this.events[type] || []; - if (func && !entries.find(function(entry) { return entry.func == func })) { - var listener = func, name = type, pseudo = DomEvent.events[type]; - if (pseudo) { - if (typeof pseudo == 'function') pseudo = pseudo.call(this, func); - listener = pseudo && pseudo.listener || listener; - name = pseudo && pseudo.type; - } - var that = this, bound = function(event) { - if (event || window.event) - event = event && event.event ? event : new DomEvent(event); - if (listener.call(that, event) === false && event) - event.stop(); - }; - if (name) { - if (this.$.addEventListener) { - this.$.addEventListener(name, bound, false); - } else if (this.$.attachEvent) { - this.$.attachEvent('on' + name, bound); - } - } - entries.push({ func: func, name: name, bound: bound }); - } - return this; - }, - - removeEvent: function(type, func) { - var entries = (this.events || {})[type], entry; - if (func && entries) { - if (entry = entries.remove(function(entry) { return entry.func == func })) { - var name = entry.name, pseudo = DomEvent.events[type]; - if (pseudo && pseudo.remove) pseudo.remove.call(this, func); - if (name) { - if (this.$.removeEventListener) { - this.$.removeEventListener(name, entry.bound, false); - } else if (this.$.detachEvent) { - this.$.detachEvent('on' + name, entry.bound); - } - } - } - } - return this; - }, - - addEvents: function(events) { - return Base.each(events || [], function(fn, type) { - this.addEvent(type, fn); - }, this); - }, - - removeEvents: function(type) { - if (this.events) { - if (type) { - (this.events[type] || []).each(function(fn) { - this.removeEvent(type, fn); - }, this); - delete this.events[type]; - } else { - Base.each(this.events, function(ev, type) { - this.removeEvents(type); - }, this); - this.events = null; - } - } - return this; - }, - - fireEvent: callEvent(true), - - triggerEvent: callEvent(false), - - finalize: function() { - this.removeEvents(); - } - }; -}); - -DomEvent.add(new function() { - var object, last; - - function dragStart(event) { - if (object != this) { - event.type = 'dragstart'; - last = event.page; - this.fireEvent('dragstart', [event]); - if (!event.stopped) { - event.stop(); - var doc = this.getDocument(); - doc.addEvent('mousemove', drag); - doc.addEvent('mouseup', dragEnd); - object = this; - } - } - } - - function drag(event) { - event.type = 'drag'; - event.delta = { - x: event.page.x - last.x, - y: event.page.y - last.y - } - last = event.page; - object.fireEvent('drag', [event]); - event.preventDefault(); - } - - function dragEnd(event) { - if (object) { - event.type = 'dragend'; - object.fireEvent('dragend', [event]); - event.preventDefault(); - var doc = object.getDocument(); - doc.removeEvent('mousemove', drag); - doc.removeEvent('mouseup', dragEnd); - object = null; - } - } - - return { - dragstart: { - type: 'mousedown', - listener: dragStart - }, - - drag: { - type: 'mousedown', - listener: dragStart - }, - - dragend: {} - }; -}); - -DomElement.inject(new function() { - var XPATH= 0, FILTER = 1; - - var methods = [{ - getParam: function(items, separator, context, params) { - var str = context.namespaceURI ? 'xhtml:' + params.tag : params.tag; - if (separator && (separator = DomElement.separators[separator])) - str = separator[XPATH] + str; - for (var i = params.pseudos.length; i--;) { - var pseudo = params.pseudos[i]; - str += pseudo.handler[XPATH](pseudo.argument); - } - if (params.id) str += '[@id="' + params.id + '"]'; - for (var i = params.classes.length; i--;) - str += '[contains(concat(" ", @class, " "), " ' + params.classes[i] + ' ")]'; - for (var i = params.attributes.length; i--;) { - var attribute = params.attributes[i]; - var operator = DomElement.operators[attribute[1]]; - if (operator) str += operator[XPATH](attribute[0], attribute[2]); - else str += '[@' + attribute[0] + ']'; - } - items.push(str); - return items; - }, - - getElements: function(items, elements, context) { - function resolver(prefix) { - return prefix == 'xhtml' ? 'http://www.w3.org/1999/xhtml' : false; - } - var res = (context.ownerDocument || context).evaluate('.//' + items.join(''), context, - resolver, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, l = res.snapshotLength; i < l; i++) - elements.push(res.snapshotItem(i)); - } - }, { - getParam: function(items, separator, context, params, data) { - var found = []; - var tag = params.tag; - if (separator && (separator = DomElement.separators[separator])) { - separator = separator[FILTER]; - var uniques = {}; - function add(item) { - if (!item._unique) - DomNode.unique(item); - if (!uniques[item._unique] && match(item, params, data)) { - uniques[item._unique] = true; - found.push(item); - return true; - } - } - for (var i = 0, l = items.length; i < l; i++) - separator(items[i], params, add); - if (params.clearTag) - params.tag = params.clearTag = null; - return found; - } - if (params.id) { - var el = (context.ownerDocument || context).getElementById(params.id); - params.id = null; - return el && DomElement.isAncestor(el, context) - && match(el, params, data) ? [el] : null; - } else { - if (!items.length) { - items = context.getElementsByTagName(tag); - params.tag = null; - } - for (var i = 0, l = items.length; i < l; i++) - if (match(items[i], params, data)) - found.push(items[i]); - } - return found; - }, - - getElements: function(items, elements, context) { - elements.append(items); - } - }]; - - function parse(selector) { - var params = { tag: '*', id: null, classes: [], attributes: [], pseudos: [] }; - selector.replace(/:([^:(]+)*(?:\((["']?)(.*?)\2\))?|\[([\w-]+)(?:([!*^$~|]?=)(["']?)(.*?)\6)?\]|\.[\w-]+|#[\w-]+|\w+|\*/g, function(part) { - switch (part.charAt(0)) { - case '.': params.classes.push(part.slice(1)); break; - case '#': params.id = part.slice(1); break; - case '[': params.attributes.push([arguments[4], arguments[5], arguments[7]]); break; - case ':': - var handler = DomElement.pseudos[arguments[1]]; - if (!handler) { - params.attributes.push([arguments[1], arguments[3] ? '=' : '', arguments[3]]); - break; - } - params.pseudos.push({ - name: arguments[1], - argument: handler && handler.parser - ? (handler.parser.apply ? handler.parser(arguments[3]) : handler.parser) - : arguments[3], - handler: handler.handler || handler - }); - break; - default: params.tag = part; - } - return ''; - }); - return params; - } - - function match(el, params, data) { - if (params.id && params.id != el.id) - return false; - - if (params.tag && params.tag != '*' && params.tag != (el.tagName || '').toLowerCase()) - return false; - - for (var i = params.classes.length; i--;) - if (!el.className || !el.className.contains(params.classes[i], ' ')) - return false; - - var proto = DomElement.prototype; - for (var i = params.attributes.length; i--;) { - var attribute = params.attributes[i]; - proto.$ = el; - var val = proto.getProperty(attribute[0]); - if (!val) return false; - var operator = DomElement.operators[attribute[1]]; - operator = operator && operator[FILTER]; - if (operator && (!val || !operator(val, attribute[2]))) - return false; - } - - for (var i = params.pseudos.length; i--;) { - var pseudo = params.pseudos[i]; - if (!pseudo.handler[FILTER](el, pseudo.argument, data)) - return false; - } - - return true; - } - - function filter(items, selector, context, elements, data) { - var method = methods[!Browser.XPATH || items.length || - typeof selector == 'string' && selector.contains('option[') - ? FILTER : XPATH]; - var separators = []; - selector = selector.trim().replace(/\s*([+>~\s])[a-zA-Z#.*\s]/g, function(match) { - if (match.charAt(2)) match = match.trim(); - separators.push(match.charAt(0)); - return ':)' + match.charAt(1); - }).split(':)'); - for (var i = 0, l = selector.length; i < l; i++) { - var params = parse(selector[i]); - if (!params) return elements; - var next = method.getParam(items, separators[i - 1], context, params, data); - if (!next) break; - items = next; - } - method.getElements(items, elements, context); - return elements; - } - - return { - - getElements: function(selectors, nowrap) { - var elements = nowrap ? [] : new this._collection(); - selectors = !selectors ? ['*'] : typeof selectors == 'string' - ? selectors.split(',') - : selectors.length != null ? selectors : [selectors]; - for (var i = 0, l = selectors.length; i < l; i++) { - var selector = selectors[i]; - if (Base.type(selector) == 'element') elements.push(selector); - else filter([], selector, this.$, elements, {}); - } - return elements; - }, - - getElement: function(selector) { - var el, type = Base.type(selector), match; - if (type == 'window') { - el = selector; - } else { - if (type == 'string' && (match = selector.match(/^#?([\w-]+)$/))) - el = this.getDocument().$.getElementById(match[1]); - else if (DomNode.isNode(type)) - el = DomElement.unwrap(selector); - if (el && el != this.$ && !DomElement.isAncestor(el, this.$)) - el = null; - if (!el) - el = this.getElements(selector, true)[0]; - } - return DomNode.wrap(el); - }, - - hasElement: function(selector) { - return !!this.getElement(selector); - }, - - match: function(selector) { - return !selector || match(this.$, parse(selector), {}); - }, - - filter: function(elements, selector) { - return filter(elements, selector, this.$, new this._collection(), {}); - }, - - statics: { - match: function(el, selector) { - return !selector || match(DomElement.unwrap(el), parse(selector), {}); - } - } - }; -}); - -DomElement.separators = { - '~': [ - '/following-sibling::', - function(item, params, add) { - while (item = item.nextSibling) - if (item.nodeType == 1 && add(item)) - break; - } - ], - - '+': [ - '/following-sibling::*[1]/self::', - function(item, params, add) { - while (item = item.nextSibling) { - if (item.nodeType == 1) { - add(item); - break; - } - } - } - ], - - '>': [ - '/', - function(item, params, add) { - var children = item.childNodes; - for (var i = 0, l = children.length; i < l; i++) - if (children[i].nodeType == 1) - add(children[i]); - } - ], - - ' ': [ - '//', - function(item, params, add) { - var children = item.getElementsByTagName(params.tag); - params.clearTag = true; - for (var i = 0, l = children.length; i < l; i++) - add(children[i]); - } - ] -}; - -DomElement.operators = new function() { - function contains(sep) { - return [ - function(a, v) { - return '[contains(' + (sep ? 'concat("' + sep + '", @' + a + ', "' + sep + '")' : '@' + a) + ', "' + sep + v + sep + '")]'; - }, - function(a, v) { - return a.contains(v, sep); - } - ] - } - - return { - '=': [ - function(a, v) { - return '[@' + a + '="' + v + '"]'; - }, - function(a, v) { - return a == v; - } - ], - - '^=': [ - function(a, v) { - return '[starts-with(@' + a + ', "' + v + '")]'; - }, - function(a, v) { - return a.substring(0, v.length) == v; - } - ], - - '$=': [ - function(a, v) { - return '[substring(@' + a + ', string-length(@' + a + ') - ' + v.length + ' + 1) = "' + v + '"]'; - }, - function(a, v) { - return a.substring(a.length - v.length) == v; - } - ], - - '!=': [ - function(a, v) { - return '[@' + a + '!="' + v + '"]'; - }, - function(a, v) { - return a != v; - } - ], - - '*=': contains(''), - - '|=': contains('-'), - - '~=': contains(' ') - }; -}; - -DomElement.pseudos = new function() { - var nthChild = [ - function(argument) { - switch (argument.special) { - case 'n': return '[count(preceding-sibling::*) mod ' + argument.a + ' = ' + argument.b + ']'; - case 'first': return '[count(preceding-sibling::*) = 0]'; - case 'last': return '[count(following-sibling::*) = 0]'; - case 'only': return '[not(preceding-sibling::* or following-sibling::*)]'; - case 'index': return '[count(preceding-sibling::*) = ' + argument.a + ']'; - } - }, - function(el, argument, data) { - var count = 0; - switch (argument.special) { - case 'n': - data.indices = data.indices || {}; - if (!data.indices[el._unique]) { - var children = el.parentNode.childNodes; - for (var i = 0, l = children.length; i < l; i++) { - var child = children[i]; - if (child.nodeType == 1) { - if (!child._unique) - DomNode.unique(item); - data.indices[child._unique] = count++; - } - } - } - return data.indices[el._unique] % argument.a == argument.b; - case 'first': - while (el = el.previousSibling) - if (el.nodeType == 1) - return false; - return true; - case 'last': - while (el = el.nextSibling) - if (el.nodeType == 1) - return false; - return true; - case 'only': - var prev = el; - while(prev = prev.previousSibling) - if (prev.nodeType == 1) - return false; - var next = el; - while (next = next.nextSibling) - if (next.nodeType == 1) - return false; - return true; - case 'index': - while (el = el.previousSibling) - if (el.nodeType == 1 && ++count > argument.a) - return false; - return true; - } - return false; - } - ]; - - function contains(caseless) { - var abc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; - return [ - function(argument) { - return '[contains(' + (caseless ? 'translate(text(), "' + abc - + '", "' + abc.toLowerCase() + '")' : 'text()') + ', "' - + (caseless && argument ? argument.toLowerCase() : argument) + '")]'; - }, - function(el, argument) { - if (caseless && argument) argument = argument.toLowerCase(); - var nodes = el.childNodes; - for (var i = nodes.length - 1; i >= 0; i--) { - var child = nodes[i]; - if (child.nodeName && child.nodeType == 3 && - (caseless ? child.nodeValue.toLowerCase() : child.nodeValue).contains(argument)) - return true; - } - return false; - } - ]; - } - - return { - 'nth-child': { - parser: function(argument) { - var match = argument ? argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/) : [null, 1, 'n', 0]; - if (!match) return null; - var i = parseInt(match[1]), - a = isNaN(i) ? 1 : i, - special = match[2], - b = parseInt(match[3]) || 0; - if (a != 0) { - b--; - while (b < 1) b += a; - while (b >= a) b -= a; - } else { - a = b; - special = 'index'; - } - switch (special) { - case 'n': return { a: a, b: b, special: 'n' }; - case 'odd': return { a: 2, b: 0, special: 'n' }; - case 'even': return { a: 2, b: 1, special: 'n' }; - case 'first': return { special: 'first' }; - case 'last': return { special: 'last' }; - case 'only': return { special: 'only' }; - default: return { a: a - 1, special: 'index' }; - } - }, - handler: nthChild - }, - - 'even': { - parser: { a: 2, b: 1, special: 'n' }, - handler: nthChild - }, - - 'odd': { - parser: { a: 2, b: 0, special: 'n' }, - handler: nthChild - }, - - 'first-child': { - parser: { special: 'first' }, - handler: nthChild - }, - - 'last-child': { - parser: { special: 'last' }, - handler: nthChild - }, - - 'only-child': { - parser: { special: 'only' }, - handler: nthChild - }, - - 'enabled': [ - function() { - return '[not(@disabled)]'; - }, - function(el) { - return !el.disabled; - } - ], - - 'empty': [ - function() { - return '[not(node())]'; - }, - function(el) { - return !(el.innerText || el.textContent || '').length; - } - ], - - 'contains': contains(false), - - 'contains-caseless': contains(true) - }; -}; - -HtmlElements = DomElements.extend(); - -HtmlElement = DomElement.extend({ - _collection: HtmlElements -}); - -HtmlElement.inject({ - _properties: ['html'], - - getClass: function() { - return this.$.className; - }, - - setClass: function(cls) { - this.$.className = cls; - }, - - modifyClass: function(name, add) { - if (!this.hasClass(name) ^ !add) - this.$.className = (add ? this.$.className + ' ' + name : - this.$.className.replace(name, '')).clean(); - return this; - }, - - addClass: function(name) { - return this.modifyClass(name, true); - }, - - removeClass: function(name) { - return this.modifyClass(name, false); - }, - - toggleClass: function(name) { - return this.modifyClass(name, !this.hasClass(name)); - }, - - hasClass: function(name) { - return this.$.className.contains(name, ' '); - } -}); - -Array.inject({ - toNode: function(doc) { - doc = DomNode.wrap(doc || document); - var elements = new HtmlElements(); - for (var i = 0; i < this.length;) { - var value = this[i++], element = null, type = Base.type(value); - if (type == 'string') { - var props = /^(object|hash)$/.test(Base.type(this[i])) && this[i++]; - element = value.isHtml() - ? value.toNode(doc).set(props) - : doc.createElement(value, props); - if (Base.type(this[i]) == 'array') - element.injectBottom(this[i++].toNode(doc)); - } else if (DomNode.isNode(type)) { - element = value; - } else if (value && value.toNode) { - element = value.toNode(doc); - } - if (element) - elements[Base.type(element) == 'array' ? 'append' : 'push'](element); - } - return elements.length == 1 ? elements[0] : elements; - } -}); - -String.inject({ - toNode: function(doc) { - var doc = doc || document, elements; - if (this.isHtml()) { - var str = this.trim().toLowerCase(); - var div = DomElement.unwrap(doc).createElement('div'); - - var wrap = - !str.indexOf('', ''] || - !str.indexOf('', ''] || - (!str.indexOf('', ''] || - !str.indexOf('', ''] || - (!str.indexOf('', ''] || - !str.indexOf('', ''] || - [0,'','']; - - div.innerHTML = wrap[1] + this + wrap[2]; - while (wrap[0]--) - div = div.firstChild; - if (Browser.TRIDENT) { - var els = []; - if (!str.indexOf('' && str.indexOf('= 0 ; --i) { - var el = els[i]; - if (el.nodeName.toLowerCase() == 'tbody' && !el.childNodes.length) - el.parentNode.removeChild(el); - } - } - elements = new HtmlElements(div.childNodes); - } else { - elements = DomNode.wrap(doc).getElements(this); - } - return elements.length == 1 ? elements[0] : elements; - } -}); - -HtmlDocument = DomDocument.extend({ - _collection: HtmlElements -}); - -HtmlElement.inject(new function() { - var styles = { - all: { - width: '@px', height: '@px', left: '@px', top: '@px', right: '@px', bottom: '@px', - color: 'rgb(@, @, @)', backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', - fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', textIndent: '@px', - margin: '@px @px @px @px', padding: '@px @px @px @px', - border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)', - borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', - borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)', - clip: 'rect(@px, @px, @px, @px)', opacity: '@' - }, - part: { - 'border': {}, 'borderWidth': {}, 'borderStyle': {}, 'borderColor': {}, - 'margin': {}, 'padding': {} - } - }; - - ['Top', 'Right', 'Bottom', 'Left'].each(function(dir) { - ['margin', 'padding'].each(function(style) { - var sd = style + dir; - styles.part[style][sd] = styles.all[sd] = '@px'; - }); - var bd = 'border' + dir; - styles.part.border[bd] = styles.all[bd] = '@px @ rgb(@, @, @)'; - var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color'; - styles.part[bd] = {}; - styles.part.borderWidth[bdw] = styles.part[bd][bdw] = '@px'; - styles.part.borderStyle[bds] = styles.part[bd][bds] = '@'; - styles.part.borderColor[bdc] = styles.part[bd][bdc] = 'rgb(@, @, @)'; - }); - - Base.each(styles.all, function(val, name) { - this[name] = val.split(' '); - }); - - var fields = { - - getComputedStyle: function(name) { - if (this.$.currentStyle) return this.$.currentStyle[name.camelize()]; - var style = this.getWindow().$.getComputedStyle(this.$, null); - return style ? style.getPropertyValue(name.hyphenate()) : null; - }, - - getStyle: function(name) { - if (name === undefined) return this.getStyles(); - if (name == 'opacity') { - var op = this.opacity; - return op || op == 0 ? op : this.getVisibility() ? 1 : 0; - } - var el = this.$; - name = name.camelize(); - var style = el.style[name]; - if (!Base.check(style)) { - if (styles.part[name]) { - style = Hash.map(styles.part[name], function(val, key) { - return this.getStyle(key); - }, this); - return style.every(function(val) { - return val == style[0]; - }) ? style[0] : style.join(' '); - } - style = this.getComputedStyle(name); - } - if (name == 'visibility') - return /^(visible|inherit(|ed))$/.test(style); - var color = style && style.match(/rgb[a]?\([\d\s,]+\)/); - if (color) return style.replace(color[0], color[0].rgbToHex()); - if (Browser.PRESTO || Browser.TRIDENT && isNaN(parseInt(style))) { - if (/^(width|height)$/.test(name)) { - var size = 0; - (name == 'width' ? ['left', 'right'] : ['top', 'bottom']).each(function(val) { - size += this.getStyle('border-' + val + '-width').toInt() + this.getStyle('padding-' + val).toInt(); - }, this); - return this.$['offset' + name.capitalize()] - size + 'px'; - } - if (Browser.PRESTO && /px/.test(style)) return style; - if (/border(.+)[wW]idth|margin|padding/.test(name)) return '0px'; - } - return style; - }, - - setStyle: function(name, value) { - if (value === undefined) return this.setStyles(name); - var el = this.$; - switch (name) { - case 'float': - name = Browser.TRIDENT ? 'styleFloat' : 'cssFloat'; - break; - case 'clip': - if (value == true) - value = [0, el.offsetWidth, el.offsetHeight, 0]; - break; - default: - name = name.camelize(); - } - var type = Base.type(value); - if (value != undefined && type != 'string') { - var parts = styles.all[name] || ['@'], index = 0; - value = (type == 'array' ? value.flatten() : [value]).map(function(val) { - var part = parts[index++]; - if (!part) - throw Base.stop; - return Base.type(val) == 'number' ? part.replace('@', name == 'opacity' ? val : Math.round(val)) : val; - }).join(' '); - } - switch (name) { - case 'visibility': - if (!isNaN(value)) value = !!value.toInt() + ''; - value = value == 'true' && 'visible' || value == 'false' && 'hidden' || value; - break; - case 'opacity': - this.opacity = value = parseFloat(value); - this.setStyle('visibility', !!value); - if (!value) value = 1; - if (!el.currentStyle || !el.currentStyle.hasLayout) el.style.zoom = 1; - if (Browser.TRIDENT) el.style.filter = value > 0 && value < 1 ? 'alpha(opacity=' + value * 100 + ')' : ''; - el.style.opacity = value; - return this; - } - el.style[name] = value; - return this; - }, - - getStyles: function() { - return arguments.length ? Array.each(arguments, function(name) { - this[name] = that.getStyle(name); - }, {}) : this.$.style.cssText; - }, - - setStyles: function(styles) { - switch (Base.type(styles)) { - case 'object': - Base.each(styles, function(style, name) { - if (style !== undefined) - this.setStyle(name, style); - }, this); - break; - case 'string': - this.$.style.cssText = styles; - } - return this; - } - }; - - ['opacity', 'color', 'background', 'visibility', 'clip', 'zIndex', - 'border', 'margin', 'padding', 'display'].each(function(name) { - var part = name.capitalize(); - fields['get' + part] = function() { - return this.getStyle(name); - }; - fields['set' + part] = function(value) { - return this.setStyle(name, arguments.length > 1 - ? Array.create(arguments) : value); - }; - }); - - return fields; -}); - -HtmlElement.inject({ - - getFormElements: function() { - return this.getElements(['input', 'select', 'textarea']); - }, - - getValue: function(name) { - var el = this.getElement(name); - return el && el.getValue && el.getValue(); - }, - - setValue: function(name, val) { - var el = this.getElement(name); - if (!el) el = this.injectTop('input', { type: 'hidden', id: name, name: name }); - return el.setValue(val); - }, - - getValues: function() { - return this.getFormElements().each(function(el) { - var name = el.getName(), value = el.getValue(); - if (name && value !== undefined && !el.getDisabled()) - this[name] = value; - }, new Hash()); - }, - - setValues: function(values) { - return Base.each(values, function(val, name) { - this.setValue(name, val); - }, this); - }, - - toQueryString: function() { - return Base.toQueryString(this.getValues()); - } -}); - -HtmlForm = HtmlElement.extend({ - _tag: 'form', - _properties: ['action', 'method', 'target'], - _methods: ['submit'], - - blur: function() { - return this.getFormElements().each(function(el) { - el.blur(); - }, this); - }, - - enable: function(enable) { - return this.getFormElements().each(function(el) { - el.enable(enable); - }, this); - } -}); - -HtmlFormElement = HtmlElement.extend({ - _properties: ['name', 'disabled'], - _methods: ['focus', 'blur'], - - enable: function(enable) { - var disabled = !enable && enable !== undefined; - if (disabled) this.$.blur(); - this.$.disabled = disabled; - return this; - } -}); - -HtmlInput = HtmlFormElement.extend({ - _tag: 'input', - _properties: ['type', 'checked', 'defaultChecked', 'readOnly', 'maxLength'], - _methods: ['click'], - - getValue: function() { - if (this.$.checked && /^(checkbox|radio)$/.test(this.$.type) || - /^(hidden|text|password|button|search)$/.test(this.$.type)) - return this.$.value; - }, - - setValue: function(val) { - if (/^(checkbox|radio)$/.test(this.$.type)) this.$.checked = this.$.value == val; - else this.$.value = val != null ? val : ''; - return this; - } -}); - -HtmlTextArea = HtmlFormElement.extend({ - _tag: 'textarea', - _properties: ['value'] -}); - -HtmlSelect = HtmlFormElement.extend({ - _tag: 'select', - _properties: ['type', 'selectedIndex'], - - getOptions: function() { - return this.getElements('option'); - }, - - getSelected: function() { - return this.getElements('option[selected]'); - }, - - setSelected: function(values) { - this.$.selectedIndex = -1; - if (values) { - Array.each(values.length != null ? values : [values], function(val) { - val = DomElement.unwrap(val); - if (val != null) - this.getElements('option[value="' + (val.value || val) + '"]').setProperty('selected', true); - }, this); - } - return this; - }, - - getValue: function() { - return this.getSelected().getProperty('value'); - }, - - setValue: function(values) { - return this.setSelected(values); - } -}); - -HtmlOption = HtmlFormElement.extend({ - _tag: 'option', - _properties: ['text', 'value', 'selected', 'defaultSelected', 'index'] -}); - -HtmlFormElement.inject({ - setSelection: function(start, end) { - var sel = end == undefined ? start : { start: start, end: end }; - this.focus(); - if (this.$.setSelectionRange) { - this.$.setSelectionRange(sel.start, sel.end); - } else { - var value = this.getValue(); - var len = value.substring(sel.start, sel.end).replace(/\r/g, '').length; - var pos = value.substring(0, sel.start).replace(/\r/g, '').length; - var range = this.$.createTextRange(); - range.collapse(true); - range.moveEnd('character', pos + len); - range.moveStart('character', pos); - range.select(); - } - return this; - }, - - getSelection: function() { - if (this.$.selectionStart !== undefined) { - return { start: this.$.selectionStart, end: this.$.selectionEnd }; - } else { - this.focus(); - var pos = { start: 0, end: 0 }; - var range = this.getDocument().$.selection.createRange(); - var dup = range.duplicate(); - if (this.$.type == 'text') { - pos.start = 0 - dup.moveStart('character', -100000); - pos.end = pos.start + range.text.length; - } else { - var value = this.getValue(); - dup.moveToElementText(this.$); - dup.setEndPoint('StartToEnd', range); - pos.end = value.length - dup.text.length; - dup.setEndPoint('StartToStart', range); - pos.start = value.length - dup.text.length; - } - return pos; - } - }, - - getSelectedText: function() { - var range = this.getSelection(); - return this.getValue().substring(range.start, range.end); - }, - - replaceSelectedText: function(value, select) { - var range = this.getSelection(), current = this.getValue(); - var top = this.$.scrollTop, height = this.$.scrollHeight; - this.setValue(current.substring(0, range.start) + value + current.substring(range.end, current.length)); - if (top != null) - this.$.scrollTop = top + this.$.scrollHeight - height; - return select || select == undefined - ? this.setSelection(range.start, range.start + value.length) - : this.setCaret(range.start + value.length); - }, - - getCaret: function() { - return this.getSelection().start; - }, - - setCaret: function(pos) { - return this.setSelection(pos, pos); - } -}); - -HtmlImage = HtmlElement.extend({ - _tag: 'img', - _properties: ['src', 'alt', 'title'] -}); - -$document = Browser.document = DomNode.wrap(document); -$window = Browser.window = DomNode.wrap(window).addEvent('unload', DomNode.dispose); - -Chain = { - chain: function(fn) { - (this._chain = this._chain || []).push(fn); - return this; - }, - - callChain: function() { - if (this._chain && this._chain.length) - this._chain.shift().apply(this, arguments); - return this; - }, - - clearChain: function() { - this._chain = []; - return this; - } -}; - -Callback = { - addEvent: function(type, fn) { - var ref = this.events = this.events || {}; - ref = ref[type] = ref[type] || []; - if (!ref.find(function(val) { return val == fn })) ref.push(fn); - return this; - }, - - addEvents: function(events) { - return Base.each((events || []), function(fn, type) { - this.addEvent(type, fn); - }, this); - }, - - fireEvent: function(type, args, delay) { - return (this.events && this.events[type] || []).each(function(fn) { - fn.delay(delay, this, args); - }, this); - }, - - removeEvent: function(type, fn) { - if (this.events && this.events[type]) - this.events[type].remove(function(val) { return fn == val; }); - return this; - }, - - setOptions: function(opts) { - return (this.options = Hash.create(this.options, opts)).each(function(val, i) { - if (typeof val == 'function' && (i = i.match(/^on([A-Z]\w*)/))) - this.addEvent(i[1].toLowerCase(), val); - }, this); - }, - - statics: { - inject: function() { - var proto = this.prototype, options = proto.options; - this.base.apply(this, arguments); - if (proto.options != options) - proto.options = Hash.merge({}, options, proto.options); - return this; - } - } -}; - -Request = Base.extend(Chain, Callback, new function() { - var unique = 0; - - function createRequest(that) { - if (!that.transport) - that.transport = window.XMLHttpRequest && new XMLHttpRequest() - || Browser.TRIDENT && new ActiveXObject('Microsoft.XMLHTTP'); - } - - function createFrame(that) { - var id = 'request_' + unique++, load = that.onFrameLoad.bind(that); - var div = DomElement.get('body').injectBottom('div', { - styles: { - position: 'absolute', width: 0, height: 0, top: 0, marginLeft: '-10000px' - } - }, [ - 'iframe', { - name: id, id: id, events: { load: load, readystatechange: load } - } - ] - ); - that.frame = { - id: id, div: div, - iframe: window.frames[id] || document.getElementById(id), - element: DomElement.get(id) - }; - div.offsetWidth; - } - - return { - options: { - headers: { - 'X-Requested-With': 'XMLHttpRequest', - 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' - }, - method: 'post', - async: true, - urlEncoded: true, - encoding: 'utf-8', - emulation: true, - secure: false - }, - - initialize: function() { - var params = Array.associate(arguments, { url: 'string', options: 'object', handler: 'function' }); - this.setOptions(params.options); - if (params.handler) - this.addEvent('complete', params.handler); - if (this.options.update) - this.options.type = 'html'; - this.headers = new Hash(this.options.headers); - if (this.options.type == 'json') { - this.setHeader('Accept', 'application/json'); - this.setHeader('X-Request', 'JSON'); - } - if (this.options.urlEncoded && /^(post|put)$/.test(this.options.method)) { - this.setHeader('Content-Type', 'application/x-www-form-urlencoded' + - (this.options.encoding ? '; charset=' + this.options.encoding : '')); - } - this.headers.append(this.options.headers); - }, - - onStateChange: function() { - if (this.transport.readyState == 4 && this.running) { - this.running = false; - this.status = 0; - try { - this.status = this.transport.status; - delete this.transport.onreadystatechange; - } catch (e) {} - if (!this.status || this.status >= 200 && this.status < 300) { - this.success(this.transport.responseText, this.transport.responseXML); - } else { - this.fireEvent('complete').fireEvent('failure'); - } - } - }, - - onFrameLoad: function() { - var frame = this.frame && this.frame.iframe, loc = frame && frame.location, - doc = frame && (frame.contentDocument || frame.contentWindow || frame).document; - if (this.running && frame && loc && (!loc.href || loc.href.indexOf(this.url) != -1) - && /^(loaded|complete|undefined)$/.test(doc.readyState)) { - this.running = false; - var html = this.options.type == 'html', area = !html - && doc.getElementsByTagName('textarea')[0]; - var text = doc && (area && area.value || doc.body - && (html && doc.body.innerHTML || doc.body.textContent - || doc.body.innerText)) || ''; - this.frame.element.setProperty('src', ''); - this.success(text); - if (!this.options.link) { - var div = this.frame.div; - div.insertBottom(DomElement.get('body')); - div.remove.delay(5000, div); - this.frame = null; - } - } - }, - - success: function(text, xml) { - var args; - switch (this.options.type) { - case 'html': - var match = text.match(/]*>([\u0000-\uffff]*?)<\/body>/i); - var stripped = this.stripScripts(match ? match[1] : text); - if (this.options.update) - DomElement.get(this.options.update).setHtml(stripped.html); - if (this.options.evalScripts) - this.executeScript(stripped.script); - args = [ stripped.html, text ]; - break; - case 'json': - args = [ Json.decode(text, this.options.secure), text ]; - break; - default: - args = [ this.processScripts(text), xml ] - } - this.fireEvent('complete', args) - .fireEvent('success', args) - .callChain(); - }, - - stripScripts: function(html) { - var script = ''; - html = html.replace(/]*>([\u0000-\uffff]*?)<\/script>/gi, function() { - script += arguments[1] + '\n'; - return ''; - }); - return { html: html, script: script }; - }, - - processScripts: function(text) { - if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) { - this.executeScript(text); - return text; - } else { - var stripped = this.stripScripts(text); - if (this.options.evalScripts) - this.executeScript(stripped.script); - return stripped.html; - } - }, - - executeScript: function(script) { - if (window.execScript) { - window.execScript(script); - } else { - DomElement.get('head').injectBottom('script', { - type: 'text/javascript', text: script - }).remove(); - } - }, - - setHeader: function(name, value) { - this.headers[name] = value; - return this; - }, - - getHeader: function(name) { - try { - if (this.transport) - return this.transport.getResponseHeader(name); - } catch (e) {} - return null; - }, - - send: function() { - var params = Array.associate(arguments, { url: 'string', options: 'object', handler: 'function' }); - var opts = params.options ? Hash.merge(params.options, this.options) : this.options; - if (params.handler) - this.addEvent('complete', function() { - params.handler.apply(this, arguments); - this.removeEvent('complete', arguments.callee); - }); - if (this.running) { - switch (opts.link) { - case 'cancel': - this.cancel(); - break; - case 'chain': - this.chain(this.send.wrap(this, arguments)); - default: - return this; - } - } - var data = opts.data || ''; - var url = params.url || opts.url; - switch (Base.type(data)) { - case 'element': - data = DomNode.wrap(data); - if (data.getTag() != 'form' || !data.hasElement('input[type=file]')) - data = data.toQueryString(); - break; - case 'object': - data = Base.toQueryString(data); - break; - default: - data = data.toString(); - } - var string = typeof data == 'string', method = opts.method; - if (opts.emulation && /^(put|delete)$/.test(method)) { - if (string) data += '&_method=' + method; - else data.setValue('_method', method); - method = 'post'; - } - if (string && !this.options.iframe) { - createRequest(this); - if (!this.transport) { - if (!this.frame) - createFrame(this); - method = 'get'; - } - } else if (!this.frame) { - createFrame(this); - } - if (string && data && method == 'get') { - url += (url.contains('?') ? '&' : '?') + data; - data = null; - } - this.running = true; - this.url = url; - if (this.frame) { - var form = !string && data; - if (form) { - form.set({ - target: this.frame.id, action: url, method: method, - enctype: method == 'get' - ? 'application/x-www-form-urlencoded' - : 'multipart/form-data', - 'accept-charset': opts.encoding || '' - }).submit(); - } else { - this.frame.element.setProperty('src', url); - } - } else if (this.transport) { - try { - this.transport.open(method.toUpperCase(), url, opts.async); - this.transport.onreadystatechange = this.onStateChange.bind(this); - new Hash(this.headers, opts.headers).each(function(header, name) { - try{ - this.transport.setRequestHeader(name, header); - } catch (e) { - this.fireEvent('exception', [e, name, header]); - } - }, this); - this.fireEvent('request'); - this.transport.send(data); - if (!opts.async) - this.onStateChange(); - } catch (e) { - this.fireEvent('failure', [e]); - } - } - return this; - }, - - cancel: function() { - if (this.running) { - this.running = false; - if (this.transport) { - this.transport.abort(); - this.transport.onreadystatechange = null; - this.transport = null; - } else if (this.frame) { - this.frame.div.remove(); - this.frame = null; - } - this.fireEvent('cancel'); - } - return this; - } - }; -}); - -HtmlForm.inject({ - send: function(url) { - if (!this.sender) - this.sender = new Request({ link: 'cancel' }); - this.sender.send({ - url: url || this.getProperty('action'), - data: this, method: this.getProperty('method') || 'post' - }); - } -}); - -HtmlElement.inject({ - load: function() { - if (!this.loader) - this.loader = new Request({ link: 'cancel', update: this, method: 'get' }); - this.loader.send(Array.associate(arguments, { data: 'object', url: 'string' })); - return this; - } -}); - -Asset = new function() { - function getProperties(props) { - return props ? Hash.create(props).each(function(val, key) { - if (/^on/.test(key)) delete this[key]; - }) : {}; - } - - function createMultiple(type, sources, options) { - var props = getProperties(options), count = 0; - options = options || {}; - return sources.each(function(src) { - props.onLoad = function() { - if (options.onProgress) - options.onProgress(src); - if (++count == sources.length && options.onComplete) - options.onComplete(); - } - this.push(Asset[type](src, props)); - }, new HtmlElements()); - } - - return { - script: function(src, props) { - var script = DomElement.get('head').injectBottom('script', Hash.merge({ - events: { - load: props.onLoad && function() { - if (!this.loaded) { - this.loaded = true; - props.onLoad.call(this); - } - }, - readystatechange: function() { - if (/loaded|complete/.test(this.$.readyState)) - this.fireEvent('load'); - } - }, - src: src - }, getProperties(props))); - if (Browser.WEBKIT && Browser.VERSION < 420) - new Request({ url: src, method: 'get' }).addEvent('success', function() { - script.fireEvent('load', [], 1); - }).send(); - return script; - }, - - stylesheet: function(src, props) { - return new HtmlElement('link', new Hash({ - rel: 'stylesheet', media: 'screen', type: 'text/css', href: src - }, props)).insertInside(DomElement.get('head')); - }, - - image: function(src, props) { - props = props || {}; - var image = new Image(); - image.src = src; - var element = new HtmlElement('img', { src: src }); - ['load', 'abort', 'error'].each(function(type) { - var name = 'on' + type.capitalize(); - if (props[name]) element.addEvent(type, function() { - this.removeEvent(type, arguments.callee); - props[name].call(this); - }); - }); - if (image.width && image.height) - element.fireEvent('load', [], 1); - return element.setProperties(getProperties(props)); - }, - - scripts: function(sources, options) { - return createMultiple('script', sources, options); - }, - - stylesheets: function(sources, options) { - return createMultiple('stylesheet', sources, options); - }, - - images: function(sources, options) { - return createMultiple('image', sources, options); - } - } -}; - -Cookie = { - set: function(name, value, expires, path) { - document.cookie = name + '=' + encodeURIComponent(value) + (expires ? ';expires=' + - expires.toGMTString() : '') + ';path=' + (path || '/'); - }, - get: function(name) { - var res = document.cookie.match('(?:^|;)\\s*' + name + '=([^;]*)'); - if (res) return decodeURIComponent(res[1]); - }, - - remove: function(name) { - this.set(name, '', -1); - } -}; - -Fx = Base.extend(Chain, Callback, { - options: { - fps: 50, - unit: false, - duration: 500, - wait: true, - transition: function(p) { - return -(Math.cos(Math.PI * p) - 1) / 2; - } - }, - - initialize: function(element, options) { - this.element = DomElement.get(element); - this.setOptions(options); - }, - - step: function() { - var time = Date.now(); - if (time < this.time + this.options.duration) { - this.delta = this.options.transition((time - this.time) / this.options.duration); - this.update(this.get()); - } else { - this.stop(true); - this.update(this.to); - this.fireEvent('complete', [this.element]).callChain(); - } - }, - - set: function(to) { - this.update(to); - this.fireEvent('set', [this.element]); - return this; - }, - - get: function() { - return this.compute(this.from, this.to); - }, - - compute: function(from, to) { - return (to - from) * this.delta + from; - }, - - start: function(from, to) { - if (!this.options.wait) this.stop(); - else if (this.timer) return this; - this.from = from; - this.to = to; - this.time = Date.now(); - if (!this.slave) { - this.timer = this.step.periodic(Math.round(1000 / this.options.fps), this); - this.fireEvent('start', [this.element]); - } - this.step(); - return this; - }, - - stop: function(end) { - if (this.timer) { - this.timer = this.timer.clear(); - if (!end) this.fireEvent('cancel', [this.element]).clearChain(); - } - return this; - } -}); - -Fx.Scroll = Fx.extend({ - options: { - offset: { x: 0, y: 0 }, - wheelStops: true - }, - - initialize: function(element, options) { - this.base(element, options); - if (this.options.wheelStops) { - var stop = this.stop.bind(this), stopper = this.element; - this.addEvent('start', function() { - stopper.addEvent('mousewheel', stop); - }, true); - this.addEvent('complete', function() { - stopper.removeEvent('mousewheel', stop); - }, true); - } - }, - - update: function(x, y) { - var now = Array.flatten(arguments); - this.element.setScrollOffset(now[0], now[1]); - }, - - get: function() { - var now = []; - for (var i = 0; i < 2; i++) - now.push(this.compute(this.from[i], this.to[i])); - return now; - }, - - start: function(x, y) { - var offsetSize = this.element.getSize(), - scrollSize = this.element.getScrollSize(), - scroll = this.element.getScrollOffset(), - values = { x: x, y: y }, - lookup = { x: 'width', y: 'height' }; - for (var i in values) { - var s = lookup[i]; - var max = scrollSize[s] - offsetSize[s]; - if (Base.check(values[i])) - values[i] = Base.type(values[i]) == 'number' - ? values[i].limit(0, max) : max; - else values[i] = scroll[i]; - values[i] += this.options.offset[i]; - } - return this.base([scroll.x, scroll.y], [values.x, values.y]); - }, - - toTop: function() { - return this.start(false, 0); - }, - - toLeft: function() { - return this.start(0, false); - }, - - toRight: function() { - return this.start('right', false); - }, - - toBottom: function() { - return this.start(false, 'bottom'); - }, - - toElement: function(el, options) { - var el = DomElement.get(el), offset = el.getOffset(), - current = el.getWindow().getScrollOffset(); - return this.start( - !options || options.x ? offset.x : current.x, - !options || options.y ? offset.y : current.y); - } -}); - -Fx.SmoothScroll = Fx.Scroll.extend({ - initialize: function(options, context) { - context = DomElement.get(context || document); - var doc = context.getDocument(), win = context.getWindow(); - this.base(doc, options); - var links = this.options.links ? $$(this.options.links) : $$('a', context); - var loc = win.location.href.match(/^[^#]*/)[0] + '#'; - links.each(function(link) { - if (link.$.href.indexOf(loc) != 0) return; - var hash = link.$.href.substring(loc.length); - var anchor = hash && DomElement.get('#' + hash, context); - if (anchor) { - link.addEvent('click', function(event) { - this.toElement(anchor); - var props = anchor.getProperties('name', 'id'); - anchor.removeProperties('name', 'id'); - win.location.hash = hash; - anchor.setProperties(props); - event.stop(); - }.bind(this)); - } - }, this); - } -}); - -Fx.CSS = new function() { - - var parsers = new Hash({ - color: { - match: function(value) { - if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true); - return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false; - }, - - compute: function(from, to, fx) { - return from.map(function(value, i) { - return Math.round(fx.compute(value, to[i])); - }); - }, - - get: function(value) { - return value.map(Number); - } - }, - - number: { - match: function(value) { - return parseFloat(value); - }, - - compute: function(from, to, fx) { - return fx.compute(from, to); - }, - - get: function(value, unit) { - return (unit) ? value + unit : value; - } - } - }); - - return { - start: function(element, property, values) { - values = Array.convert(values); - if (!Base.check(values[1])) - values = [ element.getStyle(property), values[0] ]; - var parsed = values.map(Fx.CSS.set); - return { from: parsed[0], to: parsed[1] }; - }, - - set: function(value) { - return Array.convert(value).map(function(val) { - val = val + ''; - var res = parsers.find(function(parser, key) { - var value = parser.match(val); - if (Base.check(value)) return { value: value, parser: parser }; - }) || { - value: val, - parser: { - compute: function(from, to) { - return to; - } - } - }; - return res; - }); - }, - - compute: function(from, to, fx) { - return from.map(function(obj, i) { - return { - value: obj.parser.compute(obj.value, to[i].value, fx), - parser: obj.parser - }; - }); - }, - - get: function(now, unit) { - return now.reduce(function(prev, cur) { - var get = cur.parser.get; - return prev.concat(get ? get(cur.value, unit) : cur.value); - }, []); - } - } -}; - -Fx.Style = Fx.extend({ - initialize: function(element, property, options) { - this.base(element, options); - this.property = property; - }, - - hide: function() { - return this.set(0); - }, - - get: function() { - return Fx.CSS.compute(this.from, this.to, this); - }, - - set: function(to) { - return this.base(Fx.CSS.set(to)); - }, - - start: function(from, to) { - if (this.timer && this.options.wait) return this; - var parsed = Fx.CSS.start(this.element, this.property, [from, to]); - return this.base(parsed.from, parsed.to); - }, - - update: function(val) { - this.element.setStyle(this.property, Fx.CSS.get(val, this.options.unit)); - } -}); - -HtmlElement.inject({ - effect: function(prop, opts) { - return new Fx.Style(this, prop, opts); - } -}); - -Fx.Styles = Fx.extend({ - get: function() { - var that = this; - return Base.each(this.from, function(from, key) { - this[key] = Fx.CSS.compute(from, that.to[key], that); - }, {}); - }, - - set: function(to) { - return this.base(Base.each(to, function(val, key) { - this[key] = Fx.CSS.set(val); - }, {})); - }, - - start: function(obj) { - if (this.timer && this.options.wait) return this; - var from = {}, to = {}; - Base.each(obj, function(val, key) { - var parsed = Fx.CSS.start(this.element, key, val); - from[key] = parsed.from; - to[key] = parsed.to; - }, this); - return this.base(from, to); - }, - - update: function(val) { - Base.each(val, function(val, key) { - this.element.setStyle(key, Fx.CSS.get(val, this.options.unit)); - }, this); - } - -}); - -HtmlElement.inject({ - effects: function(opts) { - return new Fx.Styles(this, opts); - } -}); - -Fx.Elements = Fx.extend({ - initialize: function(elements, options) { - this.base(null, options); - this.elements = DomElement.getAll(elements); - }, - - start: function(obj) { - if (this.timer && this.options.wait) return this; - this.effects = {}; - - function start(that, key, val) { - var fx = that.effects[key] = new Fx.Styles(that.elements[key], that.options); - fx.slave = true; - fx.start(val); - } - - Base.each(obj, function(val, key) { - if (key == '*') { - this.elements.each(function(el, key) { - start(this, key, val); - }, this); - } else if (isNaN(parseInt(key))) { - var els = DomElement.getAll(key); - this.elements.append(els); - els.each(function(el) { - start(this, this.elements.indexOf(el), val); - }, this); - } else { - start(this, key, val); - } - }, this); - return this.base(); - }, - - set: function(to) { - }, - - update: function(to) { - Base.each(this.effects, function(fx) { - fx.step(); - }); - } -}); - -Fx.Transitions = new Base().inject({ - inject: function(src) { - return this.base(Base.each(src, function(func, name) { - func.In = func; - - func.Out = function(pos) { - return 1 - func(1 - pos); - } - - func.InOut = function(pos) { - return pos <= 0.5 ? func(2 * pos) / 2 : (2 - func(2 * (1 - pos))) / 2; - } - })); - }, - - Linear: function(p) { - return p; - } -}); - -Fx.Transitions.inject({ - Pow: function(p, x) { - return Math.pow(p, x[0] || 6); - }, - - Expo: function(p) { - return Math.pow(2, 8 * (p - 1)); - }, - - Circ: function(p) { - return 1 - Math.sin(Math.acos(p)); - }, - - Sine: function(p) { - return 1 - Math.sin((1 - p) * Math.PI / 2); - }, - - Back: function(p, x) { - x = x[0] || 1.618; - return Math.pow(p, 2) * ((x + 1) * p - x); - }, - - Bounce: function(p) { - var value; - for (var a = 0, b = 1; 1; a += b, b /= 2) { - if (p >= (7 - 4 * a) / 11) { - value = - Math.pow((11 - 6 * a - 11 * p) / 4, 2) + b * b; - break; - } - } - return value; - }, - - Elastic: function(p, x) { - return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3); - } - -}); - -Fx.Transitions.inject(['Quad', 'Cubic', 'Quart', 'Quint'].each(function(name, i) { - this[name] = function(p) { - return Math.pow(p, i + 2); - } -}, {})); - diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/codemirror.js b/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/codemirror.js deleted file mode 100644 index 9339a758..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/codemirror.js +++ /dev/null @@ -1 +0,0 @@ -var CodeMirror=function(){function D(a,b){if(a.indexOf)return a.indexOf(b);for(var c=0,d=a.length;c=0&&d>=0;--c,--d)if(a.charAt(c)!=b.charAt(d))break;return d+1}function B(a){return a.replace(/[<>&]/g,function(a){return a=="&"?"&":a=="<"?"<":">"})}function A(a){return{line:a.line,ch:a.ch}}function z(a,b){return a.linea&&d.push(h.slice(a-f,Math.min(h.length,b-f)),c[e+1]),i>=a&&(g=1)):g==1&&(i>b?d.push(h.slice(0,b-f),c[e+1]):d.push(h,c[e+1])),f=i}}function g(a,b){this.styles=b||[a,null],this.stateAfter=null,this.text=a,this.marked=this.gutterMarker=this.className=null}function f(a){this.pos=this.start=0,this.string=a}function e(a,b,c){return a.startState?a.startState(b,c):!0}function d(a,b){if(b===!0)return b;if(a.copyState)return a.copyState(b);var c={};for(var d in b){var e=b[d];e instanceof Array&&(e=e.concat([])),c[d]=e}return c}function a(b,c){function cG(a,b,c){this.atOccurrence=!1,c==null&&(c=typeof a=="string"&&a==a.toLowerCase()),b&&typeof b=="object"?b=bX(b):b={line:0,ch:0},this.pos={from:b,to:b};if(typeof a!="string")this.matches=function(b,c){if(b){var d=S[c.line].text.slice(0,c.ch),e=d.match(a),f=0;while(e){var g=d.indexOf(e[0]);f+=g,d=d.slice(g+1);var h=d.match(a);if(h)e=h;else break}}else var d=S[c.line].text.slice(c.ch),e=d.match(a),f=e&&c.ch+d.indexOf(e[0]);if(e)return{from:{line:c.line,ch:f},to:{line:c.line,ch:f+e[0].length},match:e}};else{c&&(a=a.toLowerCase());var d=c?function(a){return a.toLowerCase()}:function(a){return a},e=a.split("\n");e.length==1?this.matches=function(b,c){var e=d(S[c.line].text),f=a.length,g;if(b?c.ch>=f&&(g=e.lastIndexOf(a,c.ch-f))!=-1:(g=e.indexOf(a,c.ch))!=-1)return{from:{line:c.line,ch:g},to:{line:c.line,ch:g+f}}}:this.matches=function(a,b){var c=b.line,f=a?e.length-1:0,g=e[f],h=d(S[c].text),i=a?h.indexOf(g)+g.length:h.lastIndexOf(g);if(!(a?i>=b.ch||i!=g.length:i<=b.ch||i!=h.length-g.length))for(;;){if(a?!c:c==S.length-1)return;h=d(S[c+=a?-1:1].text),g=e[a?--f:++f];if(f>0&&f=S.length)continue;var c=cy(b),g=c&&S[c-1].stateAfter;g?g=d(R,g):g=e(R);for(var h=c,i=S.length;ha){T.push(h),cB(f.workDelay),_.push({from:b,to:h});return}var l=j.highlight(R,g);j.stateAfter=d(R,g);if(k&&!l&&j.text)break}_.push({from:b,to:h})}}function cz(a){var b=cy(a),c=b&&S[b-1].stateAfter;c?c=d(R,c):c=e(R);for(var f=b;fe;--d){if(d==0)return 0;var f=S[d-1];if(f.stateAfter)return d;var g=f.indentation();if(c==null||b>g)c=d,b=g}return c}function cx(a){function p(a,b,c){if(!!a.text){var d=a.styles,e=g?0:a.text.length-1,f;for(var i=g?0:d.length-2,j=g?d.length:-2;i!=j;i+=2*h){var k=d[i];if(d[i+1]!=null&&d[i+1]!=m){e+=h*k.length;continue}for(var l=g?0:k.length-1,p=g?k.length:-1;l!=p;l+=h,e+=h)if(e>=b&&e"==g)n.push(f);else{if(n.pop()!=q.charAt(0))return{pos:e,match:!1};if(!n.length)return{pos:e,match:!0}}}}}}var b=W.inverted?W.from:W.to,c=S[b.line],d=b.ch-1,e=d>=0&&cw[c.text.charAt(d)]||cw[c.text.charAt(++d)];if(!!e){var f=e.charAt(0),g=e.charAt(1)==">",h=g?1:-1,i=c.styles;for(var j=d+1,k=0,l=i.length;kl.clientWidth||e-c.top>l.clientHeight))return null;var f=w(L),g=bd+Math.floor((e-f.top)/cq());return bX({line:g,ch:cn(bW(g),d-f.left)})}function cs(){return L.offsetLeft}function cr(){return L.offsetTop}function cq(){var a=N.childNodes.length;if(a)return N.offsetHeight/a;v.innerHTML="
    x
    ";return v.firstChild.offsetHeight||1}function cp(a){var b=co(a,!0),c=w(L);return{x:c.left+b.x,y:c.top+b.y,yBot:c.top+b.yBot}}function co(a,b){var c=cq(),d=a.line-(b?bd:0);return{x:cm(a.line,a.ch),y:d*c,yBot:(d+1)*c}}function cn(a,b){function e(a){v.innerHTML="
    "+c.getHTML(null,null,!1,a)+"
    ";return v.firstChild.firstChild.offsetWidth}if(b<=0)return 0;var c=S[a],d=c.text,f=0,g=0,h=d.length,i,j=Math.min(h,Math.ceil(b/cl("x")));for(;;){var k=e(j);if(k<=b&&ji)return h;j=Math.floor(h*.8),k=e(j),kb-g?f:h;var l=Math.ceil((f+h)/2),m=e(l);m>b?(h=l,i=m):(f=l,g=m)}}function cm(a,b){if(b==0)return 0;v.innerHTML="
    "+S[a].getHTML(null,null,!1,b)+"
    ";return v.firstChild.firstChild.offsetWidth}function cl(a){v.innerHTML="
    x
    ",v.firstChild.firstChild.firstChild.nodeValue=a;return v.firstChild.firstChild.offsetWidth||10}function ck(a){if(typeof a=="number"){var b=a;a=S[a];if(!a)return null}else{var b=D(S,a);if(b==-1)return null}var c=a.gutterMarker;return{line:b,text:a.text,markerText:c&&c.text,markerClass:c&&c.style}}function cj(a,b){if(typeof a=="number"){var c=a;a=S[bW(a)]}else{var c=D(S,a);if(c==-1)return null}a.className=b,_.push({from:c,to:c+1});return a}function ci(a){typeof a=="number"&&(a=S[bW(a)]),a.gutterMarker=null,bR()}function ch(a,b,c){typeof a=="number"&&(a=S[bW(a)]),a.gutterMarker={text:b,style:c},bR();return a}function cg(a,b,c){function e(a,b,c,e){var a=S[a],f=a.addMark(b,c,e);f.line=a,d.push(f)}a=bX(a),b=bX(b);var d=[];if(a.line==b.line)e(a.line,a.ch,b.ch,c);else{e(a.line,a.ch,null,c);for(var f=a.line+1,g=b.line;f-1&&(a==null&&(a=f),b=f)}a!=null&&_.push({from:a,to:b+1})}}function cf(){var a=f.gutter||f.lineNumbers;H.style.display=a?"":"none",a?bR():N.parentNode.style.marginLeft=0}function ce(){R=a.getMode(f,f.mode);for(var b=0,c=S.length;b0&&/\w/.test(b.charAt(c-1)))--c;while(d=S.length)return{line:S.length-1,ch:S[S.length-1].text.length};var b=a.ch,c=S[a.line].text.length;return b==null||b>c?{line:a.line,ch:c}:b<0?{line:a.line,ch:0}:a}function bW(a){return Math.max(0,Math.min(a,S.length-1))}function bV(a,b,c){var d=bX({line:a,ch:b||0});(c?bT:bU)(d,d)}function bU(a,b,c,d){if(!y(W.from,a)||!y(W.to,b)){if(z(b,a)){var e=b;b=a,a=e}var f=y(W.to,b),g=y(W.from,a);y(a,b)?W.inverted=!1:f&&!g?W.inverted=!0:g&&!f&&(W.inverted=!1),c==null&&(c=W.from.line,d=W.to.line),y(a,b)?y(W.from,W.to)||_.push({from:c,to:d+1}):y(W.from,W.to)?_.push({from:a.line,to:b.line+1}):(y(a,W.from)||(a.line':"
    ",g,"
    ")}H.style.display="none",I.innerHTML=c.join("");var h=String(S.length).length,i=I.firstChild,j=x(i),k="";while(j.length+k.length0;--k)N.removeChild(j?j.previousSibling:N.lastChild);else if(i){for(var k=Math.max(0,i);k>0;--k)N.insertBefore(document.createElement("pre"),j);for(var k=Math.max(0,-i);k>0;--k)N.removeChild(j?j.previousSibling:N.lastChild)}var l=N.childNodes[h.domStart+d],m=b=h.from;for(var k=h.from;kj.from&&f.push({from:j.from,to:e.from,domStart:j.domStart}),e.to=n)break;if(j.domStart>p||j.from>r)o.push({from:r,to:j.from,domSize:j.domStart-p,domStart:p}),s+=j.from-r;r=j.to,p=j.domStart+(j.to-j.from)}if(p!=q||r!=n)s+=Math.abs(n-r),o.push({from:r,to:n,domSize:q-p,domStart:p});if(!o.length)return;N.style.display="none",s>(k.to-k.from)*.3?bP(m=Math.max(k.from-10,0),n=Math.min(k.to+7,S.length)):bQ(o),N.style.display="";var t=m!=bd||n!=be||bf!=l.clientHeight;bd=m,be=n,B.style.top=m*cq()+"px",t&&(bf=l.clientHeight,u.style.height=S.length*cq()+2*cr()+"px",bR());var v=cl(bj);L.style.width=v>l.clientWidth?v+"px":"";if(N.childNodes.length!=be-bd)throw new Error("BAD PATCH! "+JSON.stringify(o)+" size="+(be-bd)+" nodes="+N.childNodes.length);bS()}}function bN(){var a=cq(),b=l.scrollTop-cr();return{from:Math.min(S.length,Math.max(0,Math.floor(b/a))),to:Math.min(S.length,Math.ceil((b+l.clientHeight)/a))}}function bM(a,b,c,d){var e=cs(),g=cr();b+=g,d+=g,a+=e,c+=e;var h=l.clientHeight,i=l.scrollTop,j=!1,k=!0;bi+h&&(l.scrollTop=d+10-h,j=!0);var m=l.clientWidth,n=l.scrollLeft;am+n&&(l.scrollLeft=c+10-m,j=!0,c>u.clientWidth&&(k=!1)),j&&f.onScroll&&f.onScroll(bl);return k}function bL(){var a=co(W.inverted?W.from:W.to);return bM(a.x,a.y,a.x,a.yBot)}function bK(){var a=[],b=Math.max(0,W.from.line-1),c=Math.min(S.length,W.to.line+2);for(var d=b;d=a)return{line:c,ch:a-d};++c,d=e+1}}var a=!1,b=K.value,c=F(K);if(!c)return!1;var a=bh.text!=b,d=Y,e=a||c.start!=bh.start||c.end!=(d?bh.start:bh.end);if(!e&&!d)return!1;if(a){X=Y=null;if(f.readOnly){$=!0;return"changed"}}var h=g(c.start,bh.from),i=g(c.end,bh.from);if(d){h=c.start==d.anchor?i:h,i=X?W.to:c.start==d.anchor?h:i;if(!z(h,i)){Y=null,W.inverted=!1;var j=h;h=i,i=j}}h.line==i.line&&h.line==W.from.line&&h.line==W.to.line&&!X&&($=!1);if(a){var k=0,l=b.length,m=Math.min(l,bh.text.length),n,o=bh.from,p=-1;while(k-1?k-p:k,r=bh.to-1,s=bh.text.length;for(;;){n=bh.text.charAt(s),n=="\n"&&r--;if(b.charAt(l)!=n){++l,++s;break}if(s<=k||l<=k)break;--l,--s}var p=bh.text.lastIndexOf("\n",s-1),t=p==-1?s:s-p-1;bw({line:o,ch:q},{line:r,ch:t},E(b.slice(k,l)),h,i);if(o!=r||h.line!=o)$=!0}else bU(h,i);bh.text=b,bh.start=c.start,bh.end=c.end;return a?"changed":e?"moved":!1}function bI(a){function c(){cC();var d=bJ();d=="moved"&&a&&(t[a]=!0),!d&&!b?(b=!0,O.set(80,c)):(bG=!1,bH()),cD()}var b=!1;bG=!0,O.set(20,c)}function bH(){bG||O.set(2e3,function(){cC(),bJ(),V&&bH(),cD()})}function bF(){return bE(W.from,W.to)}function bE(a,b){var c=a.line,d=b.line;if(c==d)return S[c].text.slice(a.ch,b.ch);var e=[S[c].text.slice(a.ch)];for(var f=c+1;fh&&(bj=o,h=o.length,f=!1)}if(f){h=0;for(var i=0,n=S.length;ih&&(h=o.length,bj=o)}}var p=[],q=c.length-j-1;for(var i=0,o=T.length;ib.line&&p.push(r+q)}c.length&&p.push(a.line),T=p,cB(100),_.push({from:a.line,to:b.line+1,diff:q}),ba={from:a,to:b,text:c},bU(d,e,s(W.from.line),s(W.to.line)),u.style.height=S.length*cq()+2*cr()+"px"}function bz(){bx(U.undone,U.done)}function by(){bx(U.done,U.undone)}function bx(a,b){var c=a.pop();if(c){var d=[],e=c.start+c.added;for(var f=c.start;ff.undoDepth)U.done.shift()}bA(a,b,c,d,e)}function bv(){V&&f.onBlur&&f.onBlur(bl),clearInterval(Q),X=null,V=!1,l.className=l.className.replace(" CodeMirror-focused","")}function bu(){!V&&f.onFocus&&f.onFocus(bl),V=!0,bH(),l.className.search(/\bCodeMirror-focused\b/)==-1&&(l.className+=" CodeMirror-focused"),cv()}function bt(a){if(!f.onKeyEvent||!f.onKeyEvent(bl,k(a.e))){if(f.electricChars&&R.electricChars){var b=String.fromCharCode(a.e.charCode==null?a.e.keyCode:a.e.charCode);R.electricChars.indexOf(b)>-1&&setTimeout(cF(function(){cd(W.to.line,"smart")}),50)}var c=a.e.keyCode;c==13?(f.readOnly||cb(),a.stop()):!a.e.ctrlKey&&!a.e.altKey&&!a.e.metaKey&&c==9&&f.tabMode!="default"?a.stop():bI(bg)}}function bs(a){Y&&(Y=null,$=!0),a.e.keyCode==16&&(X=null)}function br(a){V||bu();var b=a.e.keyCode,c=(s?a.e.metaKey:a.e.ctrlKey)&&!a.e.altKey,d=a.e.ctrlKey||a.e.altKey||a.e.metaKey;b==16||a.e.shiftKey?X=X||(W.inverted?W.to:W.from):X=null;if(!f.onKeyEvent||!f.onKeyEvent(bl,k(a.e))){if(b==33||b==34){bY(b==34);return a.stop()}if(c&&(b==36||b==35||s&&(b==38||b==40))){bZ(b==36||b==38);return a.stop()}if(c&&b==65){b$();return a.stop()}if(!f.readOnly){if(!d&&b==13)return;if(!d&&b==9&&cc(a.e.shiftKey))return a.stop();if(c&&b==90){by();return a.stop()}if(c&&(a.e.shiftKey&&b==90||b==89)){bz();return a.stop()}}bg=(c?"c":"")+b;if(W.inverted&&t.hasOwnProperty(bg)){var e=F(K);e&&(Y={anchor:e.start},G(K,e.start,e.start))}bI(bg)}}function bq(a){var b=ct(a,!0),c=a.e.dataTransfer.files;if(!!b&&!f.readOnly)if(c&&c.length&&window.FileReader&&window.File){var d=c.length,e=Array(d),g=0;for(var h=0;h=c.to||b.line=0&&a",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},cE=0;cG.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(a){function d(a){var c={line:a,ch:0};b.pos={from:c,to:c},b.atOccurrence=!1;return!1}var b=this,c=bX(a?this.pos.from:this.pos.to);for(;;){if(this.pos=this.matches(a,c)){this.atOccurrence=!0;return this.pos.match||!0}if(a){if(!c.line)return d(0);c={line:c.line-1,ch:S[c.line-1].text.length}}else{if(c.line==S.length-1)return d(S.length);c={line:c.line+1,ch:0}}}},from:function(){if(this.atOccurrence)return A(this.pos.from)},to:function(){if(this.atOccurrence)return A(this.pos.to)}};return bl}a.defaults={value:"",mode:null,indentUnit:2,indentWithTabs:!1,tabMode:"classic",enterMode:"indent",electricChars:!0,onKeyEvent:null,lineNumbers:!1,gutter:!1,firstLineNumber:1,readOnly:!1,onChange:null,onCursorActivity:null,onGutterClick:null,onFocus:null,onBlur:null,onScroll:null,matchBrackets:!1,workTime:100,workDelay:200,undoDepth:40,tabindex:null};var b={},c={};a.defineMode=function(c,d){!a.defaults.mode&&c!="null"&&(a.defaults.mode=c),b[c]=d},a.defineMIME=function(a,b){c[a]=b},a.getMode=function(d,e){typeof e=="string"&&c.hasOwnProperty(e)&&(e=c[e]);if(typeof e=="string")var f=e,g={};else var f=e.name,g=e;var h=b[f];if(!h){window.console&&console.warn("No mode "+f+" found, falling back to plain text.");return a.getMode(d,"text/plain")}return h(d,g)},a.listModes=function(){var a=[];for(var c in b)b.propertyIsEnumerable(c)&&a.push(c);return a},a.listMIMEs=function(){var a=[];for(var b in c)c.propertyIsEnumerable(b)&&a.push(b);return a},a.fromTextArea=function(b,c){function d(){b.value=h.getValue()}c||(c={}),c.value=b.value,!c.tabindex&&b.tabindex&&(c.tabindex=b.tabindex);if(b.form){var e=m(b.form,"submit",d,!0);if(typeof b.form.submit=="function"){var f=b.form.submit;function g(){d(),b.form.submit=f,b.form.submit(),b.form.submit=g}b.form.submit=g}}b.style.display="none";var h=a(function(a){b.parentNode.insertBefore(a,b.nextSibling)},c);h.save=d,h.toTextArea=function(){d(),b.parentNode.removeChild(h.getWrapperElement()),b.style.display="",b.form&&(e(),typeof b.form.submit=="function"&&(b.form.submit=f))};return h},a.startState=e,a.copyState=d,f.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==0},peek:function(){return this.string.charAt(this.pos)},next:function(){if(this.posb},eatSpace:function(){var a=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos)))++this.pos;return this.pos>a},skipToEnd:function(){this.pos=this.string.length},skipTo:function(a){var b=this.string.indexOf(a,this.pos);if(b>-1){this.pos=b;return!0}},backUp:function(a){this.pos-=a},column:function(){return v(this.string,this.start)},indentation:function(){return v(this.string)},match:function(a,b,c){if(typeof a!="string"){var e=this.string.slice(this.pos).match(a);e&&b!==!1&&(this.pos+=e[0].length);return e}function d(a){return c?a.toLowerCase():a}if(d(this.string).indexOf(d(a),this.pos)==this.pos){b!==!1&&(this.pos+=a.length);return!0}},current:function(){return this.string.slice(this.start,this.pos)}},g.prototype={replace:function(a,b,c){var d=[],e=this.marked;h(0,a,this.styles,d),c&&d.push(c,null),h(b,this.text.length,this.styles,d),this.styles=d,this.text=this.text.slice(0,a)+c+this.text.slice(b),this.stateAfter=null;if(e){var f=c.length-(b-a),g=this.text.length;function i(a){return a<=Math.min(b,b+f)?a:a+f}for(var j=0;j=g?l=!0:(k.from=i(k.from),k.to!=null&&(k.to=i(k.to)));if(l||k.from>=k.to)e.splice(j,1),j--}}},split:function(a,b){var c=[b,null];h(a,this.text.length,this.styles,c);return new g(b+this.text.slice(a),c)},addMark:function(a,b,c){var d=this.marked,e={from:a,to:b,style:c};this.marked==null&&(this.marked=[]),this.marked.push(e),this.marked.sort(function(a,b){return a.from-b.from});return e},removeMark:function(a){var b=this.marked;if(!!b)for(var c=0;c5e3){d[e++]=this.text.slice(c.pos),d[e++]=null;break}}d.length!=e&&(d.length=e,g=!0),e&&d[e-2]!=i&&(g=!0);return g},getTokenAt:function(a,b,c){var d=this.text,e=new f(d);while(e.pos',B(a),""):e.push(B(a)))}var e=[];c&&e.push(this.className?'
    ':"
    ");var g=this.styles,h=this.text,i=this.marked;a==b&&(a=null);var j=h.length;d!=null&&(j=Math.min(d,j));if(!h&&d==null)f(" ",a!=null&&b==null?"CodeMirror-selected":null);else if(!i&&a==null)for(var k=0,l=0;lj&&(m=m.slice(0,j-l)),l+=n,f(m,g[k+1])}else{var o=0,k=0,p="",q,r=0,s=-1,t=null;function u(){i&&(s+=1,t=so)v=a;else if(b==null||b>o)w=" CodeMirror-selected",b!=null&&(v=Math.min(v,b));while(t&&t.to!=null&&t.to<=o)u();t&&(t.from>o?v=Math.min(v,t.from):(w+=" "+t.style,t.to!=null&&(v=Math.min(v,t.to))));for(;;){var x=o+p.length,y=q;w&&(y=q?q+w:w),f(x>v?p.slice(0,v-o):p,y);if(x>=v){p=p.slice(v-o),o=v;break}o=x,p=g[k++],q=g[k++]}}a!=null&&b==null&&f(" ","CodeMirror-selected")}c&&e.push("
    ");return e.join("")}},i.prototype={addChange:function(a,b,c){this.undone.length=0;var d=+(new Date),e=this.done[this.done.length-1];if(d-this.time>400||!e||e.start>a+b||e.start+e.added=0;--g)e.old.unshift(c[g]);e.added+=e.start-a,e.start=a}else e.start-1&&(q="\r\n")})();var r=8,s=/Mac/.test(navigator.platform),t={};for(var u=35;u<=40;++u)t[u]=t["c"+u]=!0;if("\n\nb".split(/\n/).length!=3)var E=function(a){var b=0,c,d=[];while((c=a.indexOf("\n",b))>-1)d.push(a.slice(b,a.charAt(c-1)=="\r"?c-1:c)),b=c+1;d.push(a.slice(b));return d};else var E=function(a){return a.split(/\r?\n/)};if(window.getSelection)var F=function(a){try{return{start:a.selectionStart,end:a.selectionEnd}}catch(b){return null}},G=function(a,b,c){try{a.setSelectionRange(b,c)}catch(d){}};else var F=function(a){try{var b=document.selection.createRange()}catch(c){return null}if(!b||b.parentElement()!=a)return null;var d=a.value,e=d.length,f=a.createTextRange();f.moveToBookmark(b.getBookmark());var g=a.createTextRange();g.collapse(!1);if(f.compareEndPoints("StartToEnd",g)>-1)return{start:e,end:e};var h=-f.moveStart("character",-e);for(var i=d.indexOf("\r");i>-1&&i-1)return{start:h,end:e};var j=-f.moveEnd("character",-e);for(var i=d.indexOf("\r");i>-1&&i-1&&h-1&&h=0;a--)s.cc.push(arguments[a])}function r(a,b,c,e,f){var g=a.cc;s.state=a,s.stream=f,s.marked=null,s.cc=g,a.lexical.hasOwnProperty("align")||(a.lexical.align=!0);for(;;){var h=g.length?g.pop():d?D:C;if(h(c,e)){while(g.length&&g[g.length-1].lex)g.pop()();if(s.marked)return s.marked;if(c=="variable"&&q(a,e))return"js-localvariable";return b}}}function q(a,b){for(var c=a.localVars;c;c=c.next)if(c.name==b)return!0}function p(a,b,c,d,e,f){this.indented=a,this.column=b,this.type=c,this.prev=e,this.info=f,d!=null&&(this.align=d)}function n(a,b){var c=!1,d;while(d=a.next()){if(d=="/"&&c){b.tokenize=l;break}c=d=="*"}return k("comment","js-comment")}function m(a){return function(b,c){h(b,a)||(c.tokenize=l);return k("string","js-string")}}function l(a,b){var c=a.next();if(c=='"'||c=="'")return g(a,b,m(c));if(/[\[\]{}\(\),;\:\.]/.test(c))return k(c);if(c=="0"&&a.eat(/x/i)){a.eatWhile(/[\da-f]/i);return k("number","js-atom")}if(/\d/.test(c)){a.match(/^\d*(?:\.\d*)?(?:e[+\-]?\d+)?/);return k("number","js-atom")}if(c=="/"){if(a.eat("*"))return g(a,b,n);if(a.eat("/")){a.skipToEnd();return k("comment","js-comment")}if(b.reAllowed){h(a,"/"),a.eatWhile(/[gimy]/);return k("regexp","js-string")}a.eatWhile(f);return k("operator",null,a.current())}if(f.test(c)){a.eatWhile(f);return k("operator",null,a.current())}a.eatWhile(/[\w\$_]/);var d=a.current(),i=e.propertyIsEnumerable(d)&&e[d];return i?k(i.type,i.style,d):k("variable","js-variable",d)}function k(a,b,c){i=a,j=c;return b}function h(a,b){var c=!1,d;while((d=a.next())!=null){if(d==b&&!c)return!1;c=!c&&d=="\\"}return c}function g(a,b,c){b.tokenize=c;return c(a,b)}var c=a.indentUnit,d=b.json,e=function(){function a(a){return{type:a,style:"js-keyword"}}var b=a("keyword a"),c=a("keyword b"),d=a("keyword c"),e=a("operator"),f={type:"atom",style:"js-atom"};return{"if":b,"while":b,"with":b,"else":c,"do":c,"try":c,"finally":c,"return":d,"break":d,"continue":d,"new":d,"delete":d,"throw":d,"var":a("var"),"function":a("function"),"catch":a("catch"),"for":a("for"),"switch":a("switch"),"case":a("case"),"default":a("default"),"in":e,"typeof":e,"instanceof":e,"true":f,"false":f,"null":f,"undefined":f,NaN:f,Infinity:f}}(),f=/[+\-*&%=<>!?|]/,i,j,o={atom:!0,number:!0,variable:!0,string:!0,regexp:!0},s={state:null,column:null,marked:null,cc:null},w={name:"this",next:{name:"arguments"}};A.lex=!0;return{startState:function(a){return{tokenize:l,reAllowed:!0,cc:[],lexical:new p((a||0)-c,0,"block",!1),localVars:null,context:null,indented:0}},token:function(a,b){a.sol()&&(b.lexical.hasOwnProperty("align")||(b.lexical.align=!1),b.indented=a.indentation());if(a.eatSpace())return null;var c=b.tokenize(a,b);if(i=="comment")return c;b.reAllowed=i=="operator"||i=="keyword c"||i.match(/^[\[{}\(,;:]$/);return r(b,c,i,j,a)},indent:function(a,b){if(a.tokenize!=l)return 0;var d=b&&b.charAt(0),e=a.lexical,f=e.type,g=d==f;return f=="vardef"?e.indented+4:f=="form"&&d=="{"?e.indented:f=="stat"||f=="form"?e.indented+c:e.info=="switch"&&!g?e.indented+(/^(?:case|default)\b/.test(b)?c:2*c):e.align?e.column+(g?0:1):e.indented+(g?0:c)},electricChars:":{}"}}),CodeMirror.defineMIME("text/javascript","javascript"),CodeMirror.defineMIME("application/json",{name:"javascript",json:!0}) \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/paper.js b/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/paper.js deleted file mode 100644 index 276e1ca2..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/paper.js +++ /dev/null @@ -1,6921 +0,0 @@ -/*** - * - * Paper.js - * - * A JavaScript Vector Graphics Library, based on Scriptographer.org and - * designed to be largely API compatible. - * http://paperjs.org/ - * http://scriptographer.org/ - * - * Distributed under the MIT license. See LICENSE file for details. - * - * Copyright (c) 2011, Juerg Lehni & Jonathan Puckey - * http://lehni.org/ & http://jonathanpuckey.com/ - * - * All rights reserved. - * - *** - * - * Bootstrap.js JavaScript Framework. - * http://bootstrapjs.org/ - * - * Distributed under the MIT license. - * - * Copyright (c) 2006 - 2011 Juerg Lehni - * http://lehni.org/ - * - *** - * - * Parse-JS, A JavaScript tokenizer / parser / generator. - * - * Distributed under the BSD license. - * - * Copyright (c) 2010, Mihai Bazon - * http://mihai.bazon.net/blog/ - * - ***/ - -var paper = new function() { - -var Base = new function() { - var fix = !this.__proto__, - hidden = /^(statics|generics|preserve|enumerable|beans|prototype|__proto__|toString|valueOf)$/, - proto = Object.prototype, - has = fix - ? function(name) { - return name !== '__proto__' && this.hasOwnProperty(name); - } - : proto.hasOwnProperty, - toString = proto.toString, - proto = Array.prototype, - isArray = Array.isArray = Array.isArray || function(obj) { - return toString.call(obj) === '[object Array]'; - }, - slice = proto.slice, - forEach = proto.forEach = proto.forEach || function(iter, bind) { - for (var i = 0, l = this.length; i < l; i++) - iter.call(bind, this[i], i, this); - }, - forIn = function(iter, bind) { - for (var i in this) - if (this.hasOwnProperty(i)) - iter.call(bind, this[i], i, this); - }, - _define = Object.defineProperty, - _describe = Object.getOwnPropertyDescriptor; - - function define(obj, name, desc) { - if (_define) { - try { - delete obj[name]; - return _define(obj, name, desc); - } catch (e) {} - } - if ((desc.get || desc.set) && obj.__defineGetter__) { - desc.get && obj.__defineGetter__(name, desc.get); - desc.set && obj.__defineSetter__(name, desc.set); - } else { - obj[name] = desc.value; - } - return obj; - } - - function describe(obj, name) { - if (_describe) { - try { - return _describe(obj, name); - } catch (e) {} - } - var get = obj.__lookupGetter__ && obj.__lookupGetter__(name); - return get - ? { get: get, set: obj.__lookupSetter__(name), enumerable: true, - configurable: true } - : has.call(obj, name) - ? { value: obj[name], enumerable: true, configurable: true, - writable: true } - : null; - } - - function inject(dest, src, enumerable, base, preserve, generics) { - var beans, bean; - - function field(name, val, dontCheck, generics) { - var val = val || (val = describe(src, name)) - && (val.get ? val : val.value), - func = typeof val === 'function', - res = val, - prev = preserve || func - ? (val && val.get ? name in dest : dest[name]) : null; - if (generics && func && (!preserve || !generics[name])) { - generics[name] = function(bind) { - return bind && dest[name].apply(bind, - slice.call(arguments, 1)); - } - } - if ((dontCheck || val !== undefined && has.call(src, name)) - && (!preserve || !prev)) { - if (func) { - if (prev && /\bthis\.base\b/.test(val)) { - var fromBase = base && base[name] == prev; - res = function() { - var tmp = describe(this, 'base'); - define(this, 'base', { value: fromBase - ? base[name] : prev, configurable: true }); - try { - return val.apply(this, arguments); - } finally { - tmp ? define(this, 'base', tmp) - : delete this.base; - } - }; - res.toString = function() { - return val.toString(); - } - res.valueOf = function() { - return val.valueOf(); - } - } - if (beans && val.length == 0 - && (bean = name.match(/^(get|is)(([A-Z])(.*))$/))) - beans.push([ bean[3].toLowerCase() + bean[4], bean[2] ]); - } - if (!res || func || !res.get && !res.set) - res = { value: res, writable: true }; - if ((describe(dest, name) - || { configurable: true }).configurable) { - res.configurable = true; - res.enumerable = enumerable; - } - define(dest, name, res); - } - } - if (src) { - beans = src.beans && []; - for (var name in src) - if (has.call(src, name) && !hidden.test(name)) - field(name, null, true, generics); - field('toString'); - field('valueOf'); - for (var i = 0, l = beans && beans.length; i < l; i++) - try { - var bean = beans[i], part = bean[1]; - field(bean[0], { - get: dest['get' + part] || dest['is' + part], - set: dest['set' + part] - }, true); - } catch (e) {} - } - return dest; - } - - function extend(obj) { - var ctor = function(dont) { - if (fix) define(this, '__proto__', { value: obj }); - if (this.initialize && dont !== ctor.dont) - return this.initialize.apply(this, arguments); - } - ctor.prototype = obj; - ctor.toString = function() { - return (this.prototype.initialize || function() {}).toString(); - } - return ctor; - } - - function iterator(iter) { - return !iter - ? function(val) { return val } - : typeof iter !== 'function' - ? function(val) { return val == iter } - : iter; - } - - function each(obj, iter, bind, asArray) { - try { - if (obj) - (asArray || asArray === undefined && isArray(obj) - ? forEach : forIn).call(obj, iterator(iter), - bind = bind || obj); - } catch (e) { - if (e !== Base.stop) throw e; - } - return bind; - } - - function clone(obj) { - return each(obj, function(val, i) { - this[i] = val; - }, new obj.constructor()); - } - - return inject(function() {}, { - inject: function(src) { - if (src) { - var proto = this.prototype, - base = proto.__proto__ && proto.__proto__.constructor, - statics = src.statics == true ? src : src.statics; - if (statics != src) - inject(proto, src, src.enumerable, base && base.prototype, - src.preserve, src.generics && this); - inject(this, statics, true, base, src.preserve); - } - for (var i = 1, l = arguments.length; i < l; i++) - this.inject(arguments[i]); - return this; - }, - - extend: function(src) { - var proto = new this(this.dont), - ctor = extend(proto); - define(proto, 'constructor', - { value: ctor, writable: true, configurable: true }); - ctor.dont = {}; - inject(ctor, this, true); - return arguments.length ? this.inject.apply(ctor, arguments) : ctor; - } - }, true).inject({ - has: has, - each: each, - - inject: function() { - for (var i = 0, l = arguments.length; i < l; i++) - inject(this, arguments[i]); - return this; - }, - - extend: function() { - var res = new (extend(this)); - return res.inject.apply(res, arguments); - }, - - each: function(iter, bind) { - return each(this, iter, bind); - }, - - clone: function() { - return clone(this); - }, - - statics: { - each: each, - clone: clone, - define: define, - describe: describe, - iterator: iterator, - - has: function(obj, name) { - return has.call(obj, name); - }, - - type: function(obj) { - return (obj || obj === 0) && (obj._type || typeof obj) || null; - }, - - check: function(obj) { - return !!(obj || obj === 0); - }, - - pick: function() { - for (var i = 0, l = arguments.length; i < l; i++) - if (arguments[i] !== undefined) - return arguments[i]; - return null; - }, - - stop: {} - } - }); -} - -this.Base = Base.inject({ - - clone: function() { - return new this.constructor(this); - }, - - statics: { - read: function(list, start, length) { - var start = start || 0, - length = length || list.length - start; - var obj = list[start]; - if (obj instanceof this - || this.prototype._readNull && obj == null && length <= 1) - return obj; - obj = new this(this.dont); - return obj.initialize.apply(obj, start > 0 || length < list.length - ? Array.prototype.slice.call(list, start, start + length) - : list) || obj; - }, - - readAll: function(list, start) { - var res = [], entry; - for (var i = start || 0, l = list.length; i < l; i++) { - res.push(Array.isArray(entry = list[i]) - ? this.read(entry, 0) - : this.read(list, i, 1)); - } - return res; - }, - - initialize: function(object, values, defaults) { - if (!values) - values = defaults; - return Base.each(defaults, function(value, key) { - this[key] = values[key] || value; - }, object); - }, - - splice: function(list, items, index, remove) { - var amount = items && items.length, - append = index === undefined; - index = append ? list.length : index; - for (var i = 0; i < amount; i++) - items[i]._index = index + i; - if (append) { - list.push.apply(list, items); - return []; - } else { - var args = [index, remove]; - if (items) - args.push.apply(args, items); - var removed = list.splice.apply(list, args); - for (var i = 0, l = removed.length; i < l; i++) - delete removed[i]._index; - for (var i = index + amount, l = list.length; i < l; i++) - list[i]._index = i; - return removed; - } - }, - - capitalize: function(str) { - return str.replace(/\b[a-z]/g, function(match) { - return match.toUpperCase(); - }); - }, - - camelize: function(str) { - return str.replace(/-(\w)/g, function(all, chr) { - return chr.toUpperCase(); - }); - }, - - formatNumber: function(num) { - return (Math.round(num * 100000) / 100000).toString(); - }, - - formatObject: function(obj) { - return '{ ' + Base.each(obj, function(value, key) { - this.push(key + ': ' + value); - }, []).join(', ') + ' }'; - } - } -}); - -var PaperScope = this.PaperScope = Base.extend({ - - initialize: function(id) { - this.project = null; - - this.projects = []; - - this.view = null; - this.views = []; - - this.tool = null; - this.tools = []; - this.id = id; - PaperScope._scopes[id] = this; - - }, - - evaluate: function(code) { - return PaperScript.evaluate(code, this); - }, - - install: function(scope) { - return Base.each(this, function(value, key) { - this[key] = value; - }, scope); - }, - - clear: function() { - for (var i = this.projects.length - 1; i >= 0; i--) - this.projects[i].remove(); - for (var i = this.views.length - 1; i >= 0; i--) - this.views[i].remove(); - for (var i = this.tools.length - 1; i >= 0; i--) - this.tools[i].remove(); - }, - - remove: function() { - this.clear(); - delete PaperScope._scopes[this.id]; - }, - - statics: { - _scopes: {}, - - get: function(id) { - if (typeof id === 'object') - id = id.getAttribute('id'); - return this._scopes[id] || null; - } - } -}); - -var Point = this.Point = Base.extend({ - - beans: true, - - initialize: function(arg0, arg1) { - if (arg1 !== undefined) { - this.x = arg0; - this.y = arg1; - } else if (arg0 !== undefined) { - if (arg0 == null) { - this.x = this.y = 0; - } else if (arg0.x !== undefined) { - this.x = arg0.x; - this.y = arg0.y; - } else if (arg0.width !== undefined) { - this.x = arg0.width; - this.y = arg0.height; - } else if (Array.isArray(arg0)) { - this.x = arg0[0]; - this.y = arg0.length > 1 ? arg0[1] : arg0[0]; - } else if (arg0.angle !== undefined) { - this.x = arg0.length; - this.y = 0; - this.setAngle(arg0.angle); - } else if (typeof arg0 === 'number') { - this.x = this.y = arg0; - } else { - this.x = this.y = 0; - } - } else { - this.x = this.y = 0; - } - }, - - set: function(x, y) { - this.x = x; - this.y = y; - return this; - }, - - clone: function() { - return Point.create(this.x, this.y); - }, - - toString: function() { - var format = Base.formatNumber; - return '{ x: ' + format(this.x) + ', y: ' + format(this.y) + ' }'; - }, - - add: function(point) { - point = Point.read(arguments); - return Point.create(this.x + point.x, this.y + point.y); - }, - - subtract: function(point) { - point = Point.read(arguments); - return Point.create(this.x - point.x, this.y - point.y); - }, - - multiply: function(point) { - point = Point.read(arguments); - return Point.create(this.x * point.x, this.y * point.y); - }, - - divide: function(point) { - point = Point.read(arguments); - return Point.create(this.x / point.x, this.y / point.y); - }, - - modulo: function(point) { - point = Point.read(arguments); - return Point.create(this.x % point.x, this.y % point.y); - }, - - negate: function() { - return Point.create(-this.x, -this.y); - }, - - transform: function(matrix) { - return matrix._transformPoint(this); - }, - - getDistance: function(point) { - point = Point.read(arguments); - var x = point.x - this.x, - y = point.y - this.y; - return Math.sqrt(x * x + y * y); - }, - - getLength: function() { - return Math.sqrt(this.x * this.x + this.y * this.y); - }, - - setLength: function(length) { - if (this.isZero()) { - var angle = this._angle || 0; - this.set( - Math.cos(angle) * length, - Math.sin(angle) * length - ); - } else { - var scale = length / this.getLength(); - if (scale == 0) - this.getAngle(); - this.set( - this.x * scale, - this.y * scale - ); - } - return this; - }, - - normalize: function(length) { - if (length === undefined) - length = 1; - var current = this.getLength(), - scale = current != 0 ? length / current : 0, - point = Point.create(this.x * scale, this.y * scale); - point._angle = this._angle; - return point; - }, - - getAngle: function() { - return this.getAngleInRadians(arguments[0]) * 180 / Math.PI; - }, - - setAngle: function(angle) { - angle = this._angle = angle * Math.PI / 180; - if (!this.isZero()) { - var length = this.getLength(); - this.set( - Math.cos(angle) * length, - Math.sin(angle) * length - ); - } - return this; - }, - - getAngleInRadians: function() { - if (arguments[0] === undefined) { - if (this._angle == null) - this._angle = Math.atan2(this.y, this.x); - return this._angle; - } else { - var point = Point.read(arguments), - div = this.getLength() * point.getLength(); - if (div == 0) { - return NaN; - } else { - return Math.acos(this.dot(point) / div); - } - } - }, - - getAngleInDegrees: function() { - return this.getAngle(arguments[0]); - }, - - getQuadrant: function() { - return this.x >= 0 ? this.y >= 0 ? 1 : 4 : this.y >= 0 ? 2 : 3; - }, - - getDirectedAngle: function(point) { - point = Point.read(arguments); - var angle = this.getAngle() - point.getAngle(); - return angle < -180 ? angle + 360 : angle > 180 ? angle - 360 : angle; - }, - - rotate: function(angle, center) { - angle = angle * Math.PI / 180; - var point = center ? this.subtract(center) : this, - s = Math.sin(angle), - c = Math.cos(angle); - point = Point.create( - point.x * c - point.y * s, - point.y * c + point.x * s - ); - return center ? point.add(center) : point; - }, - - equals: function(point) { - point = Point.read(arguments); - return this.x == point.x && this.y == point.y; - }, - - isInside: function(rect) { - return rect.contains(this); - }, - - isClose: function(point, tolerance) { - return this.getDistance(point) < tolerance; - }, - - isColinear: function(point) { - return this.cross(point) < Numerical.TOLERANCE; - }, - - isOrthogonal: function(point) { - return this.dot(point) < Numerical.TOLERANCE; - }, - - isZero: function() { - return this.x == 0 && this.y == 0; - }, - - isNaN: function() { - return isNaN(this.x) || isNaN(this.y); - }, - dot: function(point) { - point = Point.read(arguments); - return this.x * point.x + this.y * point.y; - }, - - cross: function(point) { - point = Point.read(arguments); - return this.x * point.y - this.y * point.x; - }, - - project: function(point) { - point = Point.read(arguments); - if (point.isZero()) { - return Point.create(0, 0); - } else { - var scale = this.dot(point) / point.dot(point); - return Point.create( - point.x * scale, - point.y * scale - ); - } - }, - - statics: { - - create: function(x, y) { - var point = new Point(Point.dont); - point.x = x; - point.y = y; - return point; - }, - - min: function(point1, point2) { - point1 = Point.read(arguments, 0, 1); - point2 = Point.read(arguments, 1, 1); - return Point.create( - Math.min(point1.x, point2.x), - Math.min(point1.y, point2.y) - ); - }, - - max: function(point1, point2) { - point1 = Point.read(arguments, 0, 1); - point2 = Point.read(arguments, 1, 1); - return Point.create( - Math.max(point1.x, point2.x), - Math.max(point1.y, point2.y) - ); - }, - - random: function() { - return Point.create(Math.random(), Math.random()); - } - } -}, new function() { - - return Base.each(['round', 'ceil', 'floor', 'abs'], function(name) { - var op = Math[name]; - this[name] = function() { - return Point.create(op(this.x), op(this.y)); - }; - }, {}); -}); - -var LinkedPoint = Point.extend({ - beans: true, - - set: function(x, y, dontNotify) { - this._x = x; - this._y = y; - if (!dontNotify) - this._owner[this._setter](this); - return this; - }, - - getX: function() { - return this._x; - }, - - setX: function(x) { - this._x = x; - this._owner[this._setter](this); - }, - - getY: function() { - return this._y; - }, - - setY: function(y) { - this._y = y; - this._owner[this._setter](this); - }, - - statics: { - create: function(owner, setter, x, y) { - var point = new LinkedPoint(LinkedPoint.dont); - point._x = x; - point._y = y; - point._owner = owner; - point._setter = setter; - return point; - } - } -}); - -var Size = this.Size = Base.extend({ - - initialize: function(arg0, arg1) { - if (arg1 !== undefined) { - this.width = arg0; - this.height = arg1; - } else if (arg0 !== undefined) { - if (arg0 == null) { - this.width = this.height = 0; - } else if (arg0.width !== undefined) { - this.width = arg0.width; - this.height = arg0.height; - } else if (arg0.x !== undefined) { - this.width = arg0.x; - this.height = arg0.y; - } else if (Array.isArray(arg0)) { - this.width = arg0[0]; - this.height = arg0.length > 1 ? arg0[1] : arg0[0]; - } else if (typeof arg0 === 'number') { - this.width = this.height = arg0; - } else { - this.width = this.height = 0; - } - } else { - this.width = this.height = 0; - } - }, - - toString: function() { - var format = Base.formatNumber; - return '{ width: ' + format(this.width) - + ', height: ' + format(this.height) + ' }'; - }, - - set: function(width, height) { - this.width = width; - this.height = height; - return this; - }, - - add: function(size) { - size = Size.read(arguments); - return Size.create(this.width + size.width, this.height + size.height); - }, - - subtract: function(size) { - size = Size.read(arguments); - return Size.create(this.width - size.width, this.height - size.height); - }, - - multiply: function(size) { - size = Size.read(arguments); - return Size.create(this.width * size.width, this.height * size.height); - }, - - divide: function(size) { - size = Size.read(arguments); - return Size.create(this.width / size.width, this.height / size.height); - }, - - modulo: function(size) { - size = Size.read(arguments); - return Size.create(this.width % size.width, this.height % size.height); - }, - - negate: function() { - return Size.create(-this.width, -this.height); - }, - - equals: function(size) { - size = Size.read(arguments); - return this.width == size.width && this.height == size.height; - }, - - isZero: function() { - return this.width == 0 && this.width == 0; - }, - - isNaN: function() { - return isNaN(this.width) || isNaN(this.height); - }, - - statics: { - - create: function(width, height) { - return new Size(Size.dont).set(width, height); - }, - - min: function(size1, size2) { - return Size.create( - Math.min(size1.width, size2.width), - Math.min(size1.height, size2.height)); - }, - - max: function(size1, size2) { - return Size.create( - Math.max(size1.width, size2.width), - Math.max(size1.height, size2.height)); - }, - - random: function() { - return Size.create(Math.random(), Math.random()); - } - } -}, new function() { - - return Base.each(['round', 'ceil', 'floor', 'abs'], function(name) { - var op = Math[name]; - this[name] = function() { - return Size.create(op(this.width), op(this.height)); - }; - }, {}); -}); - -var LinkedSize = Size.extend({ - beans: true, - - set: function(width, height, dontNotify) { - this._width = width; - this._height = height; - if (!dontNotify) - this._owner[this._setter](this); - return this; - }, - - getWidth: function() { - return this._width; - }, - - setWidth: function(width) { - this._width = width; - this._owner[this._setter](this); - }, - - getHeight: function() { - return this._height; - }, - - setHeight: function(height) { - this._height = height; - this._owner[this._setter](this); - }, - - statics: { - create: function(owner, setter, width, height) { - var point = new LinkedSize(LinkedSize.dont); - point._width = width; - point._height = height; - point._owner = owner; - point._setter = setter; - return point; - } - } -}); - -var Rectangle = this.Rectangle = Base.extend({ - beans: true, - - initialize: function(arg0, arg1, arg2, arg3) { - if (arguments.length == 4) { - this.x = arg0; - this.y = arg1; - this.width = arg2; - this.height = arg3; - } else if (arguments.length == 2) { - if (arg1 && arg1.x !== undefined) { - var point1 = Point.read(arguments, 0, 1); - var point2 = Point.read(arguments, 1, 1); - this.x = point1.x; - this.y = point1.y; - this.width = point2.x - point1.x; - this.height = point2.y - point1.y; - if (this.width < 0) { - this.x = point2.x; - this.width = -this.width; - } - if (this.height < 0) { - this.y = point2.y; - this.height = -this.height; - } - } else { - var point = Point.read(arguments, 0, 1); - var size = Size.read(arguments, 1, 1); - this.x = point.x; - this.y = point.y; - this.width = size.width; - this.height = size.height; - } - } else if (arg0) { - this.x = arg0.x || 0; - this.y = arg0.y || 0; - this.width = arg0.width || 0; - this.height = arg0.height || 0; - } else { - this.x = this.y = this.width = this.height = 0; - } - }, - - set: function(x, y, width, height) { - this.x = x; - this.y = y; - this.width = width; - this.height = height; - return this; - }, - - getPoint: function() { - return LinkedPoint.create(this, 'setPoint', this.x, this.y); - }, - - setPoint: function(point) { - point = Point.read(arguments); - this.x = point.x; - this.y = point.y; - return this; - }, - - getSize: function() { - return LinkedSize.create(this, 'setSize', this.width, this.height); - }, - - setSize: function(size) { - size = Size.read(arguments); - this.width = size.width; - this.height = size.height; - return this; - }, - - getLeft: function() { - return this.x; - }, - - setLeft: function(left) { - this.width -= left - this.x; - this.x = left; - return this; - }, - - getTop: function() { - return this.y; - }, - - setTop: function(top) { - this.height -= top - this.y; - this.y = top; - return this; - }, - - getRight: function() { - return this.x + this.width; - }, - - setRight: function(right) { - this.width = right - this.x; - return this; - }, - - getBottom: function() { - return this.y + this.height; - }, - - setBottom: function(bottom) { - this.height = bottom - this.y; - return this; - }, - - getCenterX: function() { - return this.x + this.width * 0.5; - }, - - setCenterX: function(x) { - this.x = x - this.width * 0.5; - return this; - }, - - getCenterY: function() { - return this.y + this.height * 0.5; - }, - - setCenterY: function(y) { - this.y = y - this.height * 0.5; - return this; - }, - - getCenter: function() { - return LinkedPoint.create(this, 'setCenter', - this.getCenterX(), this.getCenterY()); - }, - - setCenter: function(point) { - point = Point.read(arguments); - return this.setCenterX(point.x).setCenterY(point.y); - }, - - equals: function(rect) { - rect = Rectangle.read(arguments); - return this.x == rect.x && this.y == rect.y - && this.width == rect.width && this.height == rect.height; - }, - - isEmpty: function() { - return this.width == 0 || this.height == 0; - }, - - toString: function() { - var format = Base.formatNumber; - return '{ x: ' + format(this.x) - + ', y: ' + format(this.y) - + ', width: ' + format(this.width) - + ', height: ' + format(this.height) - + ' }'; - }, - - contains: function(rect) { - if (rect.width !== undefined) { - return rect.x >= this.x && rect.y >= this.y - && rect.x + rect.width <= this.x + this.width - && rect.y + rect.height <= this.y + this.height; - } else { - var point = Point.read(arguments); - return point.x >= this.x && point.y >= this.y - && point.x <= this.x + this.width - && point.y <= this.y + this.height; - } - }, - - intersects: function(rect) { - rect = Rectangle.read(arguments); - return rect.x + rect.width > this.x - && rect.y + rect.height > this.y - && rect.x < this.x + this.width - && rect.y < this.y + this.height; - }, - - intersect: function(rect) { - rect = Rectangle.read(arguments); - var x1 = Math.max(this.x, rect.x), - y1 = Math.max(this.y, rect.y), - x2 = Math.min(this.x + this.width, rect.x + rect.width), - y2 = Math.min(this.y + this.height, rect.y + rect.height); - return Rectangle.create(x1, y1, x2 - x1, y2 - y1); - }, - - unite: function(rect) { - rect = Rectangle.read(arguments); - var x1 = Math.min(this.x, rect.x), - y1 = Math.min(this.y, rect.y), - x2 = Math.max(this.x + this.width, rect.x + rect.width), - y2 = Math.max(this.y + this.height, rect.y + rect.height); - return Rectangle.create(x1, y1, x2 - x1, y2 - y1); - }, - - include: function(point) { - point = Point.read(arguments); - var x1 = Math.min(this.x, point.x), - y1 = Math.min(this.y, point.y), - x2 = Math.max(this.x + this.width, point.x), - y2 = Math.max(this.y + this.height, point.y); - return Rectangle.create(x1, y1, x2 - x1, y2 - y1); - }, - - statics: { - create: function(x, y, width, height) { - return new Rectangle(Rectangle.dont).set(x, y, width, height); - } - } -}, new function() { - return Base.each([ - ['Top', 'Left'], ['Top', 'Right'], - ['Bottom', 'Left'], ['Bottom', 'Right'], - ['Left', 'Center'], ['Top', 'Center'], - ['Right', 'Center'], ['Bottom', 'Center'] - ], - function(parts, index) { - var part = parts.join(''); - var xFirst = /^[RL]/.test(part); - if (index >= 4) - parts[1] += xFirst ? 'Y' : 'X'; - var x = parts[xFirst ? 0 : 1], - y = parts[xFirst ? 1 : 0], - getX = 'get' + x, - getY = 'get' + y, - setX = 'set' + x, - setY = 'set' + y, - get = 'get' + part, - set = 'set' + part; - this[get] = function() { - return LinkedPoint.create(this, set, - this[getX](), this[getY]()); - }; - this[set] = function(point) { - point = Point.read(arguments); - return this[setX](point.x)[setY](point.y); - }; - }, { beans: true }); -}); - -var LinkedRectangle = Rectangle.extend({ - beans: true, - - set: function(x, y, width, height, dontNotify) { - this._x = x; - this._y = y; - this._width = width; - this._height = height; - if (!dontNotify) - this._owner[this._setter](this); - return this; - }, - - statics: { - create: function(owner, setter, x, y, width, height) { - var rect = new LinkedRectangle(LinkedRectangle.dont).set( - x, y, width, height, true); - rect._owner = owner; - rect._setter = setter; - return rect; - } - } -}, new function() { - var proto = Rectangle.prototype; - - return Base.each(['x', 'y', 'width', 'height'], function(key) { - var part = Base.capitalize(key); - var internal = '_' + key; - this['get' + part] = function() { - return this[internal]; - }; - - this['set' + part] = function(value) { - this[internal] = value; - if (!this._dontNotify) - this._owner[this._setter](this); - }; - }, Base.each(['Point', 'Size', 'Center', - 'Left', 'Top', 'Right', 'Bottom', 'CenterX', 'CenterY', - 'TopLeft', 'TopRight', 'BottomLeft', 'BottomRight', - 'LeftCenter', 'TopCenter', 'RightCenter', 'BottomCenter'], - function(key) { - var name = 'set' + key; - this[name] = function(value) { - this._dontNotify = true; - proto[name].apply(this, arguments); - delete this._dontNotify; - this._owner[this._setter](this); - return this; - }; - }, { beans: true }) - ); -}); - -var Matrix = this.Matrix = Base.extend({ - - beans: true, - - initialize: function(m00, m10, m01, m11, m02, m12) { - var ok = true; - if (arguments.length == 6) { - this.set(m00, m10, m01, m11, m02, m12); - } else if (arguments.length == 1) { - if (m00 instanceof Matrix) { - this.set(m00._m00, m00._m10, m00._m01, - m00._m11, m00._m02, m00._m12); - } else if (Array.isArray(m00)) { - this.set.apply(this, m00); - } else { - ok = false; - } - } else if (arguments.length > 0) { - ok = false; - } else { - this._m00 = this._m11 = 1; - this._m10 = this._m01 = this._m02 = this._m12 = 0; - } - if (!ok) - throw new Error('Unsupported matrix parameters'); - }, - - clone: function() { - return Matrix.create(this._m00, this._m10, this._m01, - this._m11, this._m02, this._m12); - }, - - set: function(m00, m10, m01, m11, m02, m12) { - this._m00 = m00; - this._m10 = m10; - this._m01 = m01; - this._m11 = m11; - this._m02 = m02; - this._m12 = m12; - return this; - }, - - scale: function(sx, sy , center) { - if (arguments.length < 2 || typeof sy === 'object') { - center = Point.read(arguments, 1); - sy = sx; - } else { - center = Point.read(arguments, 2); - } - if (center) - this.translate(center); - this._m00 *= sx; - this._m10 *= sx; - this._m01 *= sy; - this._m11 *= sy; - if (center) - this.translate(center.negate()); - return this; - }, - - translate: function(point) { - point = Point.read(arguments); - var x = point.x, y = point.y; - this._m02 += x * this._m00 + y * this._m01; - this._m12 += x * this._m10 + y * this._m11; - return this; - }, - - rotate: function(angle, center) { - return this.concatenate( - Matrix.getRotateInstance.apply(Matrix, arguments)); - }, - - shear: function(shx, shy, center) { - if (arguments.length < 2 || typeof shy === 'object') { - center = Point.read(arguments, 1); - sy = sx; - } else { - center = Point.read(arguments, 2); - } - if (center) - this.translate(center); - var m00 = this._m00; - var m10 = this._m10; - this._m00 += shy * this._m01; - this._m10 += shy * this._m11; - this._m01 += shx * m00; - this._m11 += shx * m10; - if (center) - this.translate(center.negate()); - return this; - }, - - toString: function() { - var format = Base.formatNumber; - return '[[' + [format(this._m00), format(this._m01), - format(this._m02)].join(', ') + '], [' - + [format(this._m10), format(this._m11), - format(this._m12)].join(', ') + ']]'; - }, - - concatenate: function(mx) { - var m0 = this._m00, - m1 = this._m01; - this._m00 = mx._m00 * m0 + mx._m10 * m1; - this._m01 = mx._m01 * m0 + mx._m11 * m1; - this._m02 += mx._m02 * m0 + mx._m12 * m1; - - m0 = this._m10; - m1 = this._m11; - this._m10 = mx._m00 * m0 + mx._m10 * m1; - this._m11 = mx._m01 * m0 + mx._m11 * m1; - this._m12 += mx._m02 * m0 + mx._m12 * m1; - return this; - }, - - preConcatenate: function(mx) { - var m0 = this._m00, - m1 = this._m10; - this._m00 = mx._m00 * m0 + mx._m01 * m1; - this._m10 = mx._m10 * m0 + mx._m11 * m1; - - m0 = this._m01; - m1 = this._m11; - this._m01 = mx._m00 * m0 + mx._m01 * m1; - this._m11 = mx._m10 * m0 + mx._m11 * m1; - - m0 = this._m02; - m1 = this._m12; - this._m02 = mx._m00 * m0 + mx._m01 * m1 + mx._m02; - this._m12 = mx._m10 * m0 + mx._m11 * m1 + mx._m12; - return this; - }, - - transform: function( src, srcOff, dst, dstOff, numPts) { - return arguments.length < 5 - ? this._transformPoint(Point.read(arguments)) - : this._transformCoordinates(src, srcOff, dst, dstOff, numPts); - }, - - _transformPoint: function(point, dest, dontNotify) { - var x = point.x, - y = point.y; - if (!dest) - dest = new Point(Point.dont); - return dest.set( - x * this._m00 + y * this._m01 + this._m02, - x * this._m10 + y * this._m11 + this._m12, - dontNotify - ); - }, - - _transformCoordinates: function(src, srcOff, dst, dstOff, numPts) { - var i = srcOff, j = dstOff, - srcEnd = srcOff + 2 * numPts; - while (i < srcEnd) { - var x = src[i++]; - var y = src[i++]; - dst[j++] = x * this._m00 + y * this._m01 + this._m02; - dst[j++] = x * this._m10 + y * this._m11 + this._m12; - } - return dst; - }, - - _transformCorners: function(rect) { - var x1 = rect.x, - y1 = rect.y, - x2 = x1 + rect.width, - y2 = y1 + rect.height, - coords = [ x1, y1, x2, y1, x2, y2, x1, y2 ]; - return this._transformCoordinates(coords, 0, coords, 0, 4); - }, - - _transformBounds: function(bounds) { - var coords = this._transformCorners(bounds), - min = coords.slice(0, 2), - max = coords.slice(0); - for (var i = 2; i < 8; i++) { - var val = coords[i], - j = i & 1; - if (val < min[j]) - min[j] = val; - else if (val > max[j]) - max[j] = val; - } - return Rectangle.create(min[0], min[1], - max[0] - min[0], max[1] - min[1]); - }, - - getDeterminant: function() { - return this._m00 * this._m11 - this._m01 * this._m10; - }, - - isIdentity: function() { - return this._m00 == 1 && this._m10 == 0 && this._m01 == 0 && - this._m11 == 1 && this._m02 == 0 && this._m12 == 0; - }, - - isInvertible: function() { - var det = this.getDeterminant(); - return isFinite(det) && det != 0 && isFinite(this._m02) - && isFinite(this._m12); - }, - - isSingular: function() { - return !this.isInvertible(); - }, - - createInverse: function() { - var det = this.getDeterminant(); - if (isFinite(det) && det != 0 && isFinite(this._m02) - && isFinite(this._m12)) { - return Matrix.create( - this._m11 / det, - -this._m10 / det, - -this._m01 / det, - this._m00 / det, - (this._m01 * this._m12 - this._m11 * this._m02) / det, - (this._m10 * this._m02 - this._m00 * this._m12) / det); - } - return null; - }, - - createShiftless: function() { - return Matrix.create(this._m00, this._m10, this._m01, this._m11, 0, 0); - }, - - setToScale: function(sx, sy) { - return this.set(sx, 0, 0, sy, 0, 0); - }, - - setToTranslation: function(delta) { - delta = Point.read(arguments); - return this.set(1, 0, 0, 1, delta.x, delta.y); - }, - - setToShear: function(shx, shy) { - return this.set(1, shy, shx, 1, 0, 0); - }, - - setToRotation: function(angle, center) { - center = Point.read(arguments, 1); - angle = angle * Math.PI / 180; - var x = center.x, - y = center.y, - cos = Math.cos(angle), - sin = Math.sin(angle); - return this.set(cos, sin, -sin, cos, - x - x * cos + y * sin, - y - x * sin - y * cos); - }, - - applyToContext: function(ctx, reset) { - ctx[reset ? 'setTransform' : 'transform']( - this._m00, this._m10, this._m01, - this._m11, this._m02, this._m12 - ); - return this; - }, - - statics: { - - create: function(m00, m10, m01, m11, m02, m12) { - return new Matrix(Matrix.dont).set(m00, m10, m01, m11, m02, m12); - }, - - getScaleInstance: function(sx, sy) { - var mx = new Matrix(); - return mx.setToScale.apply(mx, arguments); - }, - - getTranslateInstance: function(delta) { - var mx = new Matrix(); - return mx.setToTranslation.apply(mx, arguments); - }, - - getShearInstance: function(shx, shy, center) { - var mx = new Matrix(); - return mx.setToShear.apply(mx, arguments); - }, - - getRotateInstance: function(angle, center) { - var mx = new Matrix(); - return mx.setToRotation.apply(mx, arguments); - } - } -}, new function() { - return Base.each({ - scaleX: '_m00', - scaleY: '_m11', - translateX: '_m02', - translateY: '_m12', - shearX: '_m01', - shearY: '_m10' - }, function(prop, name) { - name = Base.capitalize(name); - this['get' + name] = function() { - return this[prop]; - }; - this['set' + name] = function(value) { - this[prop] = value; - }; - }, { beans: true }); -}); - -var Line = this.Line = Base.extend({ - initialize: function(point1, point2, infinite) { - point1 = Point.read(arguments, 0, 1); - point2 = Point.read(arguments, 1, 1); - if (arguments.length == 3) { - this.point = point1; - this.vector = point2.subtract(point1); - this.infinite = infinite; - } else { - this.point = point1; - this.vector = point2; - this.infinite = true; - } - }, - - intersect: function(line) { - var cross = this.vector.cross(line.vector); - if (Math.abs(cross) <= Numerical.TOLERANCE) - return null; - var v = line.point.subtract(this.point), - t1 = v.cross(line.vector) / cross, - t2 = v.cross(this.vector) / cross; - return (this.infinite || 0 <= t1 && t1 <= 1) - && (line.infinite || 0 <= t2 && t2 <= 1) - ? this.point.add(this.vector.multiply(t1)) : null; - }, - - getSide: function(point) { - var v1 = this.vector, - v2 = point.subtract(this.point), - ccw = v2.cross(v1); - if (ccw == 0) { - ccw = v2.dot(v1); - if (ccw > 0) { - ccw = (v2 - v1).dot(v1); - if (ccw < 0) - ccw = 0; - } - } - return ccw < 0 ? -1 : ccw > 0 ? 1 : 0; - }, - - getDistance: function(point) { - var m = this.vector.y / this.vector.x, - b = this.point.y - (m * this.point.x); - var dist = Math.abs(point.y - (m * point.x) - b) / Math.sqrt(m * m + 1); - return this.infinite ? dist : Math.min(dist, - point.getDistance(this.point), - point.getDistance(this.point.add(this.vector))); - } -}); - -var Project = this.Project = Base.extend({ - - beans: true, - - initialize: function() { - this._scope = paper; - this._index = this._scope.projects.push(this) - 1; - this._currentStyle = PathStyle.create(null); - this.setCurrentStyle({ - strokeWidth: 1, - strokeCap: 'butt', - strokeJoin: 'miter', - miterLimit: 10, - dashOffset: 0, - dashArray: [] - }); - this._selectedItems = {}; - this._selectedItemCount = 0; - this.activate(); - this.layers = []; - this.symbols = []; - this.activeLayer = new Layer(); - }, - - getCurrentStyle: function() { - return this._currentStyle; - }, - - setCurrentStyle: function(style) { - this._currentStyle.initialize(style); - }, - - activate: function() { - if (this._index != null) { - this._scope.project = this; - return true; - } - return false; - }, - - remove: function() { - var res = Base.splice(this._scope.projects, null, this._index, 1); - this._scope = null; - return !!res.length; - }, - - getIndex: function() { - return this._index; - }, - - getSelectedItems: function() { - var items = []; - Base.each(this._selectedItems, function(item) { - items.push(item); - }); - return items; - }, - - _selectItem: function(item, select) { - if (select) { - this._selectedItemCount++; - this._selectedItems[item.getId()] = item; - } else { - this._selectedItemCount--; - delete this._selectedItems[item.getId()]; - } - }, - selectAll: function() { - for (var i = 0, l = this.layers.length; i < l; i++) - this.layers[i].setSelected(true); - }, - - deselectAll: function() { - for (var i in this._selectedItems) - this._selectedItems[i].setSelected(false); - }, - - draw: function(ctx) { - ctx.save(); - var param = { offset: new Point(0, 0) }; - for (var i = 0, l = this.layers.length; i < l; i++) - Item.draw(this.layers[i], ctx, param); - ctx.restore(); - - if (this._selectedItemCount > 0) { - ctx.save(); - ctx.strokeWidth = 1; - ctx.strokeStyle = ctx.fillStyle = '#009dec'; - param = { selection: true }; - Base.each(this._selectedItems, function(item) { - item.draw(ctx, param); - }); - ctx.restore(); - } - }, - - redraw: function() { - this._scope.view.draw(); - } -}); - -var Symbol = this.Symbol = Base.extend({ - - beans: true, - - initialize: function(item) { - this.project = paper.project; - this.project.symbols.push(this); - this.setDefinition(item); - }, - - getDefinition: function() { - return this._definition; - }, - - setDefinition: function(item) { - this._definition = item; - item.setSelected(false); - item._removeFromParent(); - item.setPosition(new Point()); - }, - - place: function(position) { - return new PlacedSymbol(this, position); - }, - - clone: function() { - return new Symbol(this._definition.clone()); - } -}); - -var ChangeFlags = { - GEOMETRY: 1, - STROKE: 2, - STYLE: 4, - HIERARCHY: 8 -}; - -var Item = this.Item = Base.extend({ - beans: true, - - initialize: function() { - if (!this._project) - paper.project.activeLayer.appendTop(this); - this._style = PathStyle.create(this); - this.setStyle(this._project.getCurrentStyle()); - }, - - _changed: function(flags) { - if (flags & ChangeFlags.GEOMETRY) { - delete this._position; - } - }, - - getId: function() { - if (this._id == null) - this._id = Item._id = (Item._id || 0) + 1; - return this._id; - }, - - getName: function() { - return this._name; - }, - - setName: function(name) { - var children = this._parent._children, - namedChildren = this._parent._namedChildren; - if (name != this._name) { - if (this._name) - this._removeFromNamed(); - this._name = name || undefined; - } - if (name) { - (namedChildren[name] = namedChildren[name] || []).push(this); - children[name] = this; - } else { - delete children[name]; - } - }, - - getPosition: function() { - var pos = this._position - || (this._position = this.getBounds().getCenter()); - return LinkedPoint.create(this, 'setPosition', pos._x, pos._y); - }, - - setPosition: function(point) { - this.translate(Point.read(arguments).subtract(this.getPosition())); - }, - - getStyle: function() { - return this._style; - }, - - setStyle: function(style) { - this._style.initialize(style); - }, - - isSelected: function() { - if (this._children) { - for (var i = 0, l = this._children.length; i < l; i++) { - if (this._children[i].isSelected()) { - return true; - } - } - } else { - return !!this._selected; - } - return false; - }, - - setSelected: function(selected) { - if (this._children) { - for (var i = 0, l = this._children.length; i < l; i++) { - this._children[i].setSelected(selected); - } - } else { - if ((selected = !!selected) != this._selected) { - this._selected = selected; - this._project._selectItem(this, selected); - } - } - }, - - locked: false, - - visible: true, - - isClipMask: function() { - return this._clipMask; - }, - - setClipMask: function(clipMask) { - this._clipMask = clipMask; - if (this._clipMask) { - this.setFillColor(null); - this.setStrokeColor(null); - } - }, - - blendMode: 'normal', - - opacity: 1, - - getProject: function() { - return this._project; - }, - - _setProject: function(project) { - if (this._project != project) { - this._project = project; - if (this._children) { - for (var i = 0, l = this._children.length; i < l; i++) { - this._children[i]._setProject(project); - } - } - } - }, - - getParent: function() { - return this._parent; - }, - - getChildren: function() { - return this._children; - }, - - setChildren: function(items) { - this.removeChildren(); - for (var i = 0, l = items && items.length; i < l; i++) - this.appendTop(items[i]); - }, - - getFirstChild: function() { - return this._children && this._children[0] || null; - }, - - getLastChild: function() { - return this._children && this._children[this._children.length - 1] - || null; - }, - - getNextSibling: function() { - return this._parent && this._parent._children[this._index + 1] || null; - }, - - getPreviousSibling: function() { - return this._parent && this._parent._children[this._index - 1] || null; - }, - - getIndex: function() { - return this._index; - }, - - _removeFromNamed: function() { - var children = this._parent._children, - namedChildren = this._parent._namedChildren, - name = this._name, - namedArray = namedChildren[name]; - if (children[name] = this) - delete children[name]; - namedArray.splice(namedArray.indexOf(this), 1); - if (namedArray.length) { - children[name] = namedArray[namedArray.length - 1]; - } else { - delete namedChildren[name]; - } - }, - - _removeFromParent: function() { - if (this._parent) { - if (this._name) - this._removeFromNamed(); - var res = Base.splice(this._parent._children, null, this._index, 1); - this._parent = null; - return !!res.length; - } - return false; - }, - - remove: function() { - if (this.isSelected()) - this.setSelected(false); - return this._removeFromParent(); - }, - - removeChildren: function() { - var removed = false; - if (this._children) { - for (var i = this._children.length - 1; i >= 0; i--) - removed = this._children[i].remove() || removed; - } - return removed; - }, - - copyTo: function(itemOrProject) { - var copy = this.clone(); - if (itemOrProject.layers) { - itemOrProject.activeLayer.appendTop(copy); - } else { - itemOrProject.appendTop(copy); - } - return copy; - }, - - clone: function() { - return this._clone(new this.constructor()); - }, - - _clone: function(copy) { - copy.setStyle(this._style); - if (this._children) { - for (var i = 0, l = this._children.length; i < l; i++) - copy.appendTop(this._children[i].clone()); - } - var keys = ['locked', 'visible', 'opacity', 'blendMode', '_clipMask']; - for (var i = 0, l = keys.length; i < l; i++) { - var key = keys[i]; - if (this.hasOwnProperty(key)) - copy[key] = this[key]; - } - copy.moveAbove(this); - if (this._name) - copy.setName(this._name); - return copy; - }, - - reverseChildren: function() { - if (this._children) { - this._children.reverse(); - for (var i = 0, l = this._children.length; i < l; i++) { - this._children[i]._index = i; - } - } - }, - - rasterize: function(resolution) { - var bounds = this.getStrokeBounds(), - scale = (resolution || 72) / 72, - canvas = CanvasProvider.getCanvas(bounds.getSize().multiply(scale)), - ctx = canvas.getContext('2d'), - matrix = new Matrix().scale(scale).translate(-bounds.x, -bounds.y); - matrix.applyToContext(ctx); - this.draw(ctx, {}); - var raster = new Raster(canvas); - raster.setPosition(this.getPosition()); - raster.scale(1 / scale); - return raster; - }, - - hasChildren: function() { - return this._children && this._children.length > 0; - }, - - isEditable: function() { - var item = this; - while (item) { - if (!item.visible || item.locked) - return false; - item = item._parent; - } - return true; - }, - - _getOrder: function(item) { - function getList(item) { - var list = []; - do { - list.unshift(item); - } while (item = item._parent) - return list; - } - var list1 = getList(this), - list2 = getList(item); - for (var i = 0, l = Math.min(list1.length, list2.length); i < l; i++) { - if (list1[i] != list2[i]) { - return list1[i]._index < list2[i]._index ? 1 : -1; - } - } - return 0; - }, - - isAbove: function(item) { - return this._getOrder(item) == -1; - }, - - isBelow: function(item) { - return this._getOrder(item) == 1; - }, - - isParent: function(item) { - return this._parent == item; - }, - - isChild: function(item) { - return item && item._parent == this; - }, - - isDescendant: function(item) { - var parent = this; - while (parent = parent._parent) { - if (parent == item) - return true; - } - return false; - }, - - isAncestor: function(item) { - return item ? item.isDescendant(this) : false; - }, - - isGroupedWith: function(item) { - var parent = this._parent; - while (parent) { - if (parent._parent - && (parent instanceof Group || parent instanceof CompoundPath) - && item.isDescendant(parent)) - return true; - parent = parent._parent; - } - return false; - }, - - getBounds: function() { - return this._getBounds(false); - }, - - getStrokeBounds: function() { - return this._getBounds(true); - }, - - _getBounds: function(includeStroke) { - var children = this._children; - if (children && children.length) { - var x1 = Infinity, - x2 = -Infinity, - y1 = x1, - y2 = x2; - for (var i = 0, l = children.length; i < l; i++) { - var child = children[i]; - if (child.visible) { - var rect = includeStroke - ? child.getStrokeBounds() - : child.getBounds(); - x1 = Math.min(rect.x, x1); - y1 = Math.min(rect.y, y1); - x2 = Math.max(rect.x + rect.width, x2); - y2 = Math.max(rect.y + rect.height, y2); - } - } - return includeStroke - ? Rectangle.create(x1, y1, x2 - x1, y2 - y1) - : LinkedRectangle.create(this, 'setBounds', - x1, y1, x2 - x1, y2 - y1); - } - return new Rectangle(); - }, - - setBounds: function(rect) { - rect = Rectangle.read(arguments); - var bounds = this.getBounds(), - matrix = new Matrix(), - center = rect.center; - matrix.translate(center); - if (rect.width != bounds.width || rect.height != bounds.height) { - matrix.scale( - bounds.width != 0 ? rect.width / bounds.width : 1, - bounds.height != 0 ? rect.height / bounds.height : 1); - } - center = bounds.center; - matrix.translate(-center.x, -center.y); - this.transform(matrix); - }, - - scale: function(sx, sy , center) { - if (arguments.length < 2 || typeof sy === 'object') { - center = sy; - sy = sx; - } - return this.transform(new Matrix().scale(sx, sy, - center || this.getPosition())); - }, - - translate: function(delta) { - var mx = new Matrix(); - return this.transform(mx.translate.apply(mx, arguments)); - }, - - rotate: function(angle, center) { - return this.transform(new Matrix().rotate(angle, - center || this.getPosition())); - }, - - shear: function(shx, shy, center) { - if (arguments.length < 2 || typeof sy === 'object') { - center = shy; - shy = shx; - } - return this.transform(new Matrix().shear(shx, shy, - center || this.getPosition())); - }, - - transform: function(matrix, flags) { - if (this._transform) - this._transform(matrix, flags); - if (this._position) - matrix._transformPoint(this._position, this._position, true); - if (this._children) { - for (var i = 0, l = this._children.length; i < l; i++) { - var child = this._children[i]; - child.transform(matrix, flags); - } - } - return this; - }, - - statics: { - drawSelectedBounds: function(bounds, ctx, matrix) { - var coords = matrix._transformCorners(bounds); - ctx.beginPath(); - for (var i = 0; i < 8; i++) - ctx[i == 0 ? 'moveTo' : 'lineTo'](coords[i], coords[++i]); - ctx.closePath(); - ctx.stroke(); - for (var i = 0; i < 8; i++) { - ctx.beginPath(); - ctx.rect(coords[i] - 2, coords[++i] - 2, 4, 4); - ctx.fill(); - } - }, - - draw: function(item, ctx, param) { - if (!item.visible || item.opacity == 0) - return; - - var tempCanvas, parentCtx; - if (item.blendMode !== 'normal' - || item.opacity < 1 - && !(item._segments && (!item.getFillColor() - || !item.getStrokeColor()))) { - var bounds = item.getStrokeBounds() || item.getBounds(); - if (!bounds.width || !bounds.height) - return; - - var itemOffset = bounds.getTopLeft().floor(), - size = bounds.getSize().ceil().add(new Size(1, 1)); - tempCanvas = CanvasProvider.getCanvas(size); - - parentCtx = ctx; - - ctx = tempCanvas.getContext('2d'); - ctx.save(); - - ctx.translate(-itemOffset.x, -itemOffset.y); - } - var savedOffset; - if (itemOffset) { - savedOffset = param.offset; - param.offset = itemOffset; - } - item.draw(ctx, param); - if (itemOffset) - param.offset = savedOffset; - - if (tempCanvas) { - - ctx.restore(); - - if (item.blendMode !== 'normal') { - var pixelOffset = itemOffset.subtract(param.offset); - BlendMode.process(item.blendMode, ctx, parentCtx, - item.opacity, pixelOffset); - } else { - parentCtx.save(); - parentCtx.globalAlpha = item.opacity; - parentCtx.drawImage(tempCanvas, - itemOffset.x, itemOffset.y); - parentCtx.restore(); - } - - CanvasProvider.returnCanvas(tempCanvas); - } - } - } -}, new function() { - - function append(top) { - return function(item) { - item._removeFromParent(); - if (this._children) { - Base.splice(this._children, [item], top ? undefined : 0, 0); - item._parent = this; - item._setProject(this._project); - if (item._name) - item.setName(item._name); - return true; - } - return false; - }; - } - - function move(above) { - return function(item) { - if (item._parent && this._removeFromParent()) { - Base.splice(item._parent._children, [this], - item._index + (above ? 1 : -1), 0); - this._parent = item._parent; - this._setProject(item._project); - if (item._name) - item.setName(item._name); - return true; - } - return false; - }; - } - - return { - - appendTop: append(true), - - appendBottom: append(false), - - moveAbove: move(true), - - moveBelow: move(false) - }; -}, new function() { - - var sets = { - down: {}, drag: {}, up: {}, move: {} - }; - - function removeAll(set) { - for (var id in set) { - var item = set[id]; - item.remove(); - for (var type in sets) { - var other = sets[type]; - if (other != set && other[item.getId()]) - delete other[item.getId()]; - } - } - } - - function installHandler(name) { - var handler = 'onMouse' + Base.capitalize(name); - var func = paper.tool[handler]; - if (!func || !func._installed) { - var hash = {}; - hash[handler] = function(event) { - if (name === 'up') - sets.drag = {}; - removeAll(sets[name]); - sets[name] = {}; - if (this.base) - this.base(event); - }; - paper.tool.inject(hash); - paper.tool[handler]._installed = true; - } - } - - return Base.each(['down', 'drag', 'up', 'move'], function(name) { - this['removeOn' + Base.capitalize(name)] = function() { - var hash = {}; - hash[name] = true; - return this.removeOn(hash); - }; - }, { - removeOn: function(obj) { - for (var name in obj) { - if (obj[name]) { - sets[name][this.getId()] = this; - if (name === 'drag') - installHandler('up'); - installHandler(name); - } - } - return this; - } - }); -}); - -var Group = this.Group = Item.extend({ - - beans: true, - - initialize: function(items) { - this.base(); - this._children = []; - this._namedChildren = {}; - this._clipped = false; - this.setChildren(!items || !Array.isArray(items) - || typeof items[0] !== 'object' ? arguments : items); - }, - - clone: function() { - var copy = this.base(); - copy._clipped = this._clipped; - return copy; - }, - - isClipped: function() { - return this._clipped; - }, - - setClipped: function(clipped) { - this._clipped = clipped; - var child = this.getFirstChild(); - if (child) - child.setClipMask(clipped); - }, - - draw: function(ctx, param) { - for (var i = 0, l = this._children.length; i < l; i++) { - Item.draw(this._children[i], ctx, param); - if (this._clipped && i == 0) - ctx.clip(); - } - } -}); - -var Layer = this.Layer = Group.extend({ - - beans: true, - initialize: function(items) { - this._project = paper.project; - this._index = this._project.layers.push(this) - 1; - this.base.apply(this, arguments); - this.activate(); - }, - - _removeFromParent: function() { - return this._parent ? this.base() - : !!Base.splice(this._project.layers, null, this._index, 1).length; - }, - - getNextSibling: function() { - return this._parent ? this.base() - : this._project.layers[this._index + 1] || null; - }, - - getPreviousSibling: function() { - return this._parent ? this.base() - : this._project.layers[this._index - 1] || null; - }, - - activate: function() { - this._project.activeLayer = this; - } -}, new function () { - function move(above) { - return function(item) { - if (item instanceof Layer && !item._parent - && this._removeFromParent()) { - Base.splice(item._project.layers, [this], - item._index + (above ? 1 : -1), 0); - this._setProject(item._project); - return true; - } - return this.base(item); - }; - } - - return { - moveAbove: move(true), - - moveBelow: move(false) - }; -}); - -var Raster = this.Raster = Item.extend({ - - beans: true, - - initialize: function(object) { - this.base(); - if (object.getContext) { - this.setCanvas(object); - } else { - if (typeof object === 'string') - object = document.getElementById(object); - this.setImage(object); - } - this.matrix = new Matrix(); - }, - - clone: function() { - var image = this._image; - if (!image) { - image = CanvasProvider.getCanvas(this._size); - image.getContext('2d').drawImage(this._canvas, 0, 0); - } - var copy = new Raster(image); - copy.matrix = this.matrix.clone(); - return this._clone(copy); - }, - - getSize: function() { - return this._size; - }, - - setSize: function() { - var size = Size.read(arguments), - image = this.getImage(); - this.setCanvas(CanvasProvider.getCanvas(size)); - this.getContext().drawImage(image, 0, 0, size.width, size.height); - }, - - getWidth: function() { - return this._size.width; - }, - - getHeight: function() { - return this._size.height; - }, - - getPpi: function() { - var matrix = this.matrix, - orig = new Point(0, 0).transform(matrix), - u = new Point(1, 0).transform(matrix).subtract(orig), - v = new Point(0, 1).transform(matrix).subtract(orig); - return new Size( - 72 / u.getLength(), - 72 / v.getLength() - ); - }, - - getContext: function() { - if (!this._context) { - this._context = this.getCanvas().getContext('2d'); - } - return this._context; - }, - - setContext: function(context) { - this._context = context; - }, - - getCanvas: function() { - if (!this._canvas) { - this._canvas = CanvasProvider.getCanvas(this._size); - if (this._image) - this.getContext().drawImage(this._image, 0, 0); - } - return this._canvas; - }, - - setCanvas: function(canvas) { - if (this._canvas) - CanvasProvider.returnCanvas(this._canvas); - this._canvas = canvas; - this._size = new Size(canvas.width, canvas.height); - this._image = null; - this._context = null; - this._bounds = null; - }, - - getImage: function() { - return this._image || this.getCanvas(); - }, - - setImage: function(image) { - if (this._canvas) - CanvasProvider.returnCanvas(this._canvas); - this._image = image; - this._size = new Size(image.naturalWidth, image.naturalHeight); - this._canvas = null; - this._context = null; - this._bounds = null; - }, - - getSubImage: function(rect) { - rect = Rectangle.read(arguments); - var canvas = CanvasProvider.getCanvas(rect.getSize()); - canvas.getContext('2d').drawImage(this.getCanvas(), rect.x, rect.y, - canvas.width, canvas.height, 0, 0, canvas.width, canvas.height); - return canvas; - }, - - drawImage: function(image, point) { - point = Point.read(arguments, 1); - this.getContext().drawImage(image, point.x, point.y); - }, - - getAverageColor: function(object) { - if (!object) - object = this.getBounds(); - var bounds, path; - if (object instanceof PathItem) { - path = object; - bounds = object.getBounds(); - } else if (object.width) { - bounds = new Rectangle(object); - } else if (object.x) { - bounds = Rectangle.create(object.x - 0.5, object.y - 0.5, 1, 1); - } - var sampleSize = 32, - width = Math.min(bounds.width, sampleSize), - height = Math.min(bounds.height, sampleSize); - var ctx = Raster._sampleContext; - if (!ctx) { - ctx = Raster._sampleContext = CanvasProvider.getCanvas( - new Size(sampleSize)).getContext('2d'); - } else { - ctx.clearRect(0, 0, sampleSize, sampleSize); - } - ctx.save(); - ctx.scale(width / bounds.width, height / bounds.height); - ctx.translate(-bounds.x, -bounds.y); - if (path) - path.draw(ctx, { clip: true }); - this.matrix.applyToContext(ctx); - ctx.drawImage(this._canvas || this._image, - -this._size.width / 2, -this._size.height / 2); - ctx.restore(); - var pixels = ctx.getImageData(0.5, 0.5, Math.ceil(width), - Math.ceil(height)).data, - channels = [0, 0, 0], - total = 0; - for (var i = 0, l = pixels.length; i < l; i += 4) { - var alpha = pixels[i + 3]; - total += alpha; - alpha /= 255; - channels[0] += pixels[i] * alpha; - channels[1] += pixels[i + 1] * alpha; - channels[2] += pixels[i + 2] * alpha; - } - for (var i = 0; i < 3; i++) - channels[i] /= total; - return total ? Color.read(channels) : null; - }, - - getPixel: function(point) { - point = Point.read(arguments); - var pixels = this.getContext().getImageData(point.x, point.y, 1, 1).data, - channels = new Array(4); - for (var i = 0; i < 4; i++) - channels[i] = pixels[i] / 255; - return RGBColor.read(channels); - }, - - setPixel: function(point, color) { - var hasPoint = arguments.length == 2; - point = Point.read(arguments, 0, hasPoint ? 1 : 2); - color = Color.read(arguments, hasPoint ? 1 : 2); - var ctx = this.getContext(), - imageData = ctx.createImageData(1, 1), - alpha = color.getAlpha(); - imageData.data[0] = color.getRed() * 255; - imageData.data[1] = color.getGreen() * 255; - imageData.data[2] = color.getBlue() * 255; - imageData.data[3] = alpha != null ? alpha * 255 : 255; - ctx.putImageData(imageData, point.x, point.y); - }, - - createData: function(size) { - size = Size.read(arguments); - return this.getContext().createImageData(size.width, size.height); - }, - - getData: function(rect) { - rect = Rectangle.read(arguments); - if (rect.isEmpty()) - rect = new Rectangle(this.getSize()); - return this.getContext().getImageData(rect.x, rect.y, - rect.width, rect.height); - }, - - setData: function(data, point) { - point = Point.read(arguments, 1); - this.getContext().putImageData(data, point.x, point.y); - }, - - _transform: function(matrix, flags) { - this.matrix.preConcatenate(matrix); - this._bounds = null; - }, - - getBounds: function() { - if (!this._bounds) { - this._bounds = this.matrix._transformBounds( - new Rectangle(this._size).setCenter(0, 0)); - } - return this._bounds; - }, - getStrokeBounds: function() { - return this.getBounds(); - }, - - draw: function(ctx, param) { - if (param.selection) { - var bounds = new Rectangle(this._size).setCenter(0, 0); - Item.drawSelectedBounds(bounds, ctx, this.matrix); - } else { - ctx.save(); - this.matrix.applyToContext(ctx); - ctx.drawImage(this._canvas || this._image, - -this._size.width / 2, -this._size.height / 2); - ctx.restore(); - } - } -}); - -var PlacedSymbol = this.PlacedSymbol = Item.extend({ - - beans: true, - - initialize: function(symbol, matrixOrOffset) { - this.base(); - this.symbol = symbol instanceof Symbol ? symbol : new Symbol(symbol); - this.matrix = matrixOrOffset !== undefined - ? matrixOrOffset instanceof Matrix - ? matrixOrOffset - : new Matrix().translate(Point.read(arguments, 1)) - : new Matrix(); - }, - - clone: function() { - return this._clone(new PlacedSymbol(this.symbol, this.matrix.clone())); - }, - - _transform: function(matrix, flags) { - this.matrix.preConcatenate(matrix); - }, - - getBounds: function() { - var bounds = this.symbol._definition.getStrokeBounds(this.matrix); - return LinkedRectangle.create(this, 'setBounds', - bounds.x, bounds.y, bounds.width, bounds.height); - }, - - getStrokeBounds: function() { - return this.getBounds(); - }, - - draw: function(ctx, param) { - if (param.selection) { - Item.drawSelectedBounds(this.symbol._definition.getStrokeBounds(), - ctx, this.matrix); - } else { - ctx.save(); - this.matrix.applyToContext(ctx); - Item.draw(this.symbol.getDefinition(), ctx, param); - ctx.restore(); - } - } - -}); - -var PathStyle = this.PathStyle = Base.extend(new function() { - - var keys = ['strokeColor', 'strokeWidth', 'strokeCap', 'strokeJoin', - 'miterLimit', 'dashOffset','dashArray', 'fillColor']; - - var strokeFlags = { - strokeWidth: true, - strokeCap: true, - strokeJoin: true, - miterLimit: true - }; - - var fields = { - beans: true, - - initialize: function(style) { - var clone = style instanceof PathStyle; - for (var i = 0, l = style && keys.length; i < l; i++) { - var key = keys[i], - value = style[key]; - if (value !== undefined) { - this[key] = value && clone && value.clone - ? value.clone() : value; - } - } - }, - - statics: { - create: function(item) { - var style = new PathStyle(PathStyle.dont); - style._item = item; - return style; - } - } - }; - - Item.inject(Base.each(keys, function(key) { - var isColor = !!key.match(/Color$/), - part = Base.capitalize(key), - set = 'set' + part, - get = 'get' + part; - - fields[set] = function(value) { - var children = this._item && this._item._children; - value = isColor ? Color.read(arguments) : value; - if (children) { - for (var i = 0, l = children.length; i < l; i++) - children[i]._style[set](value); - } else { - var old = this['_' + key]; - if (old != value && !(old && old.equals && old.equals(value))) { - this['_' + key] = value; - if (this._item) { - this._item._changed(ChangeFlags.STYLE - | (strokeFlags[key] ? ChangeFlags.STROKE : 0)); - } - } - } - return this; - }; - - fields[get] = function() { - var children = this._item && this._item._children, - style; - if (children) { - for (var i = 0, l = children.length; i < l; i++) { - var childStyle = children[i]._style[get](); - if (!style) { - style = childStyle; - } else if (style != childStyle && !(style && style.equals - && style.equals(childStyle))) { - return undefined; - } - } - return style; - } else { - return this['_' + key]; - } - }; - - this[set] = function(value) { - this._style[set](value); - return this; - }; - - this[get] = function() { - return this._style[get](); - }; - }, { beans: true })); - - return fields; -}); - -var Segment = this.Segment = Base.extend({ - beans: true, - - initialize: function(arg0, arg1, arg2, arg3, arg4, arg5) { - var count = arguments.length, - createPoint = SegmentPoint.create, - point, handleIn, handleOut; - if (count == 0) { - } else if (count == 1) { - if (arg0.point) { - point = arg0.point; - handleIn = arg0.handleIn; - handleOut = arg0.handleOut; - } else { - point = arg0; - } - } else if (count < 6) { - if (count == 2 && arg1.x === undefined) { - point = [ arg0, arg1 ]; - } else { - point = arg0; - handleIn = arg1; - handleOut = arg2; - } - } else if (count == 6) { - point = [ arg0, arg1 ]; - handleIn = [ arg2, arg3 ]; - handleOut = [ arg4, arg5 ]; - } - createPoint(this, '_point', point); - createPoint(this, '_handleIn', handleIn); - createPoint(this, '_handleOut', handleOut); - }, - - _changed: function(point) { - if (!this._path) - return; - var curve = this._path._curves && this.getCurve(), other; - if (curve) { - curve._changed(); - if (other = (curve[point == this._point - || point == this._handleIn && curve._segment1 == this - ? 'getPrevious' : 'getNext']())) { - other._changed(); - } - } - this._path._changed(ChangeFlags.GEOMETRY); - }, - - getPoint: function() { - return this._point; - }, - - setPoint: function(point) { - point = Point.read(arguments); - this._point.set(point.x, point.y); - }, - - getHandleIn: function() { - return this._handleIn; - }, - - setHandleIn: function(point) { - point = Point.read(arguments); - this._handleIn.set(point.x, point.y); - }, - - getHandleInIfSet: function() { - return this._handleIn._x == 0 && this._handleIn._y == 0 - ? null : this._handleIn; - }, - - getHandleOut: function() { - return this._handleOut; - }, - - setHandleOut: function(point) { - point = Point.read(arguments); - this._handleOut.set(point.x, point.y); - }, - - getHandleOutIfSet: function() { - return this._handleOut._x == 0 && this._handleOut._y == 0 - ? null : this._handleOut; - }, - - _isSelected: function(point) { - var state = this._selectionState; - return point == this._point ? !!(state & SelectionState.POINT) - : point == this._handleIn ? !!(state & SelectionState.HANDLE_IN) - : point == this._handleOut ? !!(state & SelectionState.HANDLE_OUT) - : false; - }, - - _setSelected: function(point, selected) { - var path = this._path, - selected = !!selected, - state = this._selectionState, - wasSelected = !!state, - selection = [ - !!(state & SelectionState.POINT), - !!(state & SelectionState.HANDLE_IN), - !!(state & SelectionState.HANDLE_OUT) - ]; - if (point == this._point) { - if (selected) { - selection[1] = selection[2] = false; - } else { - var previous = this.getPrevious(), - next = this.getNext(); - selection[1] = previous && (previous._point.isSelected() - || previous._handleOut.isSelected()); - selection[2] = next && (next._point.isSelected() - || next._handleIn.isSelected()); - } - selection[0] = selected; - } else { - var index = point == this._handleIn ? 1 : 2; - if (selection[index] != selected) { - if (selected) - selection[0] = false; - selection[index] = selected; - } - } - this._selectionState = (selection[0] ? SelectionState.POINT : 0) - | (selection[1] ? SelectionState.HANDLE_IN : 0) - | (selection[2] ? SelectionState.HANDLE_OUT : 0); - if (path && wasSelected != !!this._selectionState) - path._updateSelection(this); - }, - - isSelected: function() { - return this._isSelected(this._point); - }, - - setSelected: function(selected) { - this._setSelected(this._point, selected); - }, - - getIndex: function() { - return this._index !== undefined ? this._index : null; - }, - - getPath: function() { - return this._path || null; - }, - - getCurve: function() { - if (this._path) { - var index = this._index; - if (!this._path._closed && index == this._path._segments.length - 1) - index--; - return this._path.getCurves()[index] || null; - } - return null; - }, - - getNext: function() { - var segments = this._path && this._path._segments; - return segments && (segments[this._index + 1] - || this._path._closed && segments[0]) || null; - }, - - getPrevious: function() { - var segments = this._path && this._path._segments; - return segments && (segments[this._index - 1] - || this._path._closed && segments[segments.length - 1]) || null; - }, - - reverse: function() { - return new Segment(this._point, this._handleOut, this._handleIn); - }, - - remove: function() { - return this._path ? !!this._path.removeSegment(this._index) : false; - }, - - toString: function() { - var parts = [ 'point: ' + this._point ]; - if (!this._handleIn.isZero()) - parts.push('handleIn: ' + this._handleIn); - if (!this._handleOut.isZero()) - parts.push('handleOut: ' + this._handleOut); - return '{ ' + parts.join(', ') + ' }'; - }, - - _transformCoordinates: function(matrix, coords, change) { - var point = this._point, - handleIn = matrix && this.getHandleInIfSet() || this._handleIn, - handleOut = matrix && this.getHandleOutIfSet() || this._handleOut, - x = point._x, - y = point._y, - i = 2; - coords[0] = x; - coords[1] = y; - if (handleIn) { - coords[i++] = handleIn._x + x; - coords[i++] = handleIn._y + y; - } - if (handleOut) { - coords[i++] = handleOut._x + x; - coords[i++] = handleOut._y + y; - } - if (matrix) { - matrix._transformCoordinates(coords, 0, coords, 0, i / 2); - x = coords[0]; - y = coords[1]; - if (change) { - point._x = x; - point._y = y; - i = 2; - if (handleIn) { - handleIn._x = coords[i++] - x; - handleIn._y = coords[i++] - y; - } - if (handleOut) { - handleOut._x = coords[i++] - x; - handleOut._y = coords[i++] - y; - } - } else { - if (!handleIn) { - coords[i++] = x; - coords[i++] = y; - } - if (!handleOut) { - coords[i++] = x; - coords[i++] = y; - } - } - } - } -}); - -var SegmentPoint = Point.extend({ - beans: true, - - set: function(x, y) { - this._x = x; - this._y = y; - this._owner._changed(this); - return this; - }, - - getX: function() { - return this._x; - }, - - setX: function(x) { - this._x = x; - this._owner._changed(this); - }, - - getY: function() { - return this._y; - }, - - setY: function(y) { - this._y = y; - this._owner._changed(this); - }, - setSelected: function(selected) { - this._owner._setSelected(this, selected); - }, - isSelected: function() { - return this._owner._isSelected(this); - }, - statics: { - create: function(segment, key, pt) { - var point = new SegmentPoint(SegmentPoint.dont), - x, y, selected; - if (!pt) { - x = y = 0; - } else if (pt.x !== undefined) { - x = pt.x; - y = pt.y; - selected = pt.selected; - } else { - x = pt[0]; - y = pt[1]; - } - point._x = x; - point._y = y; - point._owner = segment; - segment[key] = point; - if (selected) - point.setSelected(true); - return point; - } - } -}); - -var SelectionState = { - POINT: 1, - HANDLE_IN: 2, - HANDLE_OUT: 4, - HANDLE_BOTH: 6 -}; - -var Curve = this.Curve = Base.extend({ - - beans: true, - - initialize: function(arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7) { - var count = arguments.length; - if (count == 0) { - this._segment1 = new Segment(); - this._segment2 = new Segment(); - } else if (count == 1) { - this._segment1 = new Segment(arg0.segment1); - this._segment2 = new Segment(arg0.segment2); - } else if (count == 2) { - this._segment1 = new Segment(arg0); - this._segment2 = new Segment(arg1); - } else if (count == 4) { - this._segment1 = new Segment(arg0, null, arg1); - this._segment2 = new Segment(arg3, arg2, null); - } else if (count == 8) { - var p1 = Point.create(arg0, arg1), - p2 = Point.create(arg6, arg7); - p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y - this._segment1 = new Segment(p1, null, - Point.create(arg2, arg3).subtract(p1)); - this._segment2 = new Segment(p2, - Point.create(arg4, arg5).subtract(p2), null); - } - }, - - _changed: function() { - delete this._length; - }, - - getPoint1: function() { - return this._segment1._point; - }, - - setPoint1: function(point) { - point = Point.read(arguments); - this._segment1._point.set(point.x, point.y); - }, - - getPoint2: function() { - return this._segment2._point; - }, - - setPoint2: function(point) { - point = Point.read(arguments); - this._segment2._point.set(point.x, point.y); - }, - getHandle1: function() { - return this._segment1._handleOut; - }, - - setHandle1: function(point) { - point = Point.read(arguments); - this._segment1._handleOut.set(point.x, point.y); - }, - - getHandle2: function() { - return this._segment2._handleIn; - }, - - setHandle2: function(point) { - point = Point.read(arguments); - this._segment2._handleIn.set(point.x, point.y); - }, - - getSegment1: function() { - return this._segment1; - }, - - getSegment2: function() { - return this._segment2; - }, - - getPath: function() { - return this._path; - }, - - getIndex: function() { - return this._segment1._index; - }, - - getNext: function() { - var curves = this._path && this._path._curves; - return curves && (curves[this._segment1._index + 1] - || this._path._closed && curves[0]) || null; - }, - - getPrevious: function() { - var curves = this._path && this._path._curves; - return curves && (curves[this._segment1._index - 1] - || this._path._closed && curves[curves.length - 1]) || null; - }, - - isSelected: function() { - return this.getHandle1().isSelected() && this.getHandle2().isSelected(); - }, - - setSelected: function(selected) { - this.getHandle1().setSelected(selected); - this.getHandle2().setSelected(selected); - }, - - getValues: function() { - return Curve.getValues(this._segment1, this._segment2); - }, - - getLength: function() { - var from = arguments[0], - to = arguments[1]; - fullLength = arguments.length == 0 || from == 0 && to == 1; - if (fullLength && this._length != null) - return this._length; - var args = this.getValues(); - if (!fullLength) - args.push(from, to); - var length = Curve.getLength.apply(Curve, args); - if (fullLength) - this._length = length; - return length; - }, - - getPart: function(from, to) { - var args = this.getValues(); - args.push(from, to); - return new Curve(Curve.getPart.apply(Curve, args)); - }, - - isLinear: function() { - return this._segment1._handleOut.isZero() - && this._segment2._handleIn.isZero(); - }, - - getParameter: function(length, start) { - var args = this.getValues(); - args.push(length, start !== undefined ? start : length < 0 ? 1 : 0); - return Curve.getParameter.apply(Curve, args); - }, - - _evaluate: function(parameter, type) { - var args = this.getValues(); - args.push(parameter, type); - return Curve.evaluate.apply(Curve, args); - }, - - getPoint: function(parameter) { - return this._evaluate(parameter, 0); - }, - - getTangent: function(parameter) { - return this._evaluate(parameter, 1); - }, - - getNormal: function(parameter) { - return this._evaluate(parameter, 2); - }, - - reverse: function() { - return new Curve(this._segment2.reverse(), this._segment1.reverse()); - }, - - clone: function() { - return new Curve(this._segment1, this._segment2); - }, - - toString: function() { - var parts = [ 'point1: ' + this._segment1._point ]; - if (!this._segment1._handleOut.isZero()) - parts.push('handle1: ' + this._segment1._handleOut); - if (!this._segment2._handleIn.isZero()) - parts.push('handle2: ' + this._segment2._handleIn); - parts.push('point2: ' + this._segment2._point); - return '{ ' + parts.join(', ') + ' }'; - }, - - statics: { - create: function(path, segment1, segment2) { - var curve = new Curve(Curve.dont); - curve._path = path; - curve._segment1 = segment1; - curve._segment2 = segment2; - return curve; - }, - - getValues: function(segment1, segment2) { - var p1 = segment1._point, - h1 = segment1._handleOut, - h2 = segment2._handleIn, - p2 = segment2._point; - return [ - p1._x, p1._y, - p1._x + h1._x, p1._y + h1._y, - p2._x + h2._x, p2._y + h2._y, - p2._x, p2._y - ]; - }, - - evaluate: function(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t, type) { - var x, y; - - if (t == 0 || t == 1) { - var point; - switch (type) { - case 0: - x = t == 0 ? p1x : p2x; - y = t == 0 ? p1y : p2y; - break; - case 1: - case 2: - var px, py; - if (t == 0) { - if (c1x == p1x && c1y == p1y) { - if (c2x == p2x && c2y == p2y) { - px = p2x; py = p2y; - } else { - px = c2x; py = c2y; - } - } else { - px = c1x; py = c1y; - } - x = px - p1x; - y = py - p1y; - } else { - if (c2x == p2x && c2y == p2y) { - if (c1x == p1x && c1y == p1y) { - px = p1x; py = p1y; - } else { - px = c1x; py = c1y; - } - } else { - px = c2x; py = c2y; - } - x = p2x - px; - y = p2y - py; - } - break; - } - } else { - var cx = 3 * (c1x - p1x), - bx = 3 * (c2x - c1x) - cx, - ax = p2x - p1x - cx - bx, - - cy = 3 * (c1y - p1y), - by = 3 * (c2y - c1y) - cy, - ay = p2y - p1y - cy - by; - switch (type) { - case 0: - x = ((ax * t + bx) * t + cx) * t + p1x; - y = ((ay * t + by) * t + cy) * t + p1y; - break; - case 1: - case 2: - x = (3 * ax * t + 2 * bx) * t + cx; - y = (3 * ay * t + 2 * by) * t + cy; - break; - } - } - return type == 2 ? new Point(y, -x) : new Point(x, y); - }, - - subdivide: function(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, t) { - if (t === undefined) - t = 0.5; - var u = 1 - t, - p3x = u * p1x + t * c1x, - p3y = u * p1y + t * c1y, - p4x = u * c1x + t * c2x, - p4y = u * c1y + t * c2y, - p5x = u * c2x + t * p2x, - p5y = u * c2y + t * p2y, - p6x = u * p3x + t * p4x, - p6y = u * p3y + t * p4y, - p7x = u * p4x + t * p5x, - p7y = u * p4y + t * p5y, - p8x = u * p6x + t * p7x, - p8y = u * p6y + t * p7y; - return [ - [p1x, p1y, p3x, p3y, p6x, p6y, p8x, p8y], - [p8x, p8y, p7x, p7y, p5x, p5y, p2x, p2y] - ]; - }, - - getPart: function(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, from, to) { - var curve = [p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y]; - if (from > 0) { - curve[8] = from; - curve = Curve.subdivide.apply(Curve, curve)[1]; - } - if (to < 1) { - curve[8] = (to - from) / (1 - from); - curve = Curve.subdivide.apply(Curve, curve)[0]; - } - return curve; - }, - - isSufficientlyFlat: function(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) { - var vx = (p2x - p1x) / 3, - vy = (p2y - p1y) / 3, - m1x = p1x + vx, - m1y = p1y + vy, - m2x = p2x - vx, - m2y = p2y - vy; - return Math.max( - Math.abs(m1x - c1x), Math.abs(m1y - c1y), - Math.abs(m2x - c1x), Math.abs(m1y - c1y)) < 1 / 2; - } - } -}, new function() { - - function getLengthIntegrand(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y) { - var ax = 9 * (c1x - c2x) + 3 * (p2x - p1x), - bx = 6 * (p1x + c2x) - 12 * c1x, - cx = 3 * (c1x - p1x), - - ay = 9 * (c1y - c2y) + 3 * (p2y - p1y), - by = 6 * (p1y + c2y) - 12 * c1y, - cy = 3 * (c1y - p1y); - - return function(t) { - var dx = (ax * t + bx) * t + cx, - dy = (ay * t + by) * t + cy; - return Math.sqrt(dx * dx + dy * dy); - }; - } - - function getIterations(a, b) { - return Math.max(2, Math.min(16, Math.ceil(Math.abs(b - a) * 32))); - } - - return { - statics: true, - - getLength: function(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, a, b) { - if (a === undefined) - a = 0; - if (b === undefined) - b = 1; - if (p1x == c1x && p1y == c1y && p2x == c2x && p2y == c2y) { - var dx = p2x - p1x, - dy = p2y - p1y; - return (b - a) * Math.sqrt(dx * dx + dy * dy); - } - var ds = getLengthIntegrand( - p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y); - return Numerical.integrate(ds, a, b, getIterations(a, b)); - }, - - getParameter: function(p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y, - length, start) { - if (length == 0) - return start; - var forward = length > 0, - a = forward ? start : 0, - b = forward ? 1 : start, - length = Math.abs(length), - ds = getLengthIntegrand( - p1x, p1y, c1x, c1y, c2x, c2y, p2x, p2y), - rangeLength = Numerical.integrate(ds, a, b, - getIterations(a, b)); - if (length >= rangeLength) - return forward ? b : a; - var guess = length / rangeLength, - len = 0; - function f(t) { - var count = getIterations(start, t); - if (start < t) { - len += Numerical.integrate(ds, start, t, count); - } else { - len -= Numerical.integrate(ds, t, start, count); - } - start = t; - return len - length; - } - return Numerical.findRoot(f, ds, - forward ? a + guess : b - guess, - a, b, 16, Numerical.TOLERANCE); - } - }; -}); - -CurveLocation = Base.extend({ - - beans: true, - - initialize: function(curve, parameter, point) { - this._curve = curve; - this._parameter = parameter; - this._point = point; - }, - - getSegment: function() { - if (!this._segment) { - var parameter = this.getParameter(); - if (parameter == 0) { - this._segment = curve._segment1; - } else if (parameter == 1) { - this._segment = curve._segment2; - } else if (parameter == null) { - return null; - } else { - this._segment = curve.getLength(0, parameter) - < curve.getLength(parameter, 1) - ? curve._segment1 - : curve._segment2; - } - } - return this._segment; - }, - - getCurve: function() { - return this._curve; - }, - - getItem: function() { - return this._curve && this._curve._path; - }, - - getIndex: function() { - return this._curve && this._curve.getIndex(); - }, - - getOffset: function() { - var path = this._curve && this._curve._path; - return path && path._getOffset(this); - }, - - getCurveOffset: function() { - var parameter = this._curve && this.getParameter(); - return parameter != null ? this._curve.getLength(0, parameter) : null; - }, - - getParameter: function() { - if (this._parameter == null && this._point) - this._parameter = this._curve.getParameter(this._point); - return this._parameter; - }, - - getPoint: function() { - if (!this._point && this._curve) { - var parameter = this.getParameter(); - if (parameter != null) - this._point = this._curve.getPoint(parameter); - } - return this._point; - }, - - getTangent: function() { - var parameter = this.getParameter(); - return parameter != null && this._curve - && this._curve.getTangent(parameter); - }, - getNormal: function() { - var parameter = this.getParameter(); - return parameter != null && this._curve - && this._curve.getNormal(parameter); - }, - - toString: function() { - var parts = [], - point = this.getPoint(); - if (point) - parts.push('point: ' + point); - var index = this.getIndex(); - if (index != null) - parts.push('index: ' + index); - var parameter = this.getParameter(); - if (parameter != null) - parts.push('parameter: ' + Base.formatNumber(parameter)); - return '{ ' + parts.join(', ') + ' }'; - } -}); - -var PathItem = this.PathItem = Item.extend({ -}); - -var Path = this.Path = PathItem.extend({ - - beans: true, - - initialize: function(segments) { - this.base(); - this._closed = false; - this._selectedSegmentCount = 0; - this.setSegments(!segments || !Array.isArray(segments) - || typeof segments[0] !== 'object' ? arguments : segments); - }, - - clone: function() { - var copy = this._clone(new Path(this._segments)); - copy._closed = this._closed; - if (this._clockwise !== undefined) - copy._clockwise = this._clockwise; - return copy; - }, - - _changed: function(flags) { - if (flags & ChangeFlags.GEOMETRY) { - delete this._length; - delete this._bounds; - delete this._position; - delete this._strokeBounds; - delete this._clockwise; - } else if (flags & ChangeFlags.STROKE) { - delete this._strokeBounds; - } - }, - - getSegments: function() { - return this._segments; - }, - - setSegments: function(segments) { - if (!this._segments) { - this._segments = []; - } else { - this.setSelected(false); - this._segments.length = 0; - if (this._curves) - delete this._curves; - } - this._add(Segment.readAll(segments)); - }, - - getFirstSegment: function() { - return this._segments[0]; - }, - - getLastSegment: function() { - return this._segments[this._segments.length - 1]; - }, - - getCurves: function() { - if (!this._curves) { - var segments = this._segments, - length = segments.length; - if (!this._closed && length > 0) - length--; - this._curves = new Array(length); - for (var i = 0; i < length; i++) - this._curves[i] = Curve.create(this, segments[i], - segments[i + 1] || segments[0]); - } - return this._curves; - }, - - getFirstCurve: function() { - return this.getCurves()[0]; - }, - - getLastCurve: function() { - var curves = this.getCurves(); - return curves[curves.length - 1]; - }, - - getClosed: function() { - return this._closed; - }, - - setClosed: function(closed) { - if (this._closed != (closed = !!closed)) { - this._closed = closed; - if (this._curves) { - var length = this._segments.length, - i; - if (!closed && length > 0) - length--; - this._curves.length = length; - if (closed) - this._curves[i = length - 1] = Curve.create(this, - this._segments[i], this._segments[0]); - } - this._changed(ChangeFlags.GEOMETRY); - } - }, - - _transform: function(matrix, flags) { - if (!matrix.isIdentity()) { - var coords = new Array(6); - for (var i = 0, l = this._segments.length; i < l; i++) { - this._segments[i]._transformCoordinates(matrix, coords, true); - } - var fillColor = this.getFillColor(), - strokeColor = this.getStrokeColor(); - if (fillColor && fillColor.transform) - fillColor.transform(matrix); - if (strokeColor && strokeColor.transform) - strokeColor.transform(matrix); - } - this._changed(ChangeFlags.GEOMETRY); - }, - - _add: function(segs, index) { - var segments = this._segments, - curves = this._curves, - amount = segs.length, - append = index == null, - index = append ? segments.length : index; - for (var i = 0; i < amount; i++) { - var segment = segs[i]; - if (segment._path) { - segment = segs[i] = new Segment(segment); - } - segment._path = this; - segment._index = index + i; - if (segment._selectionState) - this._updateSelection(segment); - } - if (append) { - segments.push.apply(segments, segs); - } else { - segments.splice.apply(segments, [index, 0].concat(segs)); - for (var i = index + amount, l = segments.length; i < l; i++) { - segments[i]._index = i; - } - } - if (curves && --index >= 0) { - curves.splice(index, 0, Curve.create(this, segments[index], - segments[index + 1])); - var curve = curves[index + amount]; - if (curve) { - curve._segment1 = segments[index + amount]; - } - } - this._changed(ChangeFlags.GEOMETRY); - return segs; - }, - - _updateSelection: function(segment) { - var count = this._selectedSegmentCount += - segment._selectionState ? 1 : -1; - if (count <= 1) - this._project._selectItem(this, count == 1); - }, - - add: function(segment1 ) { - return arguments.length > 1 && typeof segment1 !== 'number' - ? this._add(Segment.readAll(arguments)) - : this._add([ Segment.read(arguments) ])[0]; - }, - - insert: function(index, segment1 ) { - return arguments.length > 2 && typeof segment1 !== 'number' - ? this._add(Segment.readAll(arguments, 1), index) - : this._add([ Segment.read(arguments, 1) ], index)[0]; - }, - - addSegment: function(segment) { - return this._add([ Segment.read(arguments) ])[0]; - }, - - insertSegment: function(index, segment) { - return this._add([ Segment.read(arguments, 1) ], index)[0]; - }, - - addSegments: function(segments) { - return this._add(Segment.readAll(segments)); - }, - - insertSegments: function(index, segments) { - return this._add(Segment.readAll(segments), index); - }, - - removeSegment: function(index) { - var segments = this.removeSegments(index, index + 1); - return segments[0] || null; - }, - removeSegments: function(from, to) { - from = from || 0; - to = Base.pick(to, this._segments.length - 1); - var segments = this._segments, - curves = this._curves, - last = to >= segments.length, - removed = segments.splice(from, to - from), - amount = removed.length; - if (!amount) - return removed; - for (var i = 0; i < amount; i++) { - var segment = removed[i]; - if (segment._selectionState) { - segment._selectionState = 0; - this._updateSelection(segment); - } - removed._index = removed._path = undefined; - } - for (var i = from, l = segments.length; i < l; i++) - segments[i]._index = i; - if (curves) { - curves.splice(from, amount); - var curve; - if (curve = curves[from - 1]) - curve._segment2 = segments[from]; - if (curve = curves[from]) - curve._segment1 = segments[from]; - if (last && this._closed && (curve = curves[curves.length - 1])) - curve._segment2 = segments[0]; - } - this._changed(ChangeFlags.GEOMETRY); - return removed; - }, - - isSelected: function() { - return this._selectedSegmentCount > 0; - }, - setSelected: function(selected) { - var wasSelected = this.isSelected(), - length = this._segments.length; - if (!wasSelected != !selected && length) - this._project._selectItem(this, selected); - this._selectedSegmentCount = selected ? length : 0; - for (var i = 0; i < length; i++) - this._segments[i]._selectionState = selected - ? SelectionState.POINT : 0; - }, - - isFullySelected: function() { - return this._selectedSegmentCount == this._segments.length; - }, - setFullySelected: function(selected) { - this.setSelected(selected); - }, - - curvesToPoints: function(maxDistance) { - var flattener = new PathFlattener(this), - pos = 0, - step = flattener.length / Math.ceil(flattener.length / maxDistance), - end = flattener.length + step / 2; - var segments = []; - while (pos <= end) { - segments.push(new Segment(flattener.evaluate(pos, 0))); - pos += step; - } - this.setSegments(segments); - }, - - pointsToCurves: function(tolerance) { - var fitter = new PathFitter(this, tolerance || 2.5); - this.setSegments(fitter.fit()); - }, - - isClockwise: function() { - if (this._clockwise !== undefined) - return this._clockwise; - var sum = 0, - xPre, yPre; - function edge(x, y) { - if (xPre !== undefined) - sum += (xPre - x) * (y + yPre); - xPre = x; - yPre = y; - } - for (var i = 0, l = this._segments.length; i < l; i++) { - var seg1 = this._segments[i], - seg2 = this._segments[i + 1 < l ? i + 1 : 0], - point1 = seg1._point, - handle1 = seg1._handleOut, - handle2 = seg2._handleIn, - point2 = seg2._point; - edge(point1._x, point1._y); - edge(point1._x + handle1._x, point1._y + handle1._y); - edge(point2._x + handle2._x, point2._y + handle2._y); - edge(point2._x, point2._y); - } - return sum > 0; - }, - - setClockwise: function(clockwise) { - if (this.isClockwise() != (clockwise = !!clockwise)) { - this.reverse(); - this._clockwise = clockwise; - } - }, - - reverse: function() { - this._segments.reverse(); - for (var i = 0, l = this._segments.length; i < l; i++) { - var segment = this._segments[i]; - var handleIn = segment._handleIn; - segment._handleIn = segment._handleOut; - segment._handleOut = handleIn; - } - if (this._clockwise !== undefined) - this._clockwise = !this._clockwise; - }, - - join: function(path) { - if (path) { - var segments = path._segments, - last1 = this.getLastSegment(), - last2 = path.getLastSegment(); - if (last1._point.equals(last2._point)) - path.reverse(); - var first2 = path.getFirstSegment(); - if (last1._point.equals(first2._point)) { - last1.setHandleOut(first2._handleOut); - this._add(segments.slice(1)); - } else { - var first1 = this.getFirstSegment(); - if (first1._point.equals(first2._point)) - path.reverse(); - last2 = path.getLastSegment(); - if (first1._point.equals(last2._point)) { - first1.setHandleIn(last2._handleIn); - this._add(segments.slice(0, segments.length - 1), 0); - } else { - this._add(segments.slice(0)); - } - } - path.remove(); - var first1 = this.getFirstSegment(); - last1 = this.getLastSegment(); - if (last1._point.equals(first1._point)) { - first1.setHandleIn(last1._handleIn); - last1.remove(); - this.setClosed(true); - } - this._changed(ChangeFlags.GEOMETRY); - return true; - } - return false; - }, - - getLength: function() { - if (this._length == null) { - var curves = this.getCurves(); - this._length = 0; - for (var i = 0, l = curves.length; i < l; i++) - this._length += curves[i].getLength(); - } - return this._length; - }, - - _getOffset: function(location) { - var index = location && location.getIndex(); - if (index != null) { - var curves = this.getCurves(), - offset = 0; - for (var i = 0; i < index; i++) - offset += curves[i].getLength(); - var curve = curves[index]; - return offset + curve.getLength(0, location.getParameter()); - } - return null; - }, - - getLocationAt: function(offset, isParameter) { - var curves = this.getCurves(), - length = 0; - if (isParameter) { - var index = ~~offset; - return new CurveLocation(curves[index], offset - index); - } - for (var i = 0, l = curves.length; i < l; i++) { - var start = length, - curve = curves[i]; - length += curve.getLength(); - if (length >= offset) { - return new CurveLocation(curve, - curve.getParameter(offset - start)); - } - } - if (offset <= this.getLength()) - return new CurveLocation(curves[curves.length - 1], 1); - return null; - }, - - getPointAt: function(offset, isParameter) { - var loc = this.getLocationAt(offset, isParameter); - return loc && loc.getPoint(); - }, - getTangentAt: function(offset, isParameter) { - var loc = this.getLocationAt(offset, isParameter); - return loc && loc.getTangent(); - }, - getNormalAt: function(offset, isParameter) { - var loc = this.getLocationAt(offset, isParameter); - return loc && loc.getNormal(); - } -}, new function() { - - function drawHandles(ctx, segments) { - for (var i = 0, l = segments.length; i < l; i++) { - var segment = segments[i], - point = segment._point, - pointSelected = segment._selectionState == SelectionState.POINT; - if (pointSelected || segment._isSelected(segment._handleIn)) - drawHandle(ctx, point, segment._handleIn); - if (pointSelected || segment._isSelected(segment._handleOut)) - drawHandle(ctx, point, segment._handleOut); - ctx.save(); - ctx.beginPath(); - ctx.rect(point._x - 2, point._y - 2, 4, 4); - ctx.fill(); - if (!pointSelected) { - ctx.beginPath(); - ctx.rect(point._x - 1, point._y - 1, 2, 2); - ctx.fillStyle = '#ffffff'; - ctx.fill(); - ctx.restore(); - } - } - } - function drawHandle(ctx, point, handle) { - if (!handle.isZero()) { - var handleX = point._x + handle._x, - handleY = point._y + handle._y; - ctx.beginPath(); - ctx.moveTo(point._x, point._y); - ctx.lineTo(handleX, handleY); - ctx.stroke(); - ctx.beginPath(); - ctx.arc(handleX, handleY, 1.75, 0, Math.PI * 2, true); - ctx.fill(); - } - } - - function drawSegments(ctx, path) { - var segments = path._segments, - length = segments.length, - handleOut, outX, outY; - - function drawSegment(i) { - var segment = segments[i], - point = segment._point, - x = point._x, - y = point._y, - handleIn = segment._handleIn; - if (!handleOut) { - ctx.moveTo(x, y); - } else { - if (handleIn.isZero() && handleOut.isZero()) { - ctx.lineTo(x, y); - } else { - ctx.bezierCurveTo(outX, outY, - handleIn._x + x, handleIn._y + y, x, y); - } - } - handleOut = segment._handleOut; - outX = handleOut._x + x; - outY = handleOut._y + y; - } - - for (var i = 0; i < length; i++) - drawSegment(i); - if (path._closed && length > 1) - drawSegment(0); - } - - function drawDashes(ctx, path, dashArray, dashOffset) { - var flattener = new PathFlattener(path), - from = dashOffset, to, - i = 0; - while (from < flattener.length) { - to = from + dashArray[(i++) % dashArray.length]; - flattener.drawPart(ctx, from, to); - from = to + dashArray[(i++) % dashArray.length]; - } - } - - return { - draw: function(ctx, param) { - if (!param.compound) - ctx.beginPath(); - - var fillColor = this.getFillColor(), - strokeColor = this.getStrokeColor(), - dashArray = this.getDashArray() || [], - hasDash = !!dashArray.length; - - if (param.compound || param.selection || param.clip || fillColor - || strokeColor && !hasDash) { - drawSegments(ctx, this); - } - - if (param.selection) { - ctx.stroke(); - drawHandles(ctx, this._segments); - } else if (param.clip) { - ctx.clip(); - } else if (!param.compound && (fillColor || strokeColor)) { - ctx.save(); - this._setStyles(ctx); - if (!fillColor || !strokeColor) - ctx.globalAlpha = this.opacity; - if (fillColor) { - ctx.fillStyle = fillColor.getCanvasStyle(ctx); - ctx.fill(); - } - if (strokeColor) { - ctx.strokeStyle = strokeColor.getCanvasStyle(ctx); - if (hasDash) { - ctx.beginPath(); - drawDashes(ctx, this, dashArray, this.getDashOffset()); - } - ctx.stroke(); - } - ctx.restore(); - } - } - }; -}, new function() { - - function getFirstControlPoints(rhs) { - var n = rhs.length, - x = [], - tmp = [], - b = 2; - x[0] = rhs[0] / b; - for (var i = 1; i < n; i++) { - tmp[i] = 1 / b; - b = (i < n - 1 ? 4 : 2) - tmp[i]; - x[i] = (rhs[i] - x[i - 1]) / b; - } - for (var i = 1; i < n; i++) { - x[n - i - 1] -= tmp[n - i] * x[n - i]; - } - return x; - }; - - var styles = { - getStrokeWidth: 'lineWidth', - getStrokeJoin: 'lineJoin', - getStrokeCap: 'lineCap', - getMiterLimit: 'miterLimit' - }; - - return { - - _setStyles: function(ctx) { - for (var i in styles) { - var style = this._style[i](); - if (style) - ctx[styles[i]] = style; - } - }, - - smooth: function() { - var segments = this._segments, - size = segments.length, - n = size, - overlap; - - if (size <= 2) - return; - - if (this._closed) { - overlap = Math.min(size, 4); - n += Math.min(size, overlap) * 2; - } else { - overlap = 0; - } - var knots = []; - for (var i = 0; i < size; i++) - knots[i + overlap] = segments[i]._point; - if (this._closed) { - for (var i = 0; i < overlap; i++) { - knots[i] = segments[i + size - overlap]._point; - knots[i + size + overlap] = segments[i]._point; - } - } else { - n--; - } - var rhs = []; - - for (var i = 1; i < n - 1; i++) - rhs[i] = 4 * knots[i]._x + 2 * knots[i + 1]._x; - rhs[0] = knots[0]._x + 2 * knots[1]._x; - rhs[n - 1] = 3 * knots[n - 1]._x; - var x = getFirstControlPoints(rhs); - - for (var i = 1; i < n - 1; i++) - rhs[i] = 4 * knots[i]._y + 2 * knots[i + 1]._y; - rhs[0] = knots[0]._y + 2 * knots[1]._y; - rhs[n - 1] = 3 * knots[n - 1]._y; - var y = getFirstControlPoints(rhs); - - if (this._closed) { - for (var i = 0, j = size; i < overlap; i++, j++) { - var f1 = (i / overlap); - var f2 = 1 - f1; - x[j] = x[i] * f1 + x[j] * f2; - y[j] = y[i] * f1 + y[j] * f2; - var ie = i + overlap, je = j + overlap; - x[je] = x[ie] * f2 + x[je] * f1; - y[je] = y[ie] * f2 + y[je] * f1; - } - n--; - } - var handleIn = null; - for (var i = overlap; i <= n - overlap; i++) { - var segment = segments[i - overlap]; - if (handleIn) - segment.setHandleIn(handleIn.subtract(segment._point)); - if (i < n) { - segment.setHandleOut( - new Point(x[i], y[i]).subtract(segment._point)); - if (i < n - 1) - handleIn = new Point( - 2 * knots[i + 1]._x - x[i + 1], - 2 * knots[i + 1]._y - y[i + 1]); - else - handleIn = new Point( - (knots[n]._x + x[n - 1]) / 2, - (knots[n]._y + y[n - 1]) / 2); - } - } - if (this._closed && handleIn) { - var segment = this._segments[0]; - segment.setHandleIn(handleIn.subtract(segment._point)); - } - } - }; -}, new function() { - - function getCurrentSegment(that) { - var segments = that._segments; - if (segments.length == 0) - throw('Use a moveTo() command first'); - return segments[segments.length - 1]; - } - - return { - - moveTo: function(point) { - if (!this._segments.length) - this._add([ new Segment(Point.read(arguments)) ]); - }, - - lineTo: function(point) { - this._add([ new Segment(Point.read(arguments)) ]); - }, - - cubicCurveTo: function(handle1, handle2, to) { - handle1 = Point.read(arguments, 0, 1); - handle2 = Point.read(arguments, 1, 1); - to = Point.read(arguments, 2, 1); - var current = getCurrentSegment(this); - current.setHandleOut(handle1.subtract(current._point)); - this._add([ new Segment(to, handle2.subtract(to)) ]); - }, - - quadraticCurveTo: function(handle, to) { - handle = Point.read(arguments, 0, 1); - to = Point.read(arguments, 1, 1); - var current = getCurrentSegment(this)._point; - this.cubicCurveTo( - handle.add(current.subtract(handle).multiply(1/3)), - handle.add(to.subtract(handle).multiply(1/3)), - to - ); - }, - - curveTo: function(through, to, parameter) { - through = Point.read(arguments, 0, 1); - to = Point.read(arguments, 1, 1); - var t = Base.pick(parameter, 0.5), - t1 = 1 - t, - current = getCurrentSegment(this)._point, - handle = through.subtract(current.multiply(t1 * t1)) - .subtract(to.multiply(t * t)).divide(2 * t * t1); - if (handle.isNaN()) - throw new Error( - "Cannot put a curve through points with parameter=" + t); - this.quadraticCurveTo(handle, to); - }, - - arcTo: function(to, clockwise) { - var current = getCurrentSegment(this), - through; - if (arguments[1] && typeof arguments[1] !== 'boolean') { - through = Point.read(arguments, 0, 1); - to = Point.read(arguments, 1, 1); - } else { - to = Point.read(arguments, 0, 1); - if (clockwise === undefined) - clockwise = true; - var middle = current._point.add(to).divide(2), - step = middle.subtract(current._point); - through = clockwise - ? middle.subtract(-step.y, step.x) - : middle.add(-step.y, step.x); - } - - var x1 = current._point._x, x2 = through.x, x3 = to.x, - y1 = current._point._y, y2 = through.y, y3 = to.y, - - f = x3 * x3 - x3 * x2 - x1 * x3 + x1 * x2 + y3 * y3 - y3 * y2 - - y1 * y3 + y1 * y2, - g = x3 * y1 - x3 * y2 + x1 * y2 - x1 * y3 + x2 * y3 - x2 * y1, - m = g == 0 ? 0 : f / g, - e = x1 * x2 + y1 * y2 - m * (x1 * y2 - y1 * x2), - cx = (x1 + x2 - m * (y2 - y1)) / 2, - cy = (y1 + y2 - m * (x1 - x2)) / 2, - radius = Math.sqrt(cx * cx + cy * cy - e), - angle = Math.atan2(y1 - cy, x1 - cx), - middle = Math.atan2(y2 - cy, x2 - cx), - extent = Math.atan2(y3 - cy, x3 - cx), - diff = middle - angle, - d90 = Math.PI, - d180 = d90 * 2; - - if (diff < -d90) - diff += d180; - else if (diff > d90) - diff -= d180; - - extent -= angle; - if (extent <= 0) - extent += d180; - if (diff < 0) - extent -= d180; - - var ext = Math.abs(extent), - arcSegs = ext >= d180 - ? 4 : Math.ceil(ext * 2 / Math.PI), - inc = Math.min(Math.max(extent, -d180), d180) / arcSegs, - z = 4 / 3 * Math.sin(inc / 2) / (1 + Math.cos(inc / 2)), - segments = []; - for (var i = 0; i <= arcSegs; i++) { - var relx = Math.cos(angle), - rely = Math.sin(angle); - var pt = new Point( - cx + relx * radius, - cy + rely * radius - ); - var out = i == arcSegs - ? null - : new Point( - cx + (relx - z * rely) * radius - pt.x, - cy + (rely + z * relx) * radius - pt.y - ); - if (i == 0) { - current.setHandleOut(out); - } else { - segments.push(new Segment(pt, new Point( - cx + (relx + z * rely) * radius - pt.x, - cy + (rely - z * relx) * radius - pt.y - ), out)); - } - angle += inc; - } - this._add(segments); - }, - - lineBy: function(vector) { - vector = Point.read(arguments); - var current = getCurrentSegment(this); - this.lineTo(current._point.add(vector)); - }, - - curveBy: function(throughVector, toVector, parameter) { - throughVector = Point.read(throughVector); - toVector = Point.read(toVector); - var current = getCurrentSegment(this)._point; - this.curveTo(current.add(throughVector), current.add(toVector), - parameter); - }, - - arcBy: function(throughVector, toVector) { - throughVector = Point.read(throughVector); - toVector = Point.read(toVector); - var current = getCurrentSegment(this)._point; - this.arcBy(current.add(throughVector), current.add(toVector)); - }, - - closePath: function() { - this.setClosed(true); - } - }; -}, new function() { - - function getBounds(that, matrix, strokePadding) { - var segments = that._segments, - first = segments[0]; - if (!first) - return null; - var coords = new Array(6), - prevCoords = new Array(6); - if (matrix && matrix.isIdentity()) - matrix = null; - first._transformCoordinates(matrix, prevCoords, false); - var min = prevCoords.slice(0, 2), - max = min.slice(0), - tMin = Numerical.TOLERANCE, - tMax = 1 - tMin; - function processSegment(segment) { - segment._transformCoordinates(matrix, coords, false); - - for (var i = 0; i < 2; i++) { - var v0 = prevCoords[i], - v1 = prevCoords[i + 4], - v2 = coords[i + 2], - v3 = coords[i]; - - function add(value, t) { - var padding = 0; - if (value == null) { - var u = 1 - t; - value = u * u * u * v0 - + 3 * u * u * t * v1 - + 3 * u * t * t * v2 - + t * t * t * v3; - padding = strokePadding ? strokePadding[i] : 0; - } - var left = value - padding, - right = value + padding; - if (left < min[i]) - min[i] = left; - if (right > max[i]) - max[i] = right; - - } - add(v3, null); - - var a = 3 * (v1 - v2) - v0 + v3, - b = 2 * (v0 + v2) - 4 * v1, - c = v1 - v0; - - if (a == 0) { - if (b == 0) - continue; - var t = -c / b; - if (tMin < t && t < tMax) - add(null, t); - continue; - } - - var b2ac = b * b - 4 * a * c; - if (b2ac < 0) - continue; - var sqrt = Math.sqrt(b2ac), - f = 1 / (a * -2), - t1 = (b - sqrt) * f, - t2 = (b + sqrt) * f; - if (tMin < t1 && t1 < tMax) - add(null, t1); - if (tMin < t2 && t2 < tMax) - add(null, t2); - } - var tmp = prevCoords; - prevCoords = coords; - coords = tmp; - } - for (var i = 1, l = segments.length; i < l; i++) - processSegment(segments[i]); - if (that._closed) - processSegment(first); - return Rectangle.create(min[0], min[1], - max[0] - min[0], max[1] - min[1]); - } - - function getPenPadding(radius, matrix) { - if (!matrix) - return [radius, radius]; - var mx = matrix.createShiftless(), - hor = mx.transform(new Point(radius, 0)), - ver = mx.transform(new Point(0, radius)), - phi = hor.getAngleInRadians(), - a = hor.getLength(), - b = ver.getLength(); - var tx = - Math.atan(b * Math.tan(phi)), - ty = + Math.atan(b / Math.tan(phi)), - x = a * Math.cos(tx) * Math.cos(phi) - - b * Math.sin(tx) * Math.sin(phi), - y = b * Math.sin(ty) * Math.cos(phi) - + a * Math.cos(ty) * Math.sin(phi); - return [Math.abs(x), Math.abs(y)]; - } - - return { - beans: true, - - getBounds: function() { - var useCache = arguments.length == 0; - if (!useCache || !this._bounds) { - var bounds = getBounds(this, arguments[0]); - if (!useCache) - return bounds; - this._bounds = LinkedRectangle.create(this, 'setBounds', - bounds.x, bounds.y, bounds.width, bounds.height); - } - return this._bounds; - }, - - getStrokeBounds: function() { - if (!this._style._strokeColor || !this._style._strokeWidth) - return this.getBounds.apply(this, arguments); - var useCache = arguments.length == 0; - if (this._strokeBounds && useCache) - return this._strokeBounds; - var matrix = arguments[0], - width = this.getStrokeWidth(), - radius = width / 2, - padding = getPenPadding(radius, matrix), - join = this.getStrokeJoin(), - cap = this.getStrokeCap(), - miter = this.getMiterLimit() * width / 2, - segments = this._segments, - length = segments.length, - bounds = getBounds(this, matrix, getPenPadding(radius)); - var joinBounds = new Rectangle(new Size(padding).multiply(2)); - - function add(point) { - bounds = bounds.include(matrix - ? matrix.transform(point) : point); - } - - function addBevelJoin(curve, t) { - var point = curve.getPoint(t), - normal = curve.getNormal(t).normalize(radius); - add(point.add(normal)); - add(point.subtract(normal)); - } - - function addJoin(segment, join) { - var handleIn = segment.getHandleInIfSet(), - handleOut = segment.getHandleOutIfSet(); - if (join === 'round' || handleIn && handleOut) { - bounds = bounds.unite(joinBounds.setCenter(matrix - ? matrix.transform(segment._point) : segment._point)); - } else if (join == 'bevel') { - var curve = segment.getCurve(); - addBevelJoin(curve, 0); - addBevelJoin(curve.getPrevious(), 1); - } else if (join == 'miter') { - var curve2 = segment.getCurve(), - curve1 = curve2.getPrevious(), - point = curve2.getPoint(0), - normal1 = curve1.getNormal(1).normalize(radius), - normal2 = curve2.getNormal(0).normalize(radius), - line1 = new Line(point.add(normal1), - new Point(-normal1.y, normal1.x)), - line2 = new Line(point.subtract(normal2), - new Point(-normal2.y, normal2.x)), - corner = line1.intersect(line2); - if (!corner || point.getDistance(corner) > miter) { - addJoin(segment, 'bevel'); - } else { - add(corner); - } - } - } - - function addCap(segment, cap, t) { - switch (cap) { - case 'round': - return addJoin(segment, cap); - case 'butt': - case 'square': - var curve = segment.getCurve(), - point = curve.getPoint(t), - normal = curve.getNormal(t).normalize(radius); - if (cap === 'square') - point = point.add(normal.y, -normal.x); - add(point.add(normal)); - add(point.subtract(normal)); - break; - } - } - - for (var i = 1, l = length - (this._closed ? 0 : 1); i < l; i++) { - addJoin(segments[i], join); - } - if (this._closed) { - addJoin(segments[0], join); - } else { - addCap(segments[0], cap, 0); - addCap(segments[length - 1], cap, 1); - } - if (useCache) - this._strokeBounds = bounds; - return bounds; - }, - - getControlBounds: function() { - } - }; -}); - -var CompoundPath = this.CompoundPath = PathItem.extend({ - - initialize: function(paths) { - this.base(); - this._children = []; - var items = !paths || !Array.isArray(paths) - || typeof paths[0] !== 'object' ? arguments : paths; - for (var i = 0, l = items.length; i < l; i++) { - var path = items[i]; - if (path._clockwise === undefined) - path.setClockwise(i < l - 1); - this.appendTop(path); - } - }, - - simplify: function() { - if (this._children.length == 1) { - var child = this._children[0]; - child.moveAbove(this); - this.remove(); - return child; - } - return this; - }, - - smooth: function() { - for (var i = 0, l = this._children.length; i < l; i++) - this._children[i].smooth(); - }, - - draw: function(ctx, param) { - var firstChild = this._children[0]; - ctx.beginPath(); - param.compound = true; - for (var i = 0, l = this._children.length; i < l; i++) - Item.draw(this._children[i], ctx, param); - firstChild._setStyles(ctx); - var fillColor = firstChild.getFillColor(), - strokeColor = firstChild.getStrokeColor(); - if (fillColor) { - ctx.fillStyle = fillColor.getCanvasStyle(ctx); - ctx.fill(); - } - if (strokeColor) { - ctx.strokeStyle = strokeColor.getCanvasStyle(ctx); - ctx.stroke(); - } - param.compound = false; - } -}, new function() { - function getCurrentPath(that) { - if (!that._children.length) - throw new Error('Use a moveTo() command first'); - return that._children[that._children.length - 1]; - } - - var fields = { - - moveTo: function(point) { - var path = new Path(); - this.appendTop(path); - path.moveTo.apply(path, arguments); - }, - - moveBy: function(point) { - this.moveTo(getCurrentPath(this).getLastSegment()._point.add( - Point.read(arguments))); - }, - - closePath: function() { - getCurrentPath(this).setClosed(true); - } - }; - - Base.each(['lineTo', 'cubicCurveTo', 'quadraticCurveTo', 'curveTo', - 'arcTo', 'lineBy', 'curveBy', 'arcBy'], function(key) { - fields[key] = function() { - var path = getCurrentPath(this); - path[key].apply(path, arguments); - }; - }); - - return fields; -}); - -Path.inject({ statics: new function() { - var kappa = 2 / 3 * (Math.sqrt(2) - 1); - - var ovalSegments = [ - new Segment([0, 0.5], [0, kappa ], [0, -kappa]), - new Segment([0.5, 0], [-kappa, 0], [kappa, 0 ]), - new Segment([1, 0.5], [0, -kappa], [0, kappa ]), - new Segment([0.5, 1], [kappa, 0 ], [-kappa, 0]) - ]; - - return { - Line: function() { - var step = Math.floor(arguments.length / 2); - return new Path( - Segment.read(arguments, 0, step), - Segment.read(arguments, step, step) - ); - }, - - Rectangle: function(rect) { - rect = Rectangle.read(arguments); - var path = new Path(), - corners = ['getBottomLeft', 'getTopLeft', 'getTopRight', - 'getBottomRight'], - segments = new Array(4); - for (var i = 0; i < 4; i++) - segments[i] = new Segment(rect[corners[i]]()); - path._add(segments); - path._closed = true; - return path; - }, - - RoundRectangle: function(rect, size) { - if (arguments.length == 2) { - rect = Rectangle.read(arguments, 0, 1); - size = Size.read(arguments, 1, 1); - } else if (arguments.length == 6) { - rect = Rectangle.read(arguments, 0, 4); - size = Size.read(arguments, 4, 2); - } - size = Size.min(size, rect.getSize().divide(2)); - var path = new Path(), - uSize = size.multiply(kappa * 2), - bl = rect.getBottomLeft(), - tl = rect.getTopLeft(), - tr = rect.getTopRight(), - br = rect.getBottomRight(); - path._add([ - new Segment(bl.add(size.width, 0), null, [-uSize.width, 0]), - new Segment(bl.subtract(0, size.height), [0, uSize.height], null), - - new Segment(tl.add(0, size.height), null, [0, -uSize.height]), - new Segment(tl.add(size.width, 0), [-uSize.width, 0], null), - - new Segment(tr.subtract(size.width, 0), null, [uSize.width, 0]), - new Segment(tr.add(0, size.height), [0, -uSize.height], null), - - new Segment(br.subtract(0, size.height), null, [0, uSize.height]), - new Segment(br.subtract(size.width, 0), [uSize.width, 0], null) - ]); - path._closed = true; - return path; - }, - - Oval: function(rect) { - rect = Rectangle.read(arguments); - var path = new Path(), - topLeft = rect.getTopLeft(), - size = new Size(rect.width, rect.height), - segments = new Array(4); - for (var i = 0; i < 4; i++) { - var segment = ovalSegments[i]; - segments[i] = new Segment( - segment._point.multiply(size).add(topLeft), - segment._handleIn.multiply(size), - segment._handleOut.multiply(size) - ); - } - path._add(segments); - path._closed = true; - return path; - }, - - Circle: function(center, radius) { - if (arguments.length == 3) { - center = Point.read(arguments, 0, 2); - radius = arguments[2]; - } else { - center = Point.read(arguments, 0, 1); - } - return Path.Oval(new Rectangle(center.subtract(radius), - new Size(radius * 2, radius * 2))); - }, - - Arc: function(from, through, to) { - var path = new Path(); - path.moveTo(from); - path.arcTo(through, to); - return path; - }, - - RegularPolygon: function(center, numSides, radius) { - center = Point.read(arguments, 0, 1); - var path = new Path(), - step = 360 / numSides, - three = !(numSides % 3), - vector = new Point(0, three ? -radius : radius), - offset = three ? -1 : 0.5, - segments = new Array(numSides); - for (var i = 0; i < numSides; i++) { - segments[i] = new Segment(center.add( - vector.rotate((i + offset) * step))); - } - path._add(segments); - path._closed = true; - return path; - }, - - Star: function(center, numPoints, radius1, radius2) { - center = Point.read(arguments, 0, 1); - numPoints *= 2; - var path = new Path(), - step = 360 / numPoints, - vector = new Point(0, -1), - segments = new Array(numPoints); - for (var i = 0; i < numPoints; i++) { - segments[i] = new Segment(center.add( - vector.rotate(step * i).multiply(i % 2 ? radius2 : radius1))); - } - path._add(segments); - path._closed = true; - return path; - } - }; -}}); - -var PathFlattener = Base.extend({ - initialize: function(path) { - this.curves = []; - this.parts = []; - this.length = 0; - this.index = 0; - - var segments = path._segments, - segment1 = segments[0], - segment2, - that = this; - - function addCurve(segment1, segment2) { - var curve = Curve.getValues(segment1, segment2); - that.curves.push(curve); - that._computeParts(curve, segment1._index, 0, 1); - } - - for (var i = 1, l = segments.length; i < l; i++) { - segment2 = segments[i]; - addCurve(segment1, segment2); - segment1 = segment2; - } - if (path._closed) - addCurve(segment2, segments[0]); - }, - - _computeParts: function(curve, index, minT, maxT) { - if ((maxT - minT) > 1 / 32 - && !Curve.isSufficientlyFlat.apply(Curve, curve)) { - var curves = Curve.subdivide.apply(Curve, curve); - var halfT = (minT + maxT) / 2; - this._computeParts(curves[0], index, minT, halfT); - this._computeParts(curves[1], index, halfT, maxT); - } else { - var x = curve[6] - curve[0], - y = curve[7] - curve[1], - dist = Math.sqrt(x * x + y * y); - if (dist > Numerical.TOLERANCE) { - this.length += dist; - this.parts.push({ - offset: this.length, - value: maxT, - index: index - }); - } - } - }, - - getParameter: function(offset) { - var i, j = this.index; - for (;;) { - i = j; - if (j == 0 || this.parts[--j].offset < offset) - break; - } - for (var l = this.parts.length; i < l; i++) { - var part = this.parts[i]; - if (part.offset >= offset) { - this.index = i; - var prev = this.parts[i - 1]; - var prevVal = prev && prev.index == part.index ? prev.value : 0, - prevLen = prev ? prev.offset : 0; - return { - value: prevVal + (part.value - prevVal) - * (offset - prevLen) / (part.offset - prevLen), - index: part.index - }; - } - } - var part = this.parts[this.parts.length - 1]; - return { - value: 1, - index: part.index - }; - }, - - evaluate: function(offset, type) { - var param = this.getParameter(offset); - return Curve.evaluate.apply(Curve, - this.curves[param.index].concat([param.value, type])); - }, - - drawPart: function(ctx, from, to) { - from = this.getParameter(from); - to = this.getParameter(to); - for (var i = from.index; i <= to.index; i++) { - var curve = Curve.getPart.apply(Curve, this.curves[i].concat( - i == from.index ? from.value : 0, - i == to.index ? to.value : 1)); - if (i == from.index) - ctx.moveTo(curve[0], curve[1]); - ctx.bezierCurveTo.apply(ctx, curve.slice(2)); - } - } -}); - -var PathFitter = Base.extend({ - initialize: function(path, error) { - this.points = []; - var segments = path._segments, - prev; - for (var i = 0, l = segments.length; i < l; i++) { - var point = segments[i].point.clone(); - if (!prev || !prev.equals(point)) { - this.points[i] = point; - prev = point; - } - } - this.error = error; - }, - - fit: function() { - this.segments = [new Segment(this.points[0])]; - this.fitCubic(0, this.points.length - 1, - this.points[1].subtract(this.points[0]).normalize(), - this.points[this.points.length - 2].subtract( - this.points[this.points.length - 1]).normalize()); - return this.segments; - }, - - fitCubic: function(first, last, tan1, tan2) { - if (last - first == 1) { - var pt1 = this.points[first], - pt2 = this.points[last], - dist = pt1.getDistance(pt2) / 3; - this.addCurve([pt1, pt1.add(tan1.normalize(dist)), - pt2.add(tan2.normalize(dist)), pt2]); - return; - } - var uPrime = this.chordLengthParameterize(first, last), - maxError = Math.max(this.error, this.error * this.error), - error, - split; - for (var i = 0; i <= 4; i++) { - var curve = this.generateBezier(first, last, uPrime, tan1, tan2); - var max = this.findMaxError(first, last, curve, uPrime); - if (max.error < this.error) { - this.addCurve(curve); - return; - } - split = max.index; - if (max.error >= maxError) - break; - this.reparameterize(first, last, uPrime, curve); - maxError = max.error; - } - var V1 = this.points[split - 1].subtract(this.points[split]), - V2 = this.points[split].subtract(this.points[split + 1]), - tanCenter = V1.add(V2).divide(2).normalize(); - this.fitCubic(first, split, tan1, tanCenter); - this.fitCubic(split, last, tanCenter.negate(), tan2); - }, - - addCurve: function(curve) { - var prev = this.segments[this.segments.length - 1]; - prev.setHandleOut(curve[1].subtract(curve[0])); - this.segments.push( - new Segment(curve[3], curve[2].subtract(curve[3]))); - }, - - generateBezier: function(first, last, uPrime, tan1, tan2) { - var epsilon = Numerical.TOLERANCE, - pt1 = this.points[first], - pt2 = this.points[last], - C = [[0, 0], [0, 0]], - X = [0, 0]; - - for (var i = 0, l = last - first + 1; i < l; i++) { - var u = uPrime[i], - t = 1 - u, - b = 3 * u * t, - b0 = t * t * t, - b1 = b * t, - b2 = b * u, - b3 = u * u * u, - a1 = tan1.normalize(b1), - a2 = tan2.normalize(b2), - tmp = this.points[first + i] - .subtract(pt1.multiply(b0 + b1)) - .subtract(pt2.multiply(b2 + b3)); - C[0][0] += a1.dot(a1); - C[0][1] += a1.dot(a2); - C[1][0] = C[0][1]; - C[1][1] += a2.dot(a2); - X[0] += a1.dot(tmp); - X[1] += a2.dot(tmp); - } - - var detC0C1 = C[0][0] * C[1][1] - C[1][0] * C[0][1], - alpha1, alpha2; - if (Math.abs(detC0C1) > epsilon) { - var detC0X = C[0][0] * X[1] - C[1][0] * X[0], - detXC1 = X[0] * C[1][1] - X[1] * C[0][1]; - alpha1 = detXC1 / detC0C1; - alpha2 = detC0X / detC0C1; - } else { - var c0 = C[0][0] + C[0][1], - c1 = C[1][0] + C[1][1]; - if (Math.abs(c0) > epsilon) { - alpha1 = alpha2 = X[0] / c0; - } else if (Math.abs(c0) > epsilon) { - alpha1 = alpha2 = X[1] / c1; - } else { - alpha1 = alpha2 = 0.; - } - } - - var segLength = pt2.getDistance(pt1); - epsilon *= segLength; - if (alpha1 < epsilon || alpha2 < epsilon) { - alpha1 = alpha2 = segLength / 3; - } - - return [pt1, pt1.add(tan1.normalize(alpha1)), - pt2.add(tan2.normalize(alpha2)), pt2]; - }, - - reparameterize: function(first, last, u, curve) { - for (var i = first; i <= last; i++) { - u[i - first] = this.findRoot(curve, this.points[i], u[i - first]); - } - }, - - findRoot: function(curve, point, u) { - var curve1 = [], - curve2 = []; - for (var i = 0; i <= 2; i++) { - curve1[i] = curve[i + 1].subtract(curve[i]).multiply(3); - } - for (var i = 0; i <= 1; i++) { - curve2[i] = curve1[i + 1].subtract(curve1[i]).multiply(2); - } - var pt = this.evaluate(3, curve, u), - pt1 = this.evaluate(2, curve1, u), - pt2 = this.evaluate(1, curve2, u), - diff = pt.subtract(point), - df = pt1.dot(pt1) + diff.dot(pt2); - if (Math.abs(df) < Numerical.TOLERANCE) - return u; - return u - diff.dot(pt1) / df; - }, - - evaluate: function(degree, curve, t) { - var tmp = curve.slice(); - for (var i = 1; i <= degree; i++) { - for (var j = 0; j <= degree - i; j++) { - tmp[j] = tmp[j].multiply(1 - t).add(tmp[j + 1].multiply(t)); - } - } - return tmp[0]; - }, - - chordLengthParameterize: function(first, last) { - var u = [0]; - for (var i = first + 1; i <= last; i++) { - u[i - first] = u[i - first - 1] - + this.points[i].getDistance(this.points[i - 1]); - } - for (var i = 1, m = last - first; i <= m; i++) { - u[i] /= u[m]; - } - return u; - }, - - findMaxError: function(first, last, curve, u) { - var index = Math.floor((last - first + 1) / 2), - maxDist = 0; - for (var i = first + 1; i < last; i++) { - var P = this.evaluate(3, curve, u[i - first]); - var v = P.subtract(this.points[i]); - var dist = v.x * v.x + v.y * v.y; - if (dist >= maxDist) { - maxDist = dist; - index = i; - } - } - return { - error: maxDist, - index: index - }; - } -}); - -var ParagraphStyle = this.ParagraphStyle = Base.extend({ - - initialize: function(style) { - Base.initialize(this, style, { - justification: 'left' - }); - }, - - statics: { - create: function(item) { - var style = new ParagraphStyle(ParagraphStyle.dont); - style._item = item; - return style; - } - } -}); - -var CharacterStyle = this.CharacterStyle = PathStyle.extend({ - - initialize: function(style) { - Base.initialize(this, style, { - fontSize: 10, - font: 'sans-serif' - }); - this.base(style); - }, - - statics: { - create: function(item) { - var style = new CharacterStyle(CharacterStyle.dont); - style._item = item; - return style; - } - } -}); - -var TextItem = this.TextItem = Item.extend({ - - beans: true, - - initialize: function() { - this.base(); - this.content = null; - this._characterStyle = CharacterStyle.create(this); - this.setCharacterStyle(this._project.getCurrentStyle()); - this._paragraphStyle = ParagraphStyle.create(this); - this.setParagraphStyle(); - }, - - _clone: function(copy) { - copy.setCharacterStyle(this._characterStyle); - copy.setParagraphStyle(this._paragraphStyle); - return this.base(copy); - }, - - getCharacterStyle: function() { - return this._characterStyle; - }, - - setCharacterStyle: function(style) { - this._characterStyle.initialize(style); - }, - - getParagraphStyle: function() { - return this._paragraphStyle; - }, - - setParagraphStyle: function(style) { - this._paragraphStyle.initialize(style); - } -}); - -var PointText = this.PointText = TextItem.extend({ - - beans: true, - - initialize: function(point) { - this.base(); - var point = Point.read(arguments); - this.content = ''; - this._point = LinkedPoint.create(this, 'setPoint', point.x, point.y); - this._matrix = new Matrix().translate(point); - }, - - clone: function() { - var copy = this._clone(new PointText(this._point)); - copy.content = this.content; - copy._matrix.initialize(this._matrix); - return copy; - }, - - getPoint: function() { - return this._point; - }, - - setPoint: function(point) { - this._transform(new Matrix().translate( - Point.read(arguments).subtract(this._point))); - }, - getPosition: function() { - return this._point; - }, - setPosition: function(point) { - this.setPoint.apply(this, arguments); - }, - _transform: function(matrix, flags) { - this._matrix.preConcatenate(matrix); - matrix._transformPoint(this._point, this._point, true); - }, - draw: function(ctx) { - if (this.content == null) - return; - ctx.save(); - ctx.font = this._characterStyle.fontSize + 'pt ' + - this._characterStyle.font; - ctx.textAlign = this._paragraphStyle.justification; - this._matrix.applyToContext(ctx); - var fillColor = this.getFillColor(); - var strokeColor = this.getStrokeColor(); - if (!fillColor || !strokeColor) - ctx.globalAlpha = this.opacity; - if (fillColor) { - ctx.fillStyle = fillColor.getCanvasStyle(ctx); - ctx.fillText(this.content, 0, 0); - } - if (strokeColor) { - ctx.strokeStyle = strokeColor.getCanvasStyle(ctx); - ctx.strokeText(this.content, 0, 0); - } - ctx.restore(); - } -}); - -var Color = this.Color = Base.extend(new function() { - var components = { - gray: ['gray'], - rgb: ['red', 'green', 'blue'], - hsb: ['hue', 'saturation', 'brightness'] - }; - - var colorCache = {}, - colorContext; - - function nameToRGBColor(name) { - var color = colorCache[name]; - if (color) - return color.clone(); - if (!colorContext) { - var canvas = CanvasProvider.getCanvas(Size.create(1, 1)); - colorContext = canvas.getContext('2d'); - colorContext.globalCompositeOperation = 'copy'; - } - colorContext.fillStyle = 'rgba(0,0,0,0)'; - colorContext.fillStyle = name; - colorContext.fillRect(0, 0, 1, 1); - var data = colorContext.getImageData(0, 0, 1, 1).data, - rgb = [data[0] / 255, data[1] / 255, data[2] / 255]; - return (colorCache[name] = RGBColor.read(rgb)).clone(); - } - - function hexToRGBColor(string) { - var hex = string.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/); - if (hex.length >= 4) { - var rgb = new Array(3); - for (var i = 0; i < 3; i++) { - var channel = hex[i + 1]; - rgb[i] = parseInt(channel.length == 1 - ? channel + channel : channel, 16) / 255; - } - return RGBColor.read(rgb); - } - } - - var hsbIndices = [ - [0, 3, 1], - [2, 0, 1], - [1, 0, 3], - [1, 2, 0], - [3, 1, 0], - [0, 1, 2] - ]; - - var converters = { - 'rgb-hsb': function(color) { - var r = color._red, - g = color._green, - b = color._blue, - max = Math.max(r, g, b), - min = Math.min(r, g, b), - delta = max - min, - h, - s = max == 0 ? 0 : delta / max, - v = max; - if (delta == 0) { - h = 0; - } else { - switch (max) { - case r: h = (g - b) / delta + (g < b ? 6 : 0); break; - case g: h = (b - r) / delta + 2; break; - case b: h = (r - g) / delta + 4; break; - } - h /= 6; - } - return new HSBColor(h * 360, s, v, color._alpha); - }, - - 'hsb-rgb': function(color) { - var h = (color._hue / 60) % 6, - s = color._saturation, - b = color._brightness, - i = Math.floor(h), - f = h - i, - i = hsbIndices[i], - v = [ - b, - b * (1 - s), - b * (1 - s * f), - b * (1 - s * (1 - f)) - ]; - return new RGBColor(v[i[0]], v[i[1]], v[i[2]], color._alpha); - }, - - 'rgb-gray': function(color) { - return new GrayColor(1 - (color._red * 0.2989 + color._green * 0.587 - + color._blue * 0.114), color._alpha); - }, - - 'gray-rgb': function(color) { - var comp = 1 - color._gray; - return new RGBColor(comp, comp, comp, color._alpha); - }, - - 'hsb-gray': function(color) { - return converters['rgb-gray'](converters['hsb-rgb'](color)); - }, - - 'gray-hsb': function(color) { - return new HSBColor(0, 0, 1 - color._gray, color._alpha); - } - }; - - var fields = { - - beans: true, - _readNull: true, - - initialize: function(arg) { - var isArray = Array.isArray(arg), - type = this._colorType; - if (typeof arg === 'object' && !isArray) { - if (!type) { - return arg.red !== undefined - ? new RGBColor(arg.red, arg.green, arg.blue, arg.alpha) - : arg.gray !== undefined - ? new GrayColor(arg.gray, arg.alpha) - : arg.hue !== undefined - ? new HSBColor(arg.hue, arg.saturation, arg.brightness, - arg.alpha) - : new RGBColor(); - } else { - return Color.read(arguments).convert(type); - } - } else if (typeof arg === 'string') { - var rgbColor = arg.match(/^#[0-9a-f]{3,6}$/i) - ? hexToRGBColor(arg) - : nameToRGBColor(arg); - return type - ? rgbColor.convert(type) - : rgbColor; - } else { - var components = isArray ? arg - : Array.prototype.slice.call(arguments); - if (!type) { - if (components.length >= 3) - return new RGBColor(components); - return new GrayColor(components); - } else { - Base.each(this._components, - function(name, i) { - var value = components[i]; - this['_' + name] = value !== undefined - ? value : null; - }, - this); - } - } - }, - - clone: function() { - var ctor = this.constructor, - copy = new ctor(ctor.dont), - components = this._components; - for (var i = 0, l = components.length; i < l; i++) { - var key = '_' + components[i]; - copy[key] = this[key]; - } - return copy; - }, - - convert: function(type) { - return this._colorType == type - ? this.clone() - : converters[this._colorType + '-' + type](this); - }, - - statics: { - extend: function(src) { - src.beans = true; - if (src._colorType) { - var comps = components[src._colorType]; - src._components = comps.concat(['alpha']); - Base.each(comps, function(name) { - var isHue = name === 'hue', - part = Base.capitalize(name), - name = '_' + name; - this['get' + part] = function() { - return this[name]; - }; - this['set' + part] = function(value) { - this[name] = isHue - ? ((value % 360) + 360) % 360 - : Math.min(Math.max(value, 0), 1); - this._cssString = null; - return this; - }; - }, src); - } - return this.base(src); - } - } - }; - - Base.each(components, function(comps, type) { - Base.each(comps, function(component) { - var part = Base.capitalize(component); - fields['get' + part] = function() { - return this.convert(type)[component]; - }; - fields['set' + part] = function(value) { - var color = this.convert(type); - color[component] = value; - color = color.convert(this._colorType); - for (var i = 0, l = this._components.length; i < l; i++) { - var key = this._components[i]; - this[key] = color[key]; - } - }; - }); - }); - - return fields; -}, { - - beans: true, - - getType: function() { - return this._colorType; - }, - - getComponents: function() { - var length = this._components.length; - var comps = new Array(length); - for (var i = 0; i < length; i++) - comps[i] = this['_' + this._components[i]]; - return comps; - }, - - getAlpha: function() { - return this._alpha != null ? this._alpha : 1; - }, - - setAlpha: function(alpha) { - this._alpha = alpha == null ? null : Math.min(Math.max(alpha, 0), 1); - this._cssString = null; - return this; - }, - - hasAlpha: function() { - return this._alpha != null; - }, - - equals: function(color) { - if (color && color._colorType === this._colorType) { - for (var i = 0, l = this._components.length; i < l; i++) { - var component = '_' + this._components[i]; - if (this[component] !== color[component]) - return false; - } - return true; - } - return false; - }, - - toString: function() { - var parts = [], - format = Base.formatNumber; - for (var i = 0, l = this._components.length; i < l; i++) { - var component = this._components[i], - value = this['_' + component]; - if (component === 'alpha' && value == null) - value = 1; - parts.push(component + ': ' + format(value)); - } - return '{ ' + parts.join(', ') + ' }'; - }, - - toCssString: function() { - if (!this._cssString) { - var color = this.convert('rgb'), - alpha = color.getAlpha(), - components = [ - Math.round(color._red * 255), - Math.round(color._green * 255), - Math.round(color._blue * 255), - alpha != null ? alpha : 1 - ]; - this._cssString = 'rgba(' + components.join(', ') + ')'; - } - return this._cssString; - }, - - getCanvasStyle: function() { - return this.toCssString(); - } - -}); - -var GrayColor = this.GrayColor = Color.extend({ - - _colorType: 'gray' -}); - -var RGBColor = this.RGBColor = Color.extend({ - - _colorType: 'rgb' -}); - -var HSBColor = this.HSBColor = Color.extend({ - - _colorType: 'hsb' -}); - -var GradientColor = this.GradientColor = Color.extend({ - - beans: true, - - initialize: function(gradient, origin, destination, hilite) { - this.gradient = gradient || new Gradient(); - this.setOrigin(origin); - this.setDestination(destination); - if (hilite) - this.setHilite(hilite); - }, - - clone: function() { - return new GradientColor(this.gradient, this._origin, this._destination, - this._hilite); - }, - - getOrigin: function() { - return this._origin; - }, - - setOrigin: function(origin) { - origin = Point.read(arguments).clone(); - this._origin = origin; - if (this._destination) - this._radius = this._destination.getDistance(this._origin); - return this; - }, - - getDestination: function() { - return this._destination; - }, - - setDestination: function(destination) { - destination = Point.read(arguments).clone(); - this._destination = destination; - this._radius = this._destination.getDistance(this._origin); - return this; - }, - - getHilite: function() { - return this._hilite; - }, - - setHilite: function(hilite) { - hilite = Point.read(arguments).clone(); - var vector = hilite.subtract(this._origin); - if (vector.getLength() > this._radius) { - this._hilite = this._origin.add( - vector.normalize(this._radius - 0.1)); - } else { - this._hilite = hilite; - } - return this; - }, - - getCanvasStyle: function(ctx) { - var gradient; - if (this.gradient.type === 'linear') { - gradient = ctx.createLinearGradient(this._origin.x, this._origin.y, - this._destination.x, this._destination.y); - } else { - var origin = this._hilite || this._origin; - gradient = ctx.createRadialGradient(origin.x, origin.y, - 0, this._origin.x, this._origin.y, this._radius); - } - for (var i = 0, l = this.gradient._stops.length; i < l; i++) { - var stop = this.gradient._stops[i]; - gradient.addColorStop(stop._rampPoint, stop._color.toCssString()); - } - return gradient; - }, - - equals: function(color) { - return color == this || color && color._colorType === this._colorType - && this.gradient.equals(color.gradient) - && this._origin.equals(color._origin) - && this._destination.equals(color._destination); - }, - - transform: function(matrix) { - matrix._transformPoint(this._origin, this._origin, true); - matrix._transformPoint(this._destination, this._destination, true); - if (this._hilite) - matrix._transformPoint(this._hilite, this._hilite, true); - this._radius = this._destination.getDistance(this._origin); - } -}); - -var Gradient = this.Gradient = Base.extend({ - - beans: true, - - initialize: function(stops, type) { - this.setStops(stops || ['white', 'black']); - this.type = type || 'linear'; - }, - - clone: function() { - var stops = []; - for (var i = 0, l = this._stops.length; i < l; i++) - stops[i] = this._stops[i].clone(); - return new Gradient(stops, this.type); - }, - - getStops: function() { - return this._stops; - }, - - setStops: function(stops) { - if (stops.length < 2) - throw new Error( - 'Gradient stop list needs to contain at least two stops.'); - this._stops = GradientStop.readAll(stops); - for (var i = 0, l = this._stops.length; i < l; i++) { - var stop = this._stops[i]; - if (stop._defaultRamp) - stop.setRampPoint(i / (l - 1)); - } - }, - - equals: function(gradient) { - if (gradient.type != this.type) - return false; - if (this._stops.length == gradient._stops.length) { - for (var i = 0, l = this._stops.length; i < l; i++) { - if (!this._stops[i].equals(gradient._stops[i])) - return false; - } - return true; - } - return false; - } -}); - -var GradientStop = this.GradientStop = Base.extend({ - - beans: true, - - initialize: function(arg0, arg1) { - if (arg1 === undefined && Array.isArray(arg0)) { - this.setColor(arg0[0]); - this.setRampPoint(arg0[1]); - } else if (arg0.color) { - this.setColor(arg0.color); - this.setRampPoint(arg0.rampPoint); - } else { - this.setColor(arg0); - this.setRampPoint(arg1); - } - }, - - clone: function() { - return new GradientStop(this._color.clone(), this._rampPoint); - }, - - getRampPoint: function() { - return this._rampPoint; - }, - - setRampPoint: function(rampPoint) { - this._defaultRamp = rampPoint == null; - this._rampPoint = rampPoint || 0; - }, - - getColor: function() { - return this._color; - }, - - setColor: function(color) { - this._color = Color.read(arguments); - }, - - equals: function(stop) { - return stop == this || stop instanceof GradientStop - && this._color.equals(stop._color) - && this._rampPoint == stop._rampPoint; - } -}); - -var DomElement = new function() { - function cumulate(el, name, parent, positioned) { - var left = name + 'Left', - top = name + 'Top', - x = 0, - y = 0; - while (el && (!positioned - || !/^(relative|absolute)$/.test(el.style.position))) { - x += el[left] || 0; - y += el[top] || 0; - el = el[parent]; - } - return Point.create(x, y); - } - - return { - getOffset: function(el, positioned, scroll) { - var point = cumulate(el, 'offset', 'offsetParent', positioned); - return scroll - ? point.subtract(cumulate(el, 'scroll', 'parentNode')) - : point; - }, - - getSize: function(el) { - return Size.create(el.offsetWidth, el.offsetHeight); - }, - - getBounds: function(el, positioned, scroll) { - return new Rectangle(DomElement.getOffset(el, positioned, scroll), - DomElement.getSize(el)); - }, - - getWindowSize: function() { - var doc = document.getElementsByTagName( - document.compatMode === 'CSS1Compat' ? 'html' : 'body')[0]; - return Size.create( - window.innerWidth || doc.clientWidth, - window.innerHeight || doc.clientHeight - ); - }, - - isVisible: function(el) { - return new Rectangle([0, 0], DomElement.getWindowSize()) - .intersects(DomElement.getBounds(el, false, true)); - } - }; -}; - -var DomEvent = { - add: function(el, events) { - for (var type in events) { - var func = events[type]; - if (el.addEventListener) { - el.addEventListener(type, func, false); - } else if (el.attachEvent) { - el.attachEvent('on' + type, func.bound = function() { - func.call(el, window.event); - }); - } - } - }, - - remove: function(el, events) { - for (var type in events) { - var func = events[type]; - if (el.removeEventListener) { - el.removeEventListener(type, func, false); - } else if (el.detachEvent) { - el.detachEvent('on' + type, func.bound); - } - } - }, - - getPoint: function(event) { - var pos = event.targetTouches - ? event.targetTouches.length - ? event.targetTouches[0] - : event.changedTouches[0] - : event; - return Point.create( - pos.pageX || pos.clientX + document.documentElement.scrollLeft, - pos.pageY || pos.clientY + document.documentElement.scrollTop - ); - }, - - getElement: function(event) { - return event.target || event.srcElement; - }, - - getOffset: function(event) { - return DomEvent.getPoint(event).subtract( - DomElement.getOffset(DomEvent.getElement(event), true)); - }, - - preventDefault: function(event) { - if (event.preventDefault) { - event.preventDefault(); - } else { - event.returnValue = false; - } - }, - - stopPropagation: function(event) { - if (event.stopPropagation) { - event.stopPropagation(); - } else { - event.cancelBubble = true; - } - } -}; - -DomEvent.requestAnimationFrame = new function() { - var part = 'equestAnimationFrame', - request = window['r' + part] || window['webkitR' + part] - || window['mozR' + part] || window['oR' + part] - || window['msR' + part]; - if (request) { - request(function(time) { - if (time == undefined) - request = null; - }); - } - - var callbacks = [], - focused = true, - timer; - - DomEvent.add(window, { - focus: function() { - focused = true; - }, - blur: function() { - focused = false; - } - }); - - return function(callback, element) { - if (request) - return request(callback, element); - callbacks.push([callback, element]); - if (!timer) { - timer = window.setInterval(function() { - for (var i = callbacks.length - 1; i >= 0; i--) { - var entry = callbacks[i], - func = entry[0], - element = entry[1]; - if (!element || element.getAttribute('keepalive') == 'true' - || focused && DomElement.isVisible(element)) { - callbacks.splice(i, 1); - func(Date.now()); - } - } - }, 1000 / 60); - } - }; -}; - -var View = this.View = Base.extend({ - - beans: true, - - initialize: function(canvas) { - this._scope = paper; - this._index = this._scope.views.push(this) - 1; - var size; - if (canvas && canvas instanceof HTMLCanvasElement) { - this._canvas = canvas; - var offset = DomElement.getOffset(canvas); - if (canvas.attributes.resize) { - size = DomElement.getWindowSize().subtract(offset); - canvas.width = size.width; - canvas.height = size.height; - var that = this; - DomEvent.add(window, { - resize: function(event) { - if (!DomElement.getSize(canvas).equals([0, 0])) - offset = DomElement.getOffset(canvas); - that.setViewSize( - DomElement.getWindowSize().subtract(offset)); - if (that._onFrameCallback) { - that._onFrameCallback(0, true); - } else { - that.draw(); - } - } - }); - } else { - size = Size.create(canvas.offsetWidth, canvas.offsetHeight); - } - if (canvas.attributes.stats) { - this._stats = new Stats(); - var element = this._stats.domElement, - style = element.style; - style.position = 'absolute'; - style.left = offset.x + 'px'; - style.top = offset.y + 'px'; - document.body.appendChild(element); - } - } else { - size = Size.read(arguments, 1); - if (size.isZero()) - size = new Size(1024, 768); - this._canvas = CanvasProvider.getCanvas(size); - } - this._viewBounds = LinkedRectangle.create(this, 'setViewBounds', - 0, 0, size.width, size.height); - this._context = this._canvas.getContext('2d'); - this._matrix = new Matrix(); - this._zoom = 1; - this._events = this._createEvents(); - DomEvent.add(this._canvas, this._events); - if (!View.focused) - View.focused = this; - }, - - getCanvas: function() { - return this._canvas; - }, - - getViewBounds: function() { - return this._viewBounds; - }, - - setViewBounds: function(bounds) { - bounds = Rectangle.read(arguments); - var size = bounds.getSize(), - delta = size.subtract(this._viewBounds.getSize()); - this._canvas.width = size.width; - this._canvas.height = size.height; - if (this.onResize) { - this.onResize({ - size: size, - delta: delta - }); - } - this._bounds = null; - }, - - getViewSize: function() { - return this._viewBounds.getSize(); - }, - - setViewSize: function(size) { - this._viewBounds.setSize.apply(this._viewBounds, arguments); - }, - - getBounds: function() { - if (!this._bounds) - this._bounds = this._matrix._transformBounds(this._viewBounds); - return this._bounds; - }, - - getSize: function() { - return this.getBounds().getSize(); - }, - - getCenter: function() { - return this.getBounds().getCenter(); - }, - - setCenter: function(center) { - this.scrollBy(Point.read(arguments).subtract(this.getCenter())); - }, - - getZoom: function() { - return this._zoom; - }, - - setZoom: function(zoom) { - this._transform(new Matrix().scale(zoom / this._zoom, this.getCenter())); - this._zoom = zoom; - }, - - scrollBy: function(point) { - this._transform(new Matrix().translate(Point.read(arguments).negate())); - }, - - _transform: function(matrix, flags) { - this._matrix.preConcatenate(matrix); - this._bounds = null; - this._inverse = null; - }, - - draw: function() { - if (this._stats) - this._stats.update(); - var ctx =this._context, - bounds = this._viewBounds; - ctx.clearRect(bounds._x, bounds._y, - bounds._width + 1, bounds._height + 1); - - ctx.save(); - this._matrix.applyToContext(ctx); - this._scope.project.draw(ctx); - ctx.restore(); - }, - - activate: function() { - this._scope.view = this; - }, - - remove: function() { - var res = Base.splice(this._scope.views, null, this._index, 1); - DomEvent.remove(this._canvas, this._events); - this._scope = this._canvas = this._events = this._onFrame = null; - return !!res.length; - }, - - artworkToView: function(point) { - return this._matrix._transformPoint(Point.read(arguments)); - }, - - viewToArtwork: function(point) { - return this._getInverse()._transformPoint(Point.read(arguments)); - }, - - _getInverse: function() { - if (!this._inverse) - this._inverse = this._matrix.createInverse(); - return this._inverse; - }, - - getOnFrame: function() { - return this._onFrame; - }, - - setOnFrame: function(onFrame) { - this._onFrame = onFrame; - if (!onFrame) { - delete this._onFrameCallback; - return; - } - var that = this, - requested = false, - before, - time = 0, - count = 0; - this._onFrameCallback = function(param, dontRequest) { - requested = false; - if (!that._onFrame) - return; - paper = that._scope; - requested = true; - if (!dontRequest) { - DomEvent.requestAnimationFrame(that._onFrameCallback, - that._canvas); - } - var now = Date.now() / 1000, - delta = before ? now - before : 0; - that._onFrame({ - delta: delta, - time: time += delta, - count: count++ - }); - before = now; - that.draw(); - }; - if (!requested) - this._onFrameCallback(); - }, - - onResize: null, - - _createEvents: function() { - var that = this, - tool, - timer, - curPoint, - dragging = false; - - function viewToArtwork(event) { - return that.viewToArtwork(DomEvent.getOffset(event)); - } - - function mousedown(event) { - View.focused = that; - if (!(tool = that._scope.tool)) - return; - curPoint = viewToArtwork(event); - tool.onHandleEvent('mousedown', curPoint, event); - if (tool.onMouseDown) - that.draw(); - if (tool.eventInterval != null) - timer = setInterval(mousemove, tool.eventInterval); - dragging = true; - } - - function mousemove(event) { - if (!(tool = that._scope.tool)) - return; - if (event && event.targetTouches) - DomEvent.preventDefault(event); - var point = event && viewToArtwork(event); - var onlyMove = !!(!tool.onMouseDrag && tool.onMouseMove); - if (dragging && !onlyMove) { - curPoint = point || curPoint; - if (curPoint) - tool.onHandleEvent('mousedrag', curPoint, event); - if (tool.onMouseDrag) - that.draw(); - } else if (!dragging || onlyMove) { - tool.onHandleEvent('mousemove', point, event); - if (tool.onMouseMove) - that.draw(); - } - } - - function mouseup(event) { - if (!dragging) - return; - dragging = false; - curPoint = null; - if (tool) { - if (tool.eventInterval != null) - timer = clearInterval(timer); - tool.onHandleEvent('mouseup', viewToArtwork(event), event); - if (tool.onMouseUp) - that.draw(); - } - } - - return { - mousedown: mousedown, - mousemove: mousemove, - mouseup: mouseup, - touchstart: mousedown, - touchmove: mousemove, - touchend: mouseup - }; - } -}); - -var Event = this.Event = Base.extend({ - beans: true, - - initialize: function(event) { - this.event = event; - }, - - preventDefault: function() { - DomEvent.preventDefault(this.event); - }, - - stopPropagation: function() { - DomEvent.stopPropagation(this.event); - }, - - stop: function() { - this.stopPropagation(); - this.preventDefault(); - }, - - getModifiers: function() { - return Key.modifiers; - } -}); - -var KeyEvent = this.KeyEvent = Event.extend(new function() { - return { - - beans: true, - - initialize: function(down, key, character, event) { - this.base(event); - this.type = down ? 'keydown' : 'keyup'; - this.key = key; - this.character = character; - }, - - toString: function() { - return '{ type: ' + this.type - + ', key: ' + this.key - + ', character: ' + this.character - + ', modifiers: ' + this.getModifiers() - + ' }'; - } - }; -}); - -var Key = this.Key = new function() { - - var keys = { - 8: 'backspace', - 13: 'enter', - 16: 'shift', - 17: 'control', - 18: 'option', - 19: 'pause', - 20: 'caps-lock', - 27: 'escape', - 32: 'space', - 35: 'end', - 36: 'home', - 37: 'left', - 38: 'up', - 39: 'right', - 40: 'down', - 46: 'delete', - 91: 'command' - }, - - modifiers = { - shift: false, - control: false, - option: false, - command: false, - capsLock: false, - - toString: function() { - return Base.formatObject(this); - } - }, - - charCodeMap = {}, - keyMap = {}, - downCode; - - function handleKey(down, keyCode, charCode, event) { - var character = String.fromCharCode(charCode), - key = keys[keyCode] || character.toLowerCase(), - handler = down ? 'onKeyDown' : 'onKeyUp', - scope = View.focused && View.focused._scope, - tool = scope && scope.tool; - keyMap[key] = down; - if (tool && tool[handler]) { - var keyEvent = new KeyEvent(down, key, character, event); - if (tool[handler](keyEvent) === false) - keyEvent.preventDefault(); - } - } - - DomEvent.add(document, { - keydown: function(event) { - var code = event.which || event.keyCode; - var key = keys[code], name; - if (key) { - if (modifiers[name = Base.camelize(key)] !== undefined) { - modifiers[name] = true; - } else { - charCodeMap[code] = 0; - handleKey(true, code, null, event); - } - } else { - downCode = code; - } - }, - - keypress: function(event) { - if (downCode != null) { - var code = event.which || event.keyCode; - charCodeMap[downCode] = code; - handleKey(true, downCode, code, event); - downCode = null; - } - }, - - keyup: function(event) { - var code = event.which || event.keyCode, - key = keys[code], name; - if (key && modifiers[name = Base.camelize(key)] !== undefined) { - modifiers[name] = false; - } else if (charCodeMap[code] != null) { - handleKey(false, code, charCodeMap[code], event); - delete charCodeMap[code]; - } - } - }); - - return { - - modifiers: modifiers, - - isDown: function(key) { - return !!keyMap[key]; - } - }; -}; - -var ToolEvent = this.ToolEvent = Base.extend({ - - beans: true, - - initialize: function(tool, type, event) { - this.tool = tool; - this.type = type; - this.event = event; - }, - - _choosePoint: function(point, toolPoint) { - return point ? point : toolPoint ? toolPoint.clone() : null; - }, - - getPoint: function() { - return this._choosePoint(this._point, this.tool._point); - }, - - setPoint: function(point) { - this._point = point; - }, - - getLastPoint: function() { - return this._choosePoint(this._lastPoint, this.tool._lastPoint); - }, - - setLastPoint: function(lastPoint) { - this._lastPoint = lastPoint; - }, - - getDownPoint: function() { - return this._choosePoint(this._downPoint, this.tool._downPoint); - }, - - setDownPoint: function(downPoint) { - this._downPoint = downPoint; - }, - - getMiddlePoint: function() { - if (!this._middlePoint && this.tool._lastPoint) { - return this.tool._point.add(this.tool._lastPoint).divide(2); - } - return this.middlePoint; - }, - - setMiddlePoint: function(middlePoint) { - this._middlePoint = middlePoint; - }, - - getDelta: function() { - return !this._delta && this.tool._lastPoint - ? this.tool._point.subtract(this.tool._lastPoint) - : this._delta; - }, - - setDelta: function(delta) { - this._delta = delta; - }, - - getCount: function() { - return /^mouse(down|up)$/.test(this.type) - ? this.tool._downCount - : this.tool._count; - }, - - setCount: function(count) { - this.tool[/^mouse(down|up)$/.test(this.type) ? 'downCount' : 'count'] - = count; - }, - - getModifiers: function() { - return Key.modifiers; - }, - - toString: function() { - return '{ type: ' + this.type - + ', point: ' + this.getPoint() - + ', count: ' + this.getCount() - + ', modifiers: ' + this.getModifiers() - + ' }'; - } -}); - -var Tool = this.Tool = Base.extend({ - - beans: true, - - initialize: function(handlers, scope) { - this._scope = scope; - this._firstMove = true; - this._count = 0; - this._downCount = 0; - for (var i in handlers) - this[i] = handlers[i]; - }, - - eventInterval: null, - - getMinDistance: function() { - return this._minDistance; - }, - - setMinDistance: function(minDistance) { - this._minDistance = minDistance; - if (this._minDistance != null && this._maxDistance != null - && this._minDistance > this._maxDistance) { - this._maxDistance = this._minDistance; - } - }, - - getMaxDistance: function() { - return this._maxDistance; - }, - - setMaxDistance: function(maxDistance) { - this._maxDistance = maxDistance; - if (this._minDistance != null && this._maxDistance != null - && this._maxDistance < this._minDistance) { - this._minDistance = maxDistance; - } - }, - - getFixedDistance: function() { - return this._minDistance == this._maxDistance - ? this._minDistance : null; - }, - - setFixedDistance: function(distance) { - this._minDistance = distance; - this._maxDistance = distance; - }, - - updateEvent: function(type, pt, minDistance, maxDistance, start, - needsChange, matchMaxDistance) { - if (!start) { - if (minDistance != null || maxDistance != null) { - var minDist = minDistance != null ? minDistance : 0; - var vector = pt.subtract(this._point); - var distance = vector.getLength(); - if (distance < minDist) - return false; - var maxDist = maxDistance != null ? maxDistance : 0; - if (maxDist != 0) { - if (distance > maxDist) { - pt = this._point.add(vector.normalize(maxDist)); - } else if (matchMaxDistance) { - return false; - } - } - } - if (needsChange && pt.equals(this._point)) - return false; - } - this._lastPoint = start && type == 'mousemove' ? pt : this._point; - this._point = pt; - switch (type) { - case 'mousedown': - this._lastPoint = this._downPoint; - this._downPoint = this._point; - this._downCount++; - break; - case 'mouseup': - this._lastPoint = this._downPoint; - break; - } - this._count = start ? 0 : this._count + 1; - return true; - }, - - onHandleEvent: function(type, pt, event) { - paper = this._scope; - switch (type) { - case 'mousedown': - this.updateEvent(type, pt, null, null, true, false, false); - if (this.onMouseDown) - this.onMouseDown(new ToolEvent(this, type, event)); - break; - case 'mousedrag': - var needsChange = false, - matchMaxDistance = false; - while (this.updateEvent(type, pt, this.minDistance, - this.maxDistance, false, needsChange, matchMaxDistance)) { - if (this.onMouseDrag) - this.onMouseDrag(new ToolEvent(this, type, event)); - needsChange = true; - matchMaxDistance = true; - } - break; - case 'mouseup': - if ((this._point.x != pt.x || this._point.y != pt.y) - && this.updateEvent('mousedrag', pt, this.minDistance, - this.maxDistance, false, false, false)) { - if (this.onMouseDrag) - this.onMouseDrag(new ToolEvent(this, type, event)); - } - this.updateEvent(type, pt, null, this.maxDistance, false, - false, false); - if (this.onMouseUp) - this.onMouseUp(new ToolEvent(this, type, event)); - this.updateEvent(type, pt, null, null, true, false, false); - this._firstMove = true; - break; - case 'mousemove': - while (this.updateEvent(type, pt, this.minDistance, - this.maxDistance, this._firstMove, true, false)) { - if (this.onMouseMove) - this.onMouseMove(new ToolEvent(this, type, event)); - this._firstMove = false; - } - break; - } - } -}); - -var CanvasProvider = { - canvases: [], - getCanvas: function(size) { - if (this.canvases.length) { - var canvas = this.canvases.pop(); - if ((canvas.width != size.width) - || (canvas.height != size.height)) { - canvas.width = size.width; - canvas.height = size.height; - } else { - canvas.getContext('2d').clearRect(0, 0, - size.width + 1, size.height + 1); - } - return canvas; - } else { - var canvas = document.createElement('canvas'); - canvas.width = size.width; - canvas.height = size.height; - return canvas; - } - }, - - returnCanvas: function(canvas) { - this.canvases.push(canvas); - } -}; - -var Numerical = new function() { - - var abscissas = [ - [ 0.5773502691896257645091488], - [0,0.7745966692414833770358531], - [ 0.3399810435848562648026658,0.8611363115940525752239465], - [0,0.5384693101056830910363144,0.9061798459386639927976269], - [ 0.2386191860831969086305017,0.6612093864662645136613996,0.9324695142031520278123016], - [0,0.4058451513773971669066064,0.7415311855993944398638648,0.9491079123427585245261897], - [ 0.1834346424956498049394761,0.5255324099163289858177390,0.7966664774136267395915539,0.9602898564975362316835609], - [0,0.3242534234038089290385380,0.6133714327005903973087020,0.8360311073266357942994298,0.9681602395076260898355762], - [ 0.1488743389816312108848260,0.4333953941292471907992659,0.6794095682990244062343274,0.8650633666889845107320967,0.9739065285171717200779640], - [0,0.2695431559523449723315320,0.5190961292068118159257257,0.7301520055740493240934163,0.8870625997680952990751578,0.9782286581460569928039380], - [ 0.1252334085114689154724414,0.3678314989981801937526915,0.5873179542866174472967024,0.7699026741943046870368938,0.9041172563704748566784659,0.9815606342467192506905491], - [0,0.2304583159551347940655281,0.4484927510364468528779129,0.6423493394403402206439846,0.8015780907333099127942065,0.9175983992229779652065478,0.9841830547185881494728294], - [ 0.1080549487073436620662447,0.3191123689278897604356718,0.5152486363581540919652907,0.6872929048116854701480198,0.8272013150697649931897947,0.9284348836635735173363911,0.9862838086968123388415973], - [0,0.2011940939974345223006283,0.3941513470775633698972074,0.5709721726085388475372267,0.7244177313601700474161861,0.8482065834104272162006483,0.9372733924007059043077589,0.9879925180204854284895657], - [ 0.0950125098376374401853193,0.2816035507792589132304605,0.4580167776572273863424194,0.6178762444026437484466718,0.7554044083550030338951012,0.8656312023878317438804679,0.9445750230732325760779884,0.9894009349916499325961542] - ], - - weights = [ - [1], - [0.8888888888888888888888889,0.5555555555555555555555556], - [0.6521451548625461426269361,0.3478548451374538573730639], - [0.5688888888888888888888889,0.4786286704993664680412915,0.2369268850561890875142640], - [0.4679139345726910473898703,0.3607615730481386075698335,0.1713244923791703450402961], - [0.4179591836734693877551020,0.3818300505051189449503698,0.2797053914892766679014678,0.1294849661688696932706114], - [0.3626837833783619829651504,0.3137066458778872873379622,0.2223810344533744705443560,0.1012285362903762591525314], - [0.3302393550012597631645251,0.3123470770400028400686304,0.2606106964029354623187429,0.1806481606948574040584720,0.0812743883615744119718922], - [0.2955242247147528701738930,0.2692667193099963550912269,0.2190863625159820439955349,0.1494513491505805931457763,0.0666713443086881375935688], - [0.2729250867779006307144835,0.2628045445102466621806889,0.2331937645919904799185237,0.1862902109277342514260976,0.1255803694649046246346943,0.0556685671161736664827537], - [0.2491470458134027850005624,0.2334925365383548087608499,0.2031674267230659217490645,0.1600783285433462263346525,0.1069393259953184309602547,0.0471753363865118271946160], - [0.2325515532308739101945895,0.2262831802628972384120902,0.2078160475368885023125232,0.1781459807619457382800467,0.1388735102197872384636018,0.0921214998377284479144218,0.0404840047653158795200216], - [0.2152638534631577901958764,0.2051984637212956039659241,0.1855383974779378137417166,0.1572031671581935345696019,0.1215185706879031846894148,0.0801580871597602098056333,0.0351194603317518630318329], - [0.2025782419255612728806202,0.1984314853271115764561183,0.1861610000155622110268006,0.1662692058169939335532009,0.1395706779261543144478048,0.1071592204671719350118695,0.0703660474881081247092674,0.0307532419961172683546284], - [0.1894506104550684962853967,0.1826034150449235888667637,0.1691565193950025381893121,0.1495959888165767320815017,0.1246289712555338720524763,0.0951585116824927848099251,0.0622535239386478928628438,0.0271524594117540948517806] - ]; - - return { - TOLERANCE: 10e-6, - - integrate: function(f, a, b, n) { - var x = abscissas[n - 2], - w = weights[n - 2], - A = 0.5 * (b - a), - B = A + a, - i = 0, - m = (n + 1) >> 1, - sum = n & 1 ? w[i++] * f(B) : 0; - while (i < m) { - var Ax = A * x[i]; - sum += w[i++] * (f(B + Ax) + f(B - Ax)); - } - return A * sum; - }, - - findRoot: function(f, df, x, a, b, n, tol) { - for (var i = 0; i < n; i++) { - var fx = f(x), - dx = fx / df(x); - if (Math.abs(dx) < tol) - return x; - var nx = x - dx; - if (fx > 0) { - b = x; - x = nx <= a ? 0.5 * (a + b) : nx; - } else { - a = x; - x = nx >= b ? 0.5 * (a + b) : nx; - } - } - } - }; -}; - -var BlendMode = { - process: function(blendMode, srcContext, dstContext, alpha, offset) { - var srcCanvas = srcContext.canvas, - dstData = dstContext.getImageData(offset.x, offset.y, - srcCanvas.width, srcCanvas.height), - dst = dstData.data, - src = srcContext.getImageData(0, 0, - srcCanvas.width, srcCanvas.height).data, - min = Math.min, - max = Math.max, - abs = Math.abs, - sr, sg, sb, sa, - br, bg, bb, ba, - dr, dg, db; - - function getLum(r, g, b) { - return 0.2989 * r + 0.587 * g + 0.114 * b; - } - - function setLum(r, g, b, l) { - var d = l - getLum(r, g, b); - dr = r + d; - dg = g + d; - db = b + d; - var l = getLum(dr, dg, db), - mn = min(dr, dg, db), - mx = max(dr, dg, db); - if (mn < 0) { - var lmn = l - mn; - dr = l + (dr - l) * l / lmn; - dg = l + (dg - l) * l / lmn; - db = l + (db - l) * l / lmn; - } - if (mx > 255) { - var ln = 255 - l, mxl = mx - l; - dr = l + (dr - l) * ln / mxl; - dg = l + (dg - l) * ln / mxl; - db = l + (db - l) * ln / mxl; - } - } - - function getSat(r, g, b) { - return max(r, g, b) - min(r, g, b); - } - - function setSat(r, g, b, s) { - var col = [r, g, b], - mx = max(r, g, b), - mn = min(r, g, b), - md; - mn = mn == r ? 0 : mn == g ? 1 : 2; - mx = mx == r ? 0 : mx == g ? 1 : 2; - md = min(mn, mx) == 0 ? max(mn, mx) == 1 ? 2 : 1 : 0; - if (col[mx] > col[mn]) { - col[md] = (col[md] - col[mn]) * s / (col[mx] - col[mn]); - col[mx] = s; - } else { - col[md] = col[mx] = 0; - } - col[mn] = 0; - dr = col[0]; - dg = col[1]; - db = col[2]; - } - - var modes = { - multiply: function() { - dr = br * sr / 255; - dg = bg * sg / 255; - db = bb * sb / 255; - }, - - screen: function() { - dr = 255 - (255 - br) * (255 - sr) / 255; - dg = 255 - (255 - bg) * (255 - sg) / 255; - db = 255 - (255 - bb) * (255 - sb) / 255; - }, - - overlay: function() { - dr = br < 128 ? 2 * br * sr / 255 : 255 - 2 * (255 - br) * (255 - sr) / 255; - dg = bg < 128 ? 2 * bg * sg / 255 : 255 - 2 * (255 - bg) * (255 - sg) / 255; - db = bb < 128 ? 2 * bb * sb / 255 : 255 - 2 * (255 - bb) * (255 - sb) / 255; - }, - - 'soft-light': function() { - var t = sr * br / 255; - dr = t + br * (255 - (255 - br) * (255 - sr) / 255 - t) / 255; - t = sg * bg / 255; - dg = t + bg * (255 - (255 - bg) * (255 - sg) / 255 - t) / 255; - t = sb * bb / 255; - db = t + bb * (255 - (255 - bb) * (255 - sb) / 255 - t) / 255; - }, - - 'hard-light': function() { - dr = sr < 128 ? 2 * sr * br / 255 : 255 - 2 * (255 - sr) * (255 - br) / 255; - dg = sg < 128 ? 2 * sg * bg / 255 : 255 - 2 * (255 - sg) * (255 - bg) / 255; - db = sb < 128 ? 2 * sb * bb / 255 : 255 - 2 * (255 - sb) * (255 - bb) / 255; - }, - - 'color-dodge': function() { - dr = sr == 255 ? sr : min(255, br * 255 / (255 - sr)); - dg = sg == 255 ? sg : min(255, bg * 255 / (255 - sg)); - db = sb == 255 ? sb : min(255, bb * 255 / (255 - sb)); - }, - - 'color-burn': function() { - dr = sr == 0 ? 0 : max(255 - ((255 - br) * 255) / sr, 0); - dg = sg == 0 ? 0 : max(255 - ((255 - bg) * 255) / sg, 0); - db = sb == 0 ? 0 : max(255 - ((255 - bb) * 255) / sb, 0); - }, - - darken: function() { - dr = br < sr ? br : sr; - dg = bg < sg ? bg : sg; - db = bb < sb ? bb : sb; - }, - - lighten: function() { - dr = br > sr ? br : sr; - dg = bg > sg ? bg : sg; - db = bb > sb ? bb : sb; - }, - - difference: function() { - dr = br - sr; - if (dr < 0) - dr = -dr; - dg = bg - sg; - if (dg < 0) - dg = -dg; - db = bb - sb; - if (db < 0) - db = -db; - }, - - exclusion: function() { - dr = br + sr * (255 - br - br) / 255; - dg = bg + sg * (255 - bg - bg) / 255; - db = bb + sb * (255 - bb - bb) / 255; - }, - - hue: function() { - setSat(sr, sg, sb, getSat(br, bg, bb)); - setLum(dr, dg, db, getLum(br, bg, bb)); - }, - - saturation: function() { - setSat(br, bg, bb, getSat(sr, sg, sb)); - setLum(dr, dg, db, getLum(br, bg, bb)); - }, - - luminosity: function() { - setLum(br, bg, bb, getLum(sr, sg, sb)); - }, - - color: function() { - setLum(sr, sg, sb, getLum(br, bg, bb)); - }, - - add: function() { - dr = min(br + sr, 255); - dg = min(bg + sg, 255); - db = min(bb + sb, 255); - }, - - subtract: function() { - dr = max(br - sr, 0); - dg = max(bg - sg, 0); - db = max(bb - sb, 0); - }, - - average: function() { - dr = (br + sr) / 2; - dg = (bg + sg) / 2; - db = (bb + sb) / 2; - }, - - negation: function() { - dr = 255 - abs(255 - sr - br); - dg = 255 - abs(255 - sg - bg); - db = 255 - abs(255 - sb - bb); - } - }; - - var process = modes[blendMode]; - if (!process) - return; - - for (var i = 0, l = dst.length; i < l; i += 4) { - sr = src[i]; - br = dst[i]; - sg = src[i + 1]; - bg = dst[i + 1]; - sb = src[i + 2]; - bb = dst[i + 2]; - sa = src[i + 3]; - ba = dst[i + 3]; - process(); - var a1 = sa * alpha / 255, - a2 = 1 - a1; - dst[i] = a1 * dr + a2 * br; - dst[i + 1] = a1 * dg + a2 * bg; - dst[i + 2] = a1 * db + a2 * bb; - dst[i + 3] = sa * alpha + a2 * ba; - } - dstContext.putImageData(dstData, offset.x, offset.y); - } -}; - -var PaperScript = this.PaperScript = new function() { -var parse_js=new function(){function S(a,b,c){var d=[];for(var e=0;e=0;)if(b[c]===a)return!0;return!1}function N(a){return a.split("")}function M(a,b){return Array.prototype.slice.call(a,b==null?0:b)}function L(a){var b={};for(var c=0;c0;++b)arguments[b]();return a}function J(a){var b=M(arguments,1);return function(){return a.apply(this,b.concat(M(arguments)))}}function I(a,b){function y(a){var b=a[0],c=p[b];if(!c)throw new Error("Can't find generator for \""+b+'"');x.push(a);var d=c.apply(b,a.slice(1));x.pop();return d}function w(a){var b=a[0],c=a[1];c!=null&&(b=h([b,"=",y(c)]));return b}function v(a){if(!a)return";";if(a.length==0)return"{}";return"{"+d+g(function(){return t(a).join(d)})+d+f("}")}function u(a){var c=a.length;if(c==0)return"{}";return"{"+d+S(a,function(a,e){var i=a[1].length>0,j=g(function(){return f(a[0]?h(["case",y(a[0])+":"]):"default:")},.5)+(i?d+g(function(){return t(a[1]).join(d)}):"");!b&&i&&e0?"("+j(S(b,y))+")":"";return h(["new",k(a,"seq","binary","conditional","assign",function(a){var b=E(),c={};try{b.with_walkers({call:function(){throw c},"function":function(){return this}},function(){b.walk(a)})}catch(d){if(d===c)return!0;throw d}})+b])},"switch":function(a,b){return h(["switch","("+y(a)+")",u(b)])},"break":function(a){var b="break";a!=null&&(b+=" "+s(a));return b+";"},"continue":function(a){var b="continue";a!=null&&(b+=" "+s(a));return b+";"},conditional:function(a,b,c){return h([k(a,"assign","seq","conditional"),"?",k(b,"seq"),":",k(c,"seq")])},assign:function(a,b,c){a&&a!==!0?a+="=":a="=";return h([y(b),a,k(c,"seq")])},dot:function(a){var b=y(a),c=1;a[0]=="num"?b+=".":m(a)&&(b="("+b+")");while(cz[b[1]])d="("+d+")";if(O(c[0],["assign","conditional","seq"])||c[0]=="binary"&&z[a]>=z[c[1]]&&(c[1]!=a||!O(a,["&&","||","*"])))e="("+e+")";return h([d,a,e])},"unary-prefix":function(a,b){var c=y(b);b[0]=="num"||b[0]=="unary-prefix"&&!R(i,a+b[1])||!m(b)||(c="("+c+")");return a+(n(a.charAt(0))?" ":"")+c},"unary-postfix":function(a,b){var c=y(b);b[0]=="num"||b[0]=="unary-postfix"&&!R(i,a+b[1])||!m(b)||(c="("+c+")");return c+a},sub:function(a,b){var c=y(a);m(a)&&(c="("+c+")");return c+"["+y(b)+"]"},object:function(a){if(a.length==0)return"{}";return"{"+d+g(function(){return S(a,function(a){if(a.length==3)return f(r(a[0],a[1][2],a[1][3],a[2]));var c=a[0],d=y(a[1]);b&&b.quote_keys?c=H(c):(typeof c=="number"||!b&&+c+""==c)&&parseFloat(c)>=0?c=o(+c):Q(c)||(c=H(c));return f(h(b&&b.space_colon?[c,":",d]:[c+":",d]))}).join(","+d)})+d+f("}")},regexp:function(a,b){return"/"+a+"/"+b},array:function(a){if(a.length==0)return"[]";return h(["[",j(S(a,function(a){if(!b&&a[0]=="atom"&&a[1]=="undefined")return"";return k(a,"seq")})),"]"])},stat:function(a){return y(a).replace(/;*\s*$/,";")},seq:function(){return j(S(M(arguments),y))},label:function(a,b){return h([s(a),":",y(b)])},"with":function(a,b){return h(["with","("+y(a)+")",y(b)])},atom:function(a){return s(a)}},x=[];return y(a)}function H(a){var b=0,c=0;a=a.replace(/[\\\b\f\n\r\t\x22\x27]/g,function(a){switch(a){case"\\":return"\\\\";case"\b":return"\\b";case"\f":return"\\f";case"\n":return"\\n";case"\r":return"\\r";case"\t":return"\\t";case'"':++b;return'"';case"'":++c;return"'"}return a});return b>c?"'"+a.replace(/\x27/g,"\\'")+"'":'"'+a.replace(/\x22/g,'\\"')+'"'}function F(a){return!a||a[0]=="block"&&(!a[1]||a[1].length==0)}function E(){function f(a,b){var d={},e;for(e in a)R(a,e)&&(d[e]=c[e],c[e]=a[e]);var f=b();for(e in d)R(d,e)&&(d[e]?c[e]=d[e]:delete c[e]);return f}function e(a){if(a==null)return null;try{d.push(a);var e=a[0],f=c[e];if(f){var g=f.apply(a,a.slice(1));if(g!=null)return g}f=b[e];return f.apply(a,a.slice(1))}finally{d.pop()}}function a(a){return[this[0],S(a,function(a){var b=[a[0]];a.length>1&&(b[1]=e(a[1]));return b})]}var b={string:function(a){return[this[0],a]},num:function(a){return[this[0],a]},name:function(a){return[this[0],a]},toplevel:function(a){return[this[0],S(a,e)]},block:function(a){var b=[this[0]];a!=null&&b.push(S(a,e));return b},"var":a,"const":a,"try":function(a,b,c){return[this[0],S(a,e),b!=null?[b[0],S(b[1],e)]:null,c!=null?S(c,e):null]},"throw":function(a){return[this[0],e(a)]},"new":function(a,b){return[this[0],e(a),S(b,e)]},"switch":function(a,b){return[this[0],e(a),S(b,function(a){return[a[0]?e(a[0]):null,S(a[1],e)]})]},"break":function(a){return[this[0],a]},"continue":function(a){return[this[0],a]},conditional:function(a,b,c){return[this[0],e(a),e(b),e(c)]},assign:function(a,b,c){return[this[0],a,e(b),e(c)]},dot:function(a){return[this[0],e(a)].concat(M(arguments,1))},call:function(a,b){return[this[0],e(a),S(b,e)]},"function":function(a,b,c){return[this[0],a,b.slice(),S(c,e)]},defun:function(a,b,c){return[this[0],a,b.slice(),S(c,e)]},"if":function(a,b,c){return[this[0],e(a),e(b),e(c)]},"for":function(a,b,c,d){return[this[0],e(a),e(b),e(c),e(d)]},"for-in":function(a,b,c,d){return[this[0],a,b,e(c),e(d)]},"while":function(a,b){return[this[0],e(a),e(b)]},"do":function(a,b){return[this[0],e(a),e(b)]},"return":function(a){return[this[0],e(a)]},binary:function(a,b,c){return[this[0],a,e(b),e(c)]},"unary-prefix":function(a,b){return[this[0],a,e(b)]},"unary-postfix":function(a,b){return[this[0],a,e(b)]},sub:function(a,b){return[this[0],e(a),e(b)]},object:function(a){return[this[0],S(a,function(a){return a.length==2?[a[0],e(a[1])]:[a[0],e(a[1]),a[2]]})]},regexp:function(a,b){return[this[0],a,b]},array:function(a){return[this[0],S(a,e)]},stat:function(a){return[this[0],e(a)]},seq:function(){return[this[0]].concat(S(M(arguments),e))},label:function(a,b){return[this[0],a,e(b)]},"with":function(a,b){return[this[0],e(a),e(b)]},atom:function(a){return[this[0],a]}},c={},d=[];return{walk:e,with_walkers:f,parent:function(){return d[d.length-2]},stack:function(){return d}}}function D(a,b,c){function bj(a){try{++d.in_loop;return a()}finally{--d.in_loop}}function bi(a){arguments.length==0&&(a=!0);var b=bh();if(a&&e("punc",",")){g();return p("seq",b,bi())}return b}function bh(){var a=bf(),b=d.token.value;if(e("operator")&&R(y,b)){if(bg(a)){g();return p("assign",y[b],a,bh())}i("Invalid assignment")}return a}function bg(a){switch(a[0]){case"dot":case"sub":return!0;case"name":return a[1]!="this"}}function bf(){var a=be();if(e("operator","?")){g();var b=bi(!1);m(":");return p("conditional",a,b,bi(!1))}return a}function be(){return bd(X(!0),0)}function bd(a,b){var c=e("operator")?d.token.value:null,f=c!=null?z[c]:null;if(f!=null&&f>b){g();var h=bd(X(!0),f);return bd(p("binary",c,a,h),b)}return a}function bc(a,b,c){(b=="++"||b=="--")&&!bg(c)&&i("Invalid use of "+b+" operator");return p(a,b,c)}function bb(a,b){if(e("punc",".")){g();return bb(p("dot",a,ba()),b)}if(e("punc","[")){g();return bb(p("sub",a,K(bi,J(m,"]"))),b)}if(b&&e("punc","(")){g();return bb(p("call",a,Y(")")),!0)}if(b&&e("operator")&&R(x,d.token.value))return K(J(bc,"unary-postfix",d.token.value,a),g);return a}function ba(){switch(d.token.type){case"name":case"operator":case"keyword":case"atom":return K(d.token.value,g);default:k()}}function _(){switch(d.token.type){case"num":case"string":return K(d.token.value,g)}return ba()}function $(){var a=!0,c=[];while(!e("punc","}")){a?a=!1:m(",");if(!b&&e("punc","}"))break;var f=d.token.type,h=_();f!="name"||h!="get"&&h!="set"||!!e("punc",":")?(m(":"),c.push([h,bi(!1)])):c.push([ba(),I(!1),h])}g();return p("object",c)}function Z(){return p("array",Y("]",!b,!0))}function Y(a,b,c){var d=!0,f=[];while(!e("punc",a)){d?d=!1:m(",");if(b&&e("punc",a))break;e("punc",",")&&c?f.push(["atom","undefined"]):f.push(bi(!1))}g();return f}function X(a){if(e("operator","new")){g();return W()}if(e("operator")&&R(w,d.token.value))return bc("unary-prefix",K(d.token.value,g),X(a));if(e("punc")){switch(d.token.value){case"(":g();return bb(K(bi,J(m,")")),a);case"[":g();return bb(Z(),a);case"{":g();return bb($(),a)}k()}if(e("keyword","function")){g();return bb(I(!1),a)}if(R(B,d.token.type)){var b=d.token.type=="regexp"?p("regexp",d.token.value[0],d.token.value[1]):p(d.token.type,d.token.value);return bb(K(b,g),a)}k()}function W(){var a=X(!1),b;e("punc","(")?(g(),b=Y(")")):b=[];return bb(p("new",a,b),!0)}function V(){return p("const",T())}function U(){return p("var",T())}function T(){var a=[];for(;;){e("name")||k();var b=d.token.value;g(),e("operator","=")?(g(),a.push([b,bi(!1)])):a.push([b]);if(!e("punc",","))break;g()}return a}function S(){var a=P(),b,c;if(e("keyword","catch")){g(),m("("),e("name")||i("Name expected");var f=d.token.value;g(),m(")"),b=[f,P()]}e("keyword","finally")&&(g(),c=P()),!b&&!c&&i("Missing catch/finally blocks");return p("try",a,b,c)}function P(){m("{");var a=[];while(!e("punc","}"))e("eof")&&k(),a.push(u());g();return a}function N(){var a=q(),b=u(),c;e("keyword","else")&&(g(),c=u());return p("if",a,b,c)}function L(a){var b=e("name")?K(d.token.value,g):null;a&&!b&&k(),m("(");return p(a?"defun":"function",b,function(a,b){while(!e("punc",")"))a?a=!1:m(","),e("name")||k(),b.push(d.token.value),g();g();return b}(!0,[]),function(){++d.in_function;var a=d.in_loop;d.in_loop=0;var b=P();--d.in_function,d.in_loop=a;return b}())}function H(){m("(");var a=e("keyword","var");a&&g();if(e("name")&&t(f(),"operator","in")){var b=d.token.value;g(),g();var c=bi();m(")");return p("for-in",a,b,c,bj(u))}var h=e("punc",";")?null:a?U():bi();m(";");var i=e("punc",";")?null:bi();m(";");var j=e("punc",")")?null:bi();m(")");return p("for",h,i,j,bj(u))}function G(a){var b=e("name")?d.token.value:null;b!=null?(g(),O(b,d.labels)||i("Label "+b+" without matching loop or statement")):d.in_loop==0&&i(a+" not inside a loop or switch"),o();return p(a,b)}function F(){return p("stat",K(bi,o))}function E(a){d.labels.push(a);var c=d.token,e=u();b&&!R(A,e[0])&&k(c),d.labels.pop();return p("label",a,e)}function D(){e("operator","/")&&(d.peeked=null,d.token=d.input(!0));switch(d.token.type){case"num":case"string":case"regexp":case"operator":case"atom":return F();case"name":return t(f(),"punc",":")?E(K(d.token.value,g,g)):F();case"punc":switch(d.token.value){case"{":return p("block",P());case"[":case"(":return F();case";":g();return p("block");default:k()};case"keyword":switch(K(d.token.value,g)){case"break":return G("break");case"continue":return G("continue");case"debugger":o();return p("debugger");case"do":return function(a){l("keyword","while");return p("do",K(q,o),a)}(bj(u));case"for":return H();case"function":return I(!0);case"if":return N();case"return":d.in_function==0&&i("'return' outside of function");return p("return",e("punc",";")?(g(),null):n()?null:K(bi,o));case"switch":return p("switch",q(),Q());case"throw":return p("throw",K(bi,o));case"try":return S();case"var":return K(U,o);case"const":return K(V,o);case"while":return p("while",q(),bj(u));case"with":return p("with",q(),u());default:k()}}}function r(a,b,c){return a instanceof C?a:new C(a,b,c)}function q(){m("(");var a=bi();m(")");return a}function p(){return M(arguments)}function o(){e("punc",";")?g():n()||k()}function n(){return!b&&(d.token.nlb||e("eof")||e("punc","}"))}function m(a){return l("punc",a)}function l(a,b){if(e(a,b))return g();j(d.token,"Unexpected token "+d.token.type+", expected "+a)}function k(a){a==null&&(a=d.token),j(a,"Unexpected token: "+a.type+" ("+a.value+")")}function j(a,b){i(b,a.line,a.col)}function i(a,b,c,e){var f=d.input.context();s(a,b!=null?b:f.tokline,c!=null?c:f.tokcol,e!=null?e:f.tokpos)}function h(){return d.prev}function g(){d.prev=d.token,d.peeked?(d.token=d.peeked,d.peeked=null):d.token=d.input();return d.token}function f(){return d.peeked||(d.peeked=d.input())}function e(a,b){return t(d.token,a,b)}var d={input:typeof a=="string"?v(a,!0):a,token:null,prev:null,peeked:null,in_function:0,in_loop:0,labels:[]};d.token=g();var u=c?function(){var a=d.token,b=D.apply(this,arguments);b[0]=r(b[0],a,h());return b}:D,I=c?function(){var a=h(),b=L.apply(this,arguments);b[0]=r(b[0],a,h());return b}:L,Q=J(bj,function(){m("{");var a=[],b=null;while(!e("punc","}"))e("eof")&&k(),e("keyword","case")?(g(),b=[],a.push([bi(),b]),m(":")):e("keyword","default")?(g(),m(":"),b=[],a.push([null,b])):(b||k(),b.push(u()));g();return a});return p("toplevel",function(a){while(!e("eof"))a.push(u());return a}([]))}function C(a,b,c){this.name=a,this.start=b,this.end=c}function v(b){function N(a){if(a)return H();y(),v();var b=g();if(!b)return w("eof");if(p(b))return B();if(b=='"'||b=="'")return E();if(R(l,b))return w("punc",h());if(b==".")return K();if(b=="/")return J();if(R(e,b))return I();if(o(b))return L();A("Unexpected character '"+b+"'")}function M(a,b){try{return b()}catch(c){if(c===u)A(a);else throw c}}function L(){var b=z(o);return R(a,b)?R(i,b)?w("operator",b):R(d,b)?w("atom",b):w("keyword",b):w("name",b)}function K(){h();return p(g())?B("."):w("punc",".")}function J(){h();var a=f.regex_allowed;switch(g()){case"/":f.comments_before.push(F()),f.regex_allowed=a;return N();case"*":f.comments_before.push(G()),f.regex_allowed=a;return N()}return f.regex_allowed?H():I("/")}function I(a){function b(a){if(!g())return a;var c=a+g();if(R(i,c)){h();return b(c)}return a}return w("operator",b(a||h()))}function H(){return M("Unterminated regular expression",function(){var a=!1,b="",c,d=!1;while(c=h(!0))if(a)b+="\\"+c,a=!1;else if(c=="[")d=!0,b+=c;else if(c=="]"&&d)d=!1,b+=c;else{if(c=="/"&&!d)break;c=="\\"?a=!0:b+=c}var e=z(function(a){return R(m,a)});return w("regexp",[b,e])})}function G(){h();return M("Unterminated multiline comment",function(){var a=t("*/",!0),b=f.text.substring(f.pos,a),c=w("comment2",b,!0);f.pos=a+2,f.line+=b.split("\n").length-1,f.newline_before=b.indexOf("\n")>=0;return c})}function F(){h();var a=t("\n"),b;a==-1?(b=f.text.substr(f.pos),f.pos=f.text.length):(b=f.text.substring(f.pos,a),f.pos=a);return w("comment1",b,!0)}function E(){return M("Unterminated string constant",function(){var a=h(),b="";for(;;){var c=h(!0);if(c=="\\")c=C();else if(c==a)break;b+=c}return w("string",b)})}function D(a){var b=0;for(;a>0;--a){var c=parseInt(h(!0),16);isNaN(c)&&A("Invalid hex-character pattern in string"),b=b<<4|c}return b}function C(){var a=h(!0);switch(a){case"n":return"\n";case"r":return"\r";case"t":return"\t";case"b":return"\b";case"v":return" ";case"f":return"\f";case"0":return"";case"x":return String.fromCharCode(D(2));case"u":return String.fromCharCode(D(4));default:return a}}function B(a){var b=!1,c=!1,d=!1,e=a==".",f=z(function(f,g){if(f=="x"||f=="X"){if(d)return!1;return d=!0}if(!d&&(f=="E"||f=="e")){if(b)return!1;return b=c=!0}if(f=="-"){if(c||g==0&&!a)return!0;return!1}if(f=="+")return c;c=!1;if(f=="."){if(!e)return e=!0;return!1}return n(f)});a&&(f=a+f);var g=q(f);if(!isNaN(g))return w("num",g);A("Invalid syntax: "+f)}function A(a){s(a,f.tokline,f.tokcol,f.tokpos)}function z(a){var b="",c=g(),d=0;while(c&&a(c,d++))b+=h(),c=g();return b}function y(){while(R(j,g()))h()}function w(a,b,d){f.regex_allowed=a=="operator"&&!R(x,b)||a=="keyword"&&R(c,b)||a=="punc"&&R(k,b);var e={type:a,value:b,line:f.tokline,col:f.tokcol,pos:f.tokpos,nlb:f.newline_before};d||(e.comments_before=f.comments_before,f.comments_before=[]),f.newline_before=!1;return e}function v(){f.tokline=f.line,f.tokcol=f.col,f.tokpos=f.pos}function t(a,b){var c=f.text.indexOf(a,f.pos);if(b&&c==-1)throw u;return c}function r(){return!f.peek()}function h(a){var b=f.text.charAt(f.pos++);if(a&&!b)throw u;b=="\n"?(f.newline_before=!0,++f.line,f.col=0):++f.col;return b}function g(){return f.text.charAt(f.pos)}var f={text:b.replace(/\r\n?|[\n\u2028\u2029]/g,"\n").replace(/^\uFEFF/,""),pos:0,tokpos:0,line:0,tokline:0,col:0,tokcol:0,newline_before:!1,regex_allowed:!1,comments_before:[]};N.context=function(a){a&&(f=a);return f};return N}function t(a,b,c){return a.type==b&&(c==null||a.value==c)}function s(a,b,c,d){throw new r(a,b,c,d)}function r(a,b,c,d){this.message=a,this.line=b,this.col=c,this.pos=d;try{({})()}catch(e){this.stack=e.stack}}function q(a){if(f.test(a))return parseInt(a.substr(2),16);if(g.test(a))return parseInt(a.substr(1),8);if(h.test(a))return parseFloat(a)}function p(a){a=a.charCodeAt(0);return a>=48&&a<=57}function o(a){return n(a)||a=="$"||a=="_"}function n(a){a=a.charCodeAt(0);return a>=48&&a<=57||a>=65&&a<=90||a>=97&&a<=122}var a=L(["break","case","catch","const","continue","default","delete","do","else","finally","for","function","if","in","instanceof","new","return","switch","throw","try","typeof","var","void","while","with"]),b=L(["abstract","boolean","byte","char","class","debugger","double","enum","export","extends","final","float","goto","implements","import","int","interface","long","native","package","private","protected","public","short","static","super","synchronized","throws","transient","volatile"]),c=L(["return","new","delete","throw","else","case"]),d=L(["false","null","true","undefined"]),e=L(N("+-*&%=<>!?|~^")),f=/^0x[0-9a-f]+$/i,g=/^0[0-7]+$/,h=/^\d*\.?\d*(?:e[+-]?\d*(?:\d\.?|\.?\d)\d*)?$/i,i=L(["in","instanceof","typeof","new","void","delete","++","--","+","-","!","~","&","|","^","*","/","%",">>","<<",">>>","<",">","<=",">=","==","===","!=","!==","?","=","+=","-=","/=","*=","%=",">>=","<<=",">>>=","%=","|=","^=","&=","&&","||"]),j=L(N(" \n\r\t")),k=L(N("[{}(,.;:")),l=L(N("[]{}(),;:")),m=L(N("gmsiy"));r.prototype.toString=function(){return this.message+" (line: "+this.line+", col: "+this.col+", pos: "+this.pos+")"+"\n\n"+this.stack};var u={},w=L(["typeof","void","delete","--","++","!","~","-","+"]),x=L(["--","++"]),y=function(a,b,c){while(c>=","<<=",">>>=","|=","^=","&="],{"=":!0},0),z=function(a,b){for(var c=0,d=1;c","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]],{}),A=L(["for","do","while","switch"]),B=L(["atom","num","string","regexp","name"]);C.prototype.toString=function(){return this.name};var G=L(["name","array","string","dot","sub","call","regexp"]);return{parse:D,stringify:I,tokenizer:v,walker:E}} - - var operators = { - '+': 'add', - '-': 'subtract', - '*': 'multiply', - '/': 'divide', - '%': 'modulo', - '==': 'equals', - '!=': 'equals' - }; - - function $eval(left, operator, right) { - var handler = operators[operator]; - if (left && left[handler]) { - var res = left[handler](right); - return operator == '!=' ? !res : res; - } - switch (operator) { - case '+': return left + right; - case '-': return left - right; - case '*': return left * right; - case '/': return left / right; - case '%': return left % right; - case '==': return left == right; - case '!=': return left != right; - default: - throw new Error('Implement Operator: ' + operator); - } - }; - - var signOperators = { - '-': 'negate' - }; - - function $sign(operator, value) { - var handler = signOperators[operator]; - if (value && value[handler]) { - return value[handler](); - } - switch (operator) { - case '+': return +value; - case '-': return -value; - default: - throw new Error('Implement Sign Operator: ' + operator); - } - } - - function isDynamic(exp) { - var type = exp[0]; - return type != 'num' && type != 'string'; - } - - function handleOperator(operator, left, right) { - if (operators[operator] && isDynamic(left)) { - return ['call', ['name', '$eval'], - [left, ['string', operator], right]]; - } - } - - function compile(code) { - var ast = parse_js.parse(code), - walker = parse_js.walker(), - walk = walker.walk; - - ast = walker.with_walkers({ - 'binary': function(operator, left, right) { - return handleOperator(operator, left = walk(left), - right = walk(right)) - || [this[0], operator, left, right]; - }, - - 'assign': function(operator, left, right) { - var res = handleOperator(operator, left = walk(left), - right = walk(right)); - if (res) - return [this[0], true, left, res]; - return [this[0], operator, left, right]; - }, - - 'unary-prefix': function(operator, exp) { - if (signOperators[operator] && isDynamic(exp)) { - return ['call', ['name', '$sign'], - [['string', operator], walk(exp)]]; - } - } - }, function() { - return walk(ast); - }); - - return parse_js.stringify(ast, true); - } - - function evaluate(code, scope) { - if (typeof code !== 'string') { - var canvas = code.getAttribute('canvas'); - if (canvas = canvas && document.getElementById(canvas)) { - paper = scope; - new Project(); - new View(canvas).activate(); - } - if (code.src) { - return request(code.src, scope); - } else { - code = code.innerHTML; - } - } - var view = scope.view, - tool = scope.tool = /on(?:Key|Mouse)(?:Up|Down|Move|Drag)/.test(code) - && new Tool(null, scope), - res; - paper = scope; - with (scope) { - (function() { - var onEditOptions, onSelect, onDeselect, onReselect, onMouseDown, - onMouseUp, onMouseDrag, onMouseMove, onKeyDown, onKeyUp, - onFrame, onResize, - handlers = [ 'onEditOptions', 'onSelect', 'onDeselect', - 'onReselect', 'onMouseDown', 'onMouseUp', 'onMouseDrag', - 'onMouseMove', 'onKeyDown', 'onKeyUp']; - res = eval(compile(code)); - if (tool) { - Base.each(handlers, function(key) { - tool[key] = eval(key); - }); - } - if (view) { - view.onResize = onResize; - if (onFrame) { - view.setOnFrame(onFrame); - } else { - view.draw(); - } - } - }).call(scope); - } - return res; - } - - function request(url, scope) { - var xhr = new (window.ActiveXObject || XMLHttpRequest)( - 'Microsoft.XMLHTTP'); - xhr.open('GET', url, true); - if (xhr.overrideMimeType) { - xhr.overrideMimeType('text/plain'); - } - xhr.onreadystatechange = function() { - if (xhr.readyState === 4) { - return evaluate(xhr.responseText, scope); - } - }; - return xhr.send(null); - } - - function load() { - var scripts = document.getElementsByTagName('script'), - count = 0; - for (var i = 0, l = scripts.length; i < l; i++) { - var script = scripts[i]; - if (script.type === 'text/paperscript' - && !script.getAttribute('loaded')) { - var scope = new PaperScope(script.getAttribute('id') - || script.src || ('paperscript-' + (count++))); - script.setAttribute('id', scope.id); - evaluate(script, scope); - script.setAttribute('loaded', true); - } - } - } - - DomEvent.add(window, { load: load }); - - return { - compile: compile, - evaluate: evaluate, - load: load - }; - -}; - -this.load = PaperScript.load; - -return new (PaperScope.inject(this)); -}; diff --git a/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/reference.js b/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/reference.js deleted file mode 100644 index e6640581..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/static/resources/js/reference.js +++ /dev/null @@ -1,230 +0,0 @@ -function createCodeMirror(place, options, source) { - return new CodeMirror(place, Hash.create({}, { - lineNumbers: true, - matchBrackets: true, - indentUnit: 4, - tabMode: 'shift', - value: source.getText().replace(/\t/gi, ' ').match( - // Remove first & last empty line - /^\s*?[\n\r]?([\u0000-\uffff]*?)[\n\r]?\s*?$/)[1] - }, options)); -} - -Code = HtmlElement.extend({ - _class: 'code', - - initialize: function() { - // Only format this element if it is visible, otherwise wait until - // it is made visible and then call initialize() manually. - if (this.initialized || this.getBounds().height == 0) - return; - var that = this; - var start = this.getProperty('start'); - var highlight = this.getProperty('highlight'); - var editor = createCodeMirror(function(el) { - that.replaceWith(el); - }, { - lineNumbers: !this.hasParent('.resource-text'), - firstLineNumber: (start || 1).toInt(), - readOnly: true - }, this); - if (highlight) { - var highlights = highlight.split(','); - for (var i = 0, l = highlights.length; i < l; i++) { - var highlight = highlights[i].split('-'); - var hlStart = highlight[0].toInt() - 1; - var hlEnd = highlight.length == 2 - ? highlight[1].toInt() - 1 : hlStart; - if (start) { - hlStart -= start - 1; - hlEnd -= start - 1; - } - for (var j = hlStart; j <= hlEnd; j++) { - editor.setLineClass(j, 'highlight'); - } - } - } - this.initialized = true; - } -}); - -PaperScript = HtmlElement.extend({ - _class: 'paperscript', - - initialize: function() { - // Only format this element if it is visible, otherwise wait until - // it is made visible and then call initialize() manually. - if (this.initialized || this.getBounds().height == 0) - return; - var script = $('script', this), - button = $('.button', this); - if (!script || !button) - return; - var source = button.injectAfter('div', { - className: 'source hidden' - }); - var that = this, - canvas = $('canvas', this), - hasResize = canvas.getProperty('resize'), - showSplit = this.hasClass('split'), - sourceFirst = this.hasClass('source'), - width, height, - editor = null, - hasBorders = true; - - function showSource(show) { - source.modifyClass('hidden', !show); - button.setText(show ? 'Run' : 'Source'); - if (show && !editor) { - editor = createCodeMirror(source.$, { - /* - onKeyEvent: function(editor, event) { - event = new DomEvent(event); - if (event.type == 'keydown') { - var pos = editor.getCursor(); - pos.ch += 4; - editor.setCursor(pos); - event.stop(); - } - }, - */ - }, script); - } - } - - function runScript() { - var scope = paper.PaperScope.get(script.$); - if (scope) { - // Update script to edited version - script.setText(editor.getValue()); - // Clear scope first, then evaluate a new script. - scope.clear(); - scope.evaluate(script.$); - } - } - - function resize() { - if (!canvas.hasClass('hidden')) { - width = canvas.getWidth(); - height = canvas.getHeight(); - } else if (hasResize) { - // Can't get correct dimensions from hidden canvas, - // so calculate again. - var size = $window.getScrollSize(); - var offset = source.getOffset(); - width = size.width - offset.x; - height = size.height - offset.y; - } - // Resize the main element as well, so that the float:right button - // is always positioned correctly. - that.set({ width: width, height: height }); - source.set({ - width: width - (hasBorders ? 2 : 1), - height: height - (hasBorders ? 2 : 0) - }); - } - - function toggleView() { - var show = source.hasClass('hidden'); - resize(); - canvas.modifyClass('hidden', show); - showSource(show); - if (!show) - runScript(); - // Remove padding - button.setStyle('right', - $('.CodeMirror', source).getScrollSize().height > height - ? 24 : 8); - } - - if (hasResize) { - // Delay the installing of the resize event, so paper.js installs - // its own before us. - (function() { - $window.addEvents({ - resize: resize - }); - }).delay(1); - hasBorders = false; - source.setStyles({ - borderWidth: '0 0 0 1px' - }); - } - - if (showSplit) { - showSource(true); - } else if (sourceFirst) { - toggleView(); - } - - button.addEvents({ - click: function(event) { - if (showSplit) { - runScript(); - } else { - toggleView(); - } - event.stop(); - }, - - mousedown: function(event) { - event.stop(); - } - }); - this.initialized = true; - } -}); - -var lastMemberId = null; -function toggleMember(id, scrollTo, dontScroll) { - var link = $('#' + id + '-link'); - if (!link) - return true; - var desc = $('#' + id + '-description'); - var v = !link.hasClass('hidden'); - // Retrieve y-offset before any changes, so we can correct scrolling after - var offset = (v ? link : desc).getOffset().y; - if (lastMemberId && lastMemberId != id) { - var prevId = lastMemberId; - lastMemberId = null; - toggleMember(prevId, false, true); - } - lastMemberId = v && id; - link.modifyClass('hidden', v); - desc.modifyClass('hidden', !v); - if (!dontScroll) { - // Correct scrolling relatively to where we are, by checking the amount - // the element has shifted due to the above toggleMember call, and - // correcting by 11px offset, caused by 1px border and 10px padding. - var scroll = $window.getScrollOffset(); - $window.setScrollOffset(scroll.x, scroll.y - + (v ? desc : link).getOffset().y - offset + 11 * (v ? 1 : -1)); - } - if (!desc.editor && v) { - desc.editor = $$('pre.code, .paperscript', desc).each(function(code) { - code.initialize(); - }); - } - if (scrollTo) - scrollToMember(id); - return false; -} - -function scrollToElement(id) { - var e = $('#' + id + '-member'); - if (e) { - if (e.hasClass('member')) - toggleMember(id); - var offs = e.getOffset(); - $window.setScrollOffset(offs); - } else { - window.location.hash = id; - } -} - -$document.addEvent('domready', function() { - var h = unescape(document.location.hash); - if (h) scrollToElement(h.substring(1)); - if (window.paper) - paper.load(); -}); diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/class.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/class.tmpl deleted file mode 100644 index 56369a56..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/class.tmpl +++ /dev/null @@ -1,70 +0,0 @@ -
    -

    {+ data.name == '_global_' && publish.conf.globalName || data.name +}

    - -

    Extends {+ data.inheritedLinks +}

    -
    -{+ data.description +} -
    - - -

    Constructors

    - - {+ Render.constructor(constructor) +} - -
    -
    - - - -

    Operators

    - - {+ Render.operators(operator) +} - -
    -
    - - -

    Properties

    - - {+ Render.property(member) +} - -
    -
    - - - -

    Functions

    - - {+ Render.method(member) +} - -
    -
    - -

    Static Functions

    - - {+ Render.method(member) +} - -
    -
    - - - -

    Properties inherited from {+ new Link(true).toSymbol(inheritedClass.className) +}

    - - {+ Render.property(member, true) +} - -
    -
    - - -

    Functions inherited from {+ new Link(true).toSymbol(inheritedClass.className) +}

    - - {+ Render.method(member, true) +} - -
    -
    -
    - - -
    - \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/constructor.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/constructor.tmpl deleted file mode 100644 index eb8219e1..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/constructor.tmpl +++ /dev/null @@ -1,24 +0,0 @@ -

    {+data.symbol.groupTitle+}

    -
    - - -
    \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/example.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/example.tmpl deleted file mode 100644 index 7d6b8329..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/example.tmpl +++ /dev/null @@ -1,15 +0,0 @@ -

    -Example {+ '— ' + data.description +} -

    - -
    {+ data.paperScript.mode +}"> -
    {+ data.paperScript.mode == 'source' ? 'Source' : 'Run' +}
    - -
    -
    -
    - -
    {+ data.code +}
    -
    \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/examples.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/examples.tmpl deleted file mode 100644 index 2d7284df..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/examples.tmpl +++ /dev/null @@ -1,6 +0,0 @@ - - -

    Sample code:

    -
    {+example+}
    -
    -
    \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/html.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/html.tmpl deleted file mode 100644 index 76143ff3..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/html.tmpl +++ /dev/null @@ -1,17 +0,0 @@ - - - -{+ data.title +} - - - - - - - - - - - -{+ data.content +} - \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/index.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/index.tmpl deleted file mode 100644 index 6063a5a3..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/index.tmpl +++ /dev/null @@ -1,16 +0,0 @@ - - - -Paper.js - - - - - - - -
    -

    Paper.js

    -{+ Render.classes() +} - - \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/method.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/method.tmpl deleted file mode 100644 index 7361733e..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/method.tmpl +++ /dev/null @@ -1,26 +0,0 @@ - -

    {+data.symbol.groupTitle+}

    -
    -
    - - -
    \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/operator.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/operator.tmpl deleted file mode 100644 index a7abc878..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/operator.tmpl +++ /dev/null @@ -1,17 +0,0 @@ - - -
    - {+ data.description +} - {+ Render.returns(data.symbol) +} - {+ Render.seeAlsos(data.symbol) +} - {+ Render.examples(data.symbol) +} -
    -
    \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/operators.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/operators.tmpl deleted file mode 100644 index 035d8b5c..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/operators.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -
    - - -
    diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/packages.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/packages.tmpl deleted file mode 100644 index 6a9c94aa..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/packages.tmpl +++ /dev/null @@ -1 +0,0 @@ -createPackage("", {+ JSON.stringify(data) +}, "", {+ JSON.stringify(Render.classes()) +}); \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/parameter.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/parameter.tmpl deleted file mode 100644 index 929731df..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/parameter.tmpl +++ /dev/null @@ -1,6 +0,0 @@ -
  1. -{+ data.name +}: -{+ data.typeLink +} -— {+ data.description +} -— optional, default: {+data.symbol.defaultValue+} -
  2. \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/parameters.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/parameters.tmpl deleted file mode 100644 index e819a183..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/parameters.tmpl +++ /dev/null @@ -1,7 +0,0 @@ - -
      Parameters: - -{+ Render.parameter(parameter) +} - -
    -
    \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/property.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/property.tmpl deleted file mode 100644 index 2f10348e..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/property.tmpl +++ /dev/null @@ -1,41 +0,0 @@ - -

    {+ data.symbol.groupTitle +}

    -
    -
    - - -
    \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/return.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/return.tmpl deleted file mode 100644 index cb39d5b5..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/return.tmpl +++ /dev/null @@ -1,3 +0,0 @@ -
  3. -{+ data.typeLink +} — {+ data.description +} -
  4. \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/returns.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/returns.tmpl deleted file mode 100644 index 591a4da3..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/returns.tmpl +++ /dev/null @@ -1,7 +0,0 @@ - -
      Returns: - - {+ Render['return'](symbol) +} - -
    -
    \ No newline at end of file diff --git a/build/jsdoc-toolkit/templates/jsdoc/templates/seeAlsos.tmpl b/build/jsdoc-toolkit/templates/jsdoc/templates/seeAlsos.tmpl deleted file mode 100644 index 76133ece..00000000 --- a/build/jsdoc-toolkit/templates/jsdoc/templates/seeAlsos.tmpl +++ /dev/null @@ -1,5 +0,0 @@ - -

    See also: - , {+ new Link(true).toSymbol(item) +} -

    -
    \ No newline at end of file

    5r^9-bR{ryV|*0DC~MOn(EpL>m46al4Zn=>3;z`7=S>z4Y_X%A&gNw#v3isPH&J*SYLsKxH5}|p{2HneOX$GQJJC26kC(E;Sd_H zKw;jR>xRL#n3|*NxEgDVQAyMcub&+474NwdY9hg53JBc?QnjJcF<0HG8)g2SE@7_5mYpOAPj zGm5ha<8y|EDtvs+CT|gIyFhVtW-l!N1mUv{px(*Rl zmp4Y*0#pM<-GS%C3^vqRnG;bj{GRtU@A`n*J37eG%~R)_&+-Vek5~Mtcf_ec)m&c~ z0k8XEL>z=i!}M;dQL8Y~XAF;T*|J|gEdN4`{`r_)^g&$K)Vx8r5?x@Ipl5V3vGJZ@ zE|x?eGJ8e0t%wYvO3&Z0D%#Y~cLg9gmW>6|x}8k6hwur|c%ls+O`{O{T5ony1GCQF1;~ zxQ&CffOotk&f)Tm?Rrl5v;GGH2>v(V55>c@>p%-dIkea9Q_fv>hTUGDH)wrSm&vh1 zS1@RE%sSH`-JdRh?qJ8ZzPnC4xL181(&aDm!ytQ}gE(CEut|J=G8$K4{>8yH;DZ@s z#I0a0ilPnUO4WUQ(8)EBOT^5xLPm4Mls)5EeO!l8B9v!tR9rZD2<*QEINVA5DjvD^ zFmdK6l@+er8W9EL8PO@rn1vpMt-0A5(mV%-engwd>kg3647lw8g4lQt07LlL}zsWLK+KSunyCF!>=* zVcdjXI-X4^oDs-^t8?c9YRL;F9DVQPZ-DhKL~S=UBRsDtCpMQBFrO({t##?86xqkg4uf7$YzJsYXL;*$b zWgF52Gisn{TGboUBh@$RO1?>3-Rs+H6C&9+`r;qeHS~_tKj=t3X-C5}!KDxTLR?nW z*B{?yVqKPgU>dodjIUR5G`)Ocx63ddsHRX&;WtHNZwo};6idL(=Y@5SvVB~0$+x4s zSd4N}v`d}HT4nBNw%CoPwb%dHnCc6FvnzZ8{=bTi(2fz({jZ^hB?SOr{Qvve{txs( z6Ve;y1ohW%W8?bPczgng5T`IccqSC#p*(ogkf;-4084-v4U;XYzHuX_s|hD^q*bfx z#k?jpQuW%P#-;@^g$7J;i)#1vv0B{53jW66uIshOjx1@$R49-?|KRQGbY}Xk=l8eA z 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