diff --git a/.gitignore b/.gitignore index 3417a1bf..b747724a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ .*.gz # A handy place to put stuff that git should ignore: -/ignore/ \ No newline at end of file +/ignore/ +/build/ diff --git a/.gitmodules b/.gitmodules index acb1dc52..b46e518b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -22,3 +22,9 @@ [submodule "support/cockpit"] path = support/cockpit url = git://github.com/ajaxorg/cockpit.git +[submodule "support/pilot"] + path = support/pilot + url = git://github.com/ajaxorg/pilot.git +[submodule "support/dryice"] + path = support/dryice + url = git://github.com/mozilla/dryice.git diff --git a/LICENSE b/LICENSE index 02bbb60b..853e4fd5 100644 --- a/LICENSE +++ b/LICENSE @@ -1,165 +1,476 @@ +Licensed under the tri-license MPL/LGPL/GPL. + + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is ______________________________________. + + The Initial Developer of the Original Code is ________________________. + Portions created by ______________________ are Copyright (C) ______ + _______________________. All Rights Reserved. + + Contributor(s): ______________________________________. + + Alternatively, the contents of this file may be used under the terms + of the _____ license (the "[___] License"), in which case the + provisions of [______] License are applicable instead of those + above. If you wish to allow use of your version of this file only + under the terms of the [____] License and not to allow others to use + your version of this file under the MPL, indicate your decision by + deleting the provisions above and replace them with the notice and + other provisions required by the [___] License. If you do not delete + the provisions above, a recipient may use your version of this file + under either the MPL or the [___] License." + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + + + GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - You may place library facilities that are a work based on the -Library side by side in a single library together with other library -facilities that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU Lesser General Public License from time to time. Such new -versions will be similar in spirit to the present version, but may -differ in detail to address new problems or concerns. - - Each version is given a distinguishing version number. If the -Library as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. \ No newline at end of file + Version 3, 29 June 2007 \ No newline at end of file diff --git a/Makefile b/Makefile deleted file mode 100644 index 82e66a2c..00000000 --- a/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -package: - rm -rf build - support/requirejs/build/build.sh build.js diff --git a/Makefile.dryice.js b/Makefile.dryice.js new file mode 100644 index 00000000..6ed1dd70 --- /dev/null +++ b/Makefile.dryice.js @@ -0,0 +1,1060 @@ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: MPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * The Original Code is Ajax.org Code Editor (ACE). + * + * The Initial Developer of the Original Code is + * Ajax.org B.V. + * Portions created by the Initial Developer are Copyright (C) 2010 + * the Initial Developer. All Rights Reserved. + * + * Contributor(s): + * Fabian Jakobs + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +//var copy = require('dryice').copy; +var copy = internalRequire('dryice').copy; + +var aceHome = __dirname; + +// Pilot sources +var pilot = copy.createDataObject(); +copy({ + source: [ { + root: aceHome + '/support/cockpit/support/pilot/lib', + include: /.*\.js$/, + exclude: /tests?\// + } ], + filter: [ copy.filter.moduleDefines ], + dest: pilot +}); + +// Cockpit sources +var cockpit = copy.createDataObject(); +copy({ + source: [ { + root: aceHome + '/support/cockpit/lib', + include: /.*\.js$/, + exclude: /tests?\// + } ], + filter: [ copy.filter.moduleDefines ], + dest: cockpit +}); +copy({ + source: [ { + root: aceHome + '/support/cockpit/lib', + include: /.*\.css$|.*\.html$/, + exclude: /tests?\// + } ], + filter: [ copy.filter.addDefines ], + dest: cockpit +}); +copy({ + source: [ { + root: aceHome + '/support/cockpit/lib', + include: /.*\.png$|.*\.gif$/, + exclude: /tests?\// + } ], + filter: [ copy.filter.base64 ], + dest: cockpit +}); + +// Ace sources +var ace = copy.createDataObject(); +copy({ + source: [ + // Exclude all themes/modes so we can just include textmate/js + { + root: aceHome + '/lib', + include: /.*\.js$/, + exclude: /tests?\/|theme\/|mode\// + }, + { base: aceHome + '/lib/', path: 'ace/theme/textmate.js' }, + { base: aceHome + '/lib/', path: 'ace/mode/text.js' }, + { base: aceHome + '/lib/', path: 'ace/mode/javascript.js' }, + { base: aceHome + '/lib/', path: 'ace/mode/text_highlight_rules.js' }, + { base: aceHome + '/lib/', path: 'ace/mode/javascript_highlight_rules.js' }, + { base: aceHome + '/lib/', path: 'ace/mode/doc_comment_highlight_rules.js' }, + { base: aceHome + '/lib/', path: 'ace/mode/matching_brace_outdent.js' }, + { base: aceHome + '/lib/', path: 'ace/mode/javascript_highlight_rules.js' } + ], + filter: [ copy.filter.moduleDefines ], + dest: ace +}); +copy({ + source: [ { + root: aceHome + '/lib', + include: /tm\.css|editor\.css/, + exclude: /tests?\// + } ], + filter: [ copy.filter.addDefines ], + dest: ace +}); + +// Piece together the parts that we want +var data = copy.createDataObject(); +copy({ + source: [ + 'build_support/mini_require.js', + pilot, + // cockpit, + ace, + 'build_support/boot.js' + ], + dest: data +}); + +copy({ + source: [ + 'build_support/editor.html' + ], + dest: 'build/editor.html' +}); + +// Create the compressed and uncompressed output files +copy({ + source: data, + filter: copy.filter.uglifyjs, + dest: 'build/ace.js' +}); +copy({ + source: data, + dest: 'build/ace-uncompressed.js' +}); + + + + + +function internalRequire(ignore) { +var exports = {}; + + + +var fs = require("fs"); +var ujs = require("uglify-js"); + +/** + * Dryice is ant for javascript + * @param obj An object that contains source, dest and (optionally) filter objects + * source must be one of: + * - string: a file to read (later a directory too) + * - a data object like { value:OUTPUT_DATA } + * - a findObj like { root:DIR, include:RegExp|[RegExp], exclude:RegExp|[RegExp] } + * - a baseObj like { base:BASE, path:PATH } where BASE+PATH = filename + * (this method allows use of commonjs filters) + * - an array containing entries like the 3 above + * - a function which returns one of the 4 above + * dest must be either a string (pointing to a file) or a data object + */ +function copy(obj) { + // Gather a list of all the input sources + addSource(obj, obj.source); + + // Concatenate all the input sources + var value = ''; + obj.sources.forEach(function(source) { + value += source.value; + }, this); + + // Run filters where onRead=false + value = runFilters(value, obj.filter, false); + + // Output + // TODO: for now we're ignoring the concept of directory destinations. + if (typeof obj.dest.value === 'string') { + obj.dest.value += value; + } + else if (typeof obj.dest === 'string') { + fs.writeFileSync(obj.dest, value); + } + else { + throw new Error('Can\'t handle type of dest: ' + typeof obj.dest); + } +} + +function addName(currentName, newName) { + return currentName === null ? currentName : newName; +} + +function addSource(obj, source) { + if (!obj.sources) { + obj.sources = []; + } + + if (typeof source === 'function') { + addSource(obj, source()); + } + else if (Array.isArray(source)) { + source.forEach(function(s) { + addSource(obj, s); + }, this); + } + else if (source.root) { + copy.findFiles(obj, source); + } + else if (source.base) { + addSourceBase(obj, source); + } + else if (typeof source === 'string') { + addSourceFile(obj, source); + } + else if (typeof source.value === 'string') { + if (!source.filtered) { + source.value = runFilters(source.value, obj.filter, true, source.name); + source.filtered = true; + } + obj.sources.push(source); + } + else { + throw new Error('Can\'t handle type of source: ' + typeof source); + } +} + +function addSourceFile(obj, filename) { + var read = fs.readFileSync(filename); + obj.sources.push({ + name: filename, + value: runFilters(read, obj.filter, true, filename) + }); +} + +function addSourceBase(obj, baseObj) { + var read = fs.readFileSync(baseObj.base + baseObj.path); + obj.sources.push({ + name: baseObj, + value: runFilters(read, obj.filter, true, baseObj) + }); +} + +function runFilters(value, filter, reading, name) { + if (!filter) { + return value; + } + + if (Array.isArray(filter)) { + filter.forEach(function(f) { + value = runFilters(value, f, reading, name); + }, this); + return value; + } + + if (filter.onRead == reading) { + return filter(value, name); + } + else { + return value; + } +} + +/** + * A holder is an in-memory store of a result of a copy operation. + *
+ * var holder = copy.createDataObject();
+ * copy({ source: 'x.txt', dest: holder });
+ * copy({ source: 'y.txt', dest: holder });
+ * copy({ source: holder, dest: 'z.txt' });
+ * 
+ */ +copy.createDataObject = function() { + return { value: '' }; +}; + +/** + * An object that contains include and exclude object + */ +copy.findFiles = function(obj, findObj) { + if (!findObj.filter) { + findObj.filter = createFilterFromRegex(findObj); + } + if (!findObj.path) { + findObj.path = ''; + } + + if (findObj.root.length > 0 && findObj.root.substr(-1) !== '/') { + findObj.root += '/'; + } + var path = findObj.path; + if (path.length > 0 && path.substr(-1) !== '/') { + path += '/'; + } + + fs.readdirSync(findObj.root + findObj.path).forEach(function(entry) { + var stat = fs.statSync(findObj.root + path + entry); + if (stat.isFile()) { + if (findObj.filter(path + entry)) { + addSourceBase(obj, { + base: findObj.root, + path: path + entry + }); + } + } + else if (stat.isDirectory()) { + findObj.path = path + entry; + copy.findFiles(obj, findObj); + } + }, this); +}; + +function createFilterFromRegex(obj) { + return function(path) { + function noPathMatch(pattern) { + return !pattern.test(path); + } + if (obj.include instanceof RegExp) { + if (noPathMatch(obj.include)) { + return false; + } + } + if (typeof obj.include === 'string') { + if (noPathMatch(new RegExp(obj.include))) { + return false; + } + } + if (Array.isArray(obj.include)) { + if (obj.include.every(noPathMatch)) { + return false; + } + } + + function pathMatch(pattern) { + return pattern.test(path); + } + if (obj.exclude instanceof RegExp) { + if (pathMatch(obj.exclude)) { + return false; + } + } + if (typeof obj.exclude === 'string') { + if (pathMatch(new RegExp(obj.exclude))) { + return false; + } + } + if (Array.isArray(obj.exclude)) { + if (obj.exclude.some(pathMatch)) { + return false; + } + } + + return true; + }; +} + +/** + * File filters + */ +copy.filter = {}; + +/** + * Compress the given input code using UglifyJS. + * + * @param string input + * @return string output + */ +copy.filter.uglifyjs = function(input) { + if (typeof input !== 'string') { + input = input.toString(); + } + + var opt = copy.filter.uglifyjs.options; + var ast = ujs.parser.parse(input, opt.parse_strict_semicolons); + + if (opt.mangle) { + ast = ujs.uglify.ast_mangle(ast, opt.mangle_toplevel); + } + + if (opt.squeeze) { + ast = ujs.uglify.ast_squeeze(ast, opt.squeeze_options); + if (opt.squeeze_more) { + ast = ujs.uglify.ast_squeeze_more(ast); + } + } + + return ujs.uglify.gen_code(ast, opt.beautify); +}; +copy.filter.uglifyjs.onRead = false; +/** + * UglifyJS filter options. + */ +copy.filter.uglifyjs.options = { + parse_strict_semicolons: false, + + /** + * The beautify argument used for process.gen_code(). See the UglifyJS + * documentation. + */ + beautify: false, + mangle: true, + mangle_toplevel: false, + squeeze: true, + + /** + * The options argument used for process.ast_squeeze(). See the UglifyJS + * documentation. + */ + squeeze_options: {}, + + /** + * Tells if you want to perform potentially unsafe compression. + */ + squeeze_more: false +}; + +/** + * A filter to munge CommonJS headers + */ +copy.filter.addDefines = function(input, source) { + if (typeof input !== 'string') { + input = input.toString(); + } + + if (!source) { + throw new Error('Missing filename for moduleDefines'); + } + + if (source.base) { + source = source.path; + } + + var module = source.replace(/\.css$/, ''); + + input = input.replace(/"/g, '\\"'); + input = '"' + input.replace(/\n/g, '" +\n "') + '"'; + + return 'define("text!' + source.toString() + '", ' + input + ');\n\n'; +}; +copy.filter.addDefines.onRead = true; + +/** + * + */ +copy.filter.base64 = function(input, source) { + if (typeof input === 'string') { + throw new Error('base64 filter needs to be the first in a filter set'); + } + + if (!source) { + throw new Error('Missing filename for moduleDefines'); + } + + if (source.base) { + source = source.path; + } + + if (source.substr(-4) === '.png') { + input = 'data:image/png;base64,' + input.toString('base64'); + } + else if (source.substr(-4) === '.gif') { + input = 'data:image/gif;base64,' + input.toString('base64'); + } + else { + throw new Error('Only gif/png supported by base64 filter: ' + source); + } + + return 'define("text!' + source + '", "' + input + '");\n\n'; +}; +copy.filter.base64.onRead = true; + +/** + * + */ +copy.filter.moduleDefines = function(input, source) { + if (typeof input !== 'string') { + input = input.toString(); + } + + if (!source) { + throw new Error('Missing filename for moduleDefines'); + } + + if (source.base) { + source = source.path; + } + source = source.replace(/\.js$/, ''); + + return input.replace(/\bdefine\(\s*function\(require,\s*exports,\s*module\)\s*\{/, + "define('" + source + "', function(require, exports, module) {"); +}; +copy.filter.moduleDefines.onRead = true; + + +exports.copy = copy; + + + + + + + + + + + +return exports; +}; + + + + + +var sys = require("sys"); +var fs = require("fs"); +var path = require("path"); +var util = require("util"); +var Step = require("step"); + + +function copy0(options, callback) { + var source = options.source; + var data = ""; + + if (typeof source == "function") { + source = source(options); + } + + if (typeof source == "string") { + source = [source]; + } else if (typeof options.source == "object") { + data = source.value || ""; + } + + var filters = options.filter || []; + if (typeof filters == "function") { + filters = [filters]; + } + + if (typeof dest == "string") { + var stat = fs.statSync(); + } + + // read the files + if (Array.isArray(source)) { + source.forEach(function(file) { + var stat = fs.statSync(file); + var result = fs.readFileSync(file); + + // execute the filters + filters.forEach(function(filter) { + filter(input, file); + }); + + data += result + "\n"; + }); + } + + // save the output + var dest = options.dest; + if (typeof dest == "string") { + fs.writeFileSync(dest, data); + } else { + dest.value = data; + } +} + + +var Builder = function Builder(appFolder) { + this.appFolder = appFolder; +}; + +Builder.prototype = { + DEBUG: false, + + /** + * Web application folder - the location where scripts, styles and resources + * are fetched from. + */ + appFolder: ".", + + /** + * Target build folder - the location where the packaged web application is + * saved to. + */ + buildFolder: "./build", + + /** + * The default folder and file modes (permissions for chmod). + */ + folderMode: 0755, + fileMode: 0644, + + /** + * Array holding regular expression patterns. When you add entire folders to + * your build you might want to skip certain files. + */ + ignoreFiles: [], + + log: sys.puts, + + debug: function(message) { + if (this.DEBUG) { + this.log(message); + } + }, + + /** + * Sets and creates the target build folder, asynchronously. + * + * @param string folder + * Tells the target folder where you want to save the packaged web + * application. + * + * @param function callback + * The callback you want executed after the folder is created. + * Callback arguments: + * string|Exception|Error error - Holds the error that occurred + * while trying to set the build folder. This is undefined|null + * when the operation was successful. + * + * Builder build - holds a reference to the build instance. + */ + setBuildFolder: function Builder_setBuildFolder(newFolder, callback) + { + var self = this; + + Step( + function checkFolder() { + path.exists(newFolder, this); + }, + + function makeFolder(exists) { + if (!exists) { + fs.mkdir(newFolder, self.folderMode, this); + } else { + return true; + } + }, + + function folderReady(err) { + if (!err) { + self.buildFolder = newFolder; + } + callback(err, self); + } + ); + }, + + /** + * Copy files from the web application folder to the target build folder. + * + * @param object|array|string aFiles + * Holds the list of files you want to copy to the target build + * folder. If this is a string, you copy only one file. If the + * argument is given as an object, keys are considered source files + * and values are considered target files - this allows you to copy + * files to different locations in the build folder, without + * maintaining the same structure as in the original folder. + * @param function callback + * The callback you want executed after the files are copied. The + * callback arguments are the same as for setBuildFolder(). + * @returns void + */ + copyFiles: function Builder_copyFiles(aFiles, callback) + { + var files = {}; + if (typeof aFiles == "string") { + files[aFiles] = aFiles; + } else if (Array.isArray(aFiles)) { + aFiles.forEach(function(file) { + files[file] = file; + }); + } else { + files = aFiles; + } + + var self = this; + + Step( + function copyFiles() { + var group = this.group(); + for (var file in files) { + fs_copyFile(self.appFolder + "/" + file, + self.buildFolder + "/" + files[file], + group()); + } + }, + + function filesReady(err) { + callback(err, self); + } + ); + }, + + /** + * Copy folders from the web application folder to the target build folder. + * + * @param object|array|string aFolders + * Holds the list of folders you want to copy to the target build + * folder. If this is a string, you copy only one folder. If the + * argument is given as an object, keys are considered source folders + * and values are considered target folders - this allows you to copy + * folders to different locations in the build folder, without + * maintaining the same structure as in the original folder. + * @param function callback + * The callback you want executed after the folders are copied. The + * callback arguments are the same as for setBuildFolder(). + * @param boolean [recursive=true] + * (Optional) True if you want to copy subfolders as well, false if + * you want to copy only the files contained in the folders given. + * Default is true. + * @returns void + */ + copyFolders: function Builder_copyFolders(aFolders, callback, recursive) + { + var folders = {}; + if (typeof aFolders == "string") { + folders[aFolders] = aFolders; + } else if (Array.isArray(aFolders)) { + folders.forEach(function(folder) { + folders[folder] = folder; + }); + } else { + folders = aFolders; + } + if (typeof recursive == "undefined") { + recursive = true; + } + + var self = this; + + Step( + function copyFolders() { + var group = this.group(); + for (var folder in folders) { + self.copyFolder(folder, folders[folder], group(), recursive); + } + }, + function foldersReady(err) { + callback(err, self); + } + ); + }, + + /** + * Copy one folder from the web application folder to the target build + * folder. + * + * @param string source + * The folder you want to copy. + * @param string [destination=source] + * The destination folder. By default this is the same as the source, + * but in the buildFolder. You can change the destination, relative + * to the buildFolder. + * @param function callback + * The callback you want executed after the folder is copied. The + * callback arguments are the same as for setBuildFolder(). + * @param boolean [recursive=true] + * (Optional) True if you want to copy the subfolders as well, false + * if you want to copy only the files contained in the given source + * folder. Default is true. + * @returns void + */ + copyFolder: function Builder_copyFolder() + { + var source, destination, recursive, callback; + switch (arguments.length) { + case 2: // source, callback + source = destination = arguments[0]; + callback = arguments[1]; + recursive = true; + break; + case 3: + // source, callback, recursive + // OR source, destination, callback + source = arguments[0]; + if (typeof arguments[1] == "function") { + destination = source; + callback = arguments[1]; + recursive = arguments[2]; + } else { + destination = arguments[1]; + callback = arguments[2]; + recursive = true; + } + break; + case 4: // source, destination, callback, recursive + source = arguments[0]; + destination = arguments[1]; + callback = arguments[2]; + recursive = arguments[3]; + break; + default: + throw new Error("Invalid arguments."); + } + + var self = this; + + // result from fs.readdir(), without . and .. + var readdir_files = []; + + var files = []; + var subfolders = []; + + Step( + function checkDestination() { + path.exists(self.buildFolder + "/" + destination, this); + }, + + function mkdir_destination(exists) { + if (!exists) { + fs.mkdir(self.buildFolder + "/" + destination, this); + } else { + return true; + } + }, + + function readdir_source(err) { + if (err) { + throw err; + } + + // find the files in the given source folder. + fs.readdir(self.appFolder + "/" + source, this); + }, + + function statFiles(err, result) { + if (err) { + throw err; + } + + var group = this.group(); + result.forEach(function(file) { + if (file != "." && file != ".." && + !self.shouldSkipFile("/" + source + "/" + file)) { + fs.stat(file, group()); + readdir_files.push(file); + } + }); + }, + + function copyFiles(err, stats) { + if (err) { + throw err; + } + + // separate files out from folders + stats.forEach(function(stat, index) { + if (stat.isDirectory()) { + subfolders.push(readdir_files[index]); + } else if (stat.isFile()) { + files.push(readdir_files[index]); + } + }); + + // copy the files + var group = this.group(); + files.forEach(function(file) { + fs_copyFile(self.appFolder + "/" + source + "/" + file, + self.buildFolder + "/" + destination + "/" + file, + group()); + }); + }, + + function copySubfolders(err) { + if (err) { + throw err; + } + + if (!recursive) { + return true; + } + + var group = this.group(); + subfolders.forEach(function(folder) { + self.copyFolder(source + "/" + folder, + destination + "/" + folder, + group(), true); + }); + }, + + function copyDone(err) { + callback(err, self); + } + ); + }, + + /** + * Tells if this builder should ignore a file, given the file name. The + * this.ignoreFiles array of regular expression patterns is used. + * + * @param string filename + * @returns boolean + * True if the file should be ignored, or false otherwise. + */ + shouldSkipFile: function Builder_shouldSkipFile(filename) + { + return this.ignoreFiles.some(function(pattern) { + return pattern.test(filename); + }); + } +}; + +Builder.executeManifest = function Builder_executeManifest(manifest, callback) { + return; // stub +}; + +var Script = function Script(build, filename) { + if (!build) { + throw new Error("The first argument must reference a dryice.Builder instance."); + } else if (!filename) { + throw new Error("The second argument must be the script file name."); + } + + this.build = build; + this.filename = filename; +}; + +Script.prototype = { + inputEncoding: "utf8", + outputEncoding: "utf8", + + /** + * List of functions or filter names that process each input file. + */ + inputFilters: [], + + /** + * List of functions or filter names that process the concatenated output + * file. + */ + outputFilters: [], + + /** + * Add files to the compiled script. + * + * @param array|string files + * @param function callback + * @returns void + */ + addFiles: function Builder_addFiles(files, callback) { + if (typeof files == "string") { + files = [files]; + } + + var self = this; + + Step( + function readFiles() { + var group = this.group(); + + files.forEach(function(file) { + fs.readFile(self.build.appFolder + "/" + file, + self.inputEncoding, group()); + }); + }, + + function filterFiles(err, data) { + if (err) { + throw err; + } + + for (var i = 0; i < data.length; i++) { + data[i] = self.executeFilters(self.inputFilters, data[i], + files[i]); + } + + self.output += data.join("\n"); + + return self; + }, + + callback + ); + }, + + run: function Builder_run(buildCallback) { + var self = this; + + Step( + function readFiles() { + var group = this.group(); + + self.input_files.forEach(function(file) { + fs.readFile(self.basedir + "/" + file, + self.input_encoding, group()); + }); + }, + + function filterInput(err, files) { + if (err) { + throw err; + } + + for (var i = 0; i < files.length; i++) { + files[i] = self.run_filters(self.input_filters, files[i], + self.input_files[i]); + } + + return files; + }, + + function postProcessOutput(err, output) { + if (err) { + throw err; + } + + output = output.join("\n"); + output = self.run_filters(self.output_filters, output); + + if (typeof self.output_file == "string") { + fs.writeFile(self.basedir + "/" + self.output_file, + output, self.output_encoding, this); + } else { + self.output_file.write(output); + self.output_file.end(); + return 1; + } + }, + + function buildComplete(err) { + buildCallback(err, self); + } + ); + }, + + /** + * Given an array of filters (functions or filter names), invoke these + * filters on the given input content. + * + * @param array filters + * @param string input + * @param string [filename] + * Optional filename, useful for some filters. + * @return string + * Final filtered output. + */ + executeFilters: function(filters, input, filename) { + filters.forEach(function(filter) { + if (typeof filter == "string") { + input = input_filters[filter].call(this, input, filename); + } else { + input = filter.call(this, input, filename); + } + }, this); + return input; + } +}; + + diff --git a/Readme.md b/Readme.md index 5d7f84c8..161852a0 100644 --- a/Readme.md +++ b/Readme.md @@ -1,6 +1,6 @@ -ACE (Ajax.org Code Editor) +ACE (Ajax.org Cloud9 Editor) ========================== -ACE is a standalone code editor written in JavaScript. It can be easily embedded in any web page and JavaScript application. It is currently used as the editor component of the [Cloud9 IDE](http://cloud9ide.com). +ACE is a standalone code editor written in JavaScript. It can be easily embedded in any web page and JavaScript application. It is developed as the editor component for the [Cloud9 IDE](http://cloud9ide.com). Checkout the [demo](http://ajaxorg.github.com/ace/editor-build.html)! diff --git a/build.js b/build.js deleted file mode 100644 index f36f6851..00000000 --- a/build.js +++ /dev/null @@ -1,114 +0,0 @@ -{ - baseUrl: "lib", - dir: "build", - - paths: { - "ace": "ace", - "demo": "../demo", - "cockpit": "../support/cockpit/lib/cockpit", - "pilot": "../support/cockpit/support/pilot/lib/pilot" - }, - - //- "closure": uses Google's Closure Compiler in simple optimization - //mode to minify the code. - //- "closure.keepLines": Same as closure option, but keeps line returns - //in the minified files. - //- "none": no minification will be done. - optimize: "closure.keepLines", - //optimize: "none", - inlineText: true, - useStrict: false, - - pragmas: { - jquery: false, - requireExcludeModify: true, - requireExcludePlugin: false, - requireExcludePageLoad: false - }, - - skipPragmas: false, - execModules: false, - skipModuleInsertion: false, - - modules: [ - { - name: "demo/boot", - include: [ - "pilot/fixoldbrowsers", - "pilot/plugin_manager", - "pilot/settings", - "pilot/environment", - "pilot/index", - "cockpit/index", - "demo/startup" - ] - }, - /*{ - name: "demo/startup", - includeRequire: false, - include: [ - "pilot/fixoldbrowsers" - ] - }, - { - name: "ace/editor", - include: [ - "ace/document", - "ace/undomanager", - "ace/virtual_renderer", - - "ace/mode/javascript", - "ace/theme/textmate" - ], - includeRequire: false - },*/ - { - name: "ace/theme/eclipse", - exclude: [ - "pilot/lang", - "pilot/dom", - "pilot/oop" - ] - }, - { - name: "ace/mode/xml", - exclude: [ - "pilot/oop", - "ace/tokenizer", - "ace/mode/text" - ] - }, - { - name: "ace/mode/css", - exclude: [ - "pilot/oop", - "pilot/lang", - "ace/tokenizer", - "ace/range", - "ace/mode/text" - ] - }, - { - name: "ace/mode/html", - exclude: [ - "pilot/oop", - "pilot/lang", - "ace/tokenizer", - "ace/range", - "ace/mode/text", - "ace/mode/javascript", - "ace/mode/css", - ] - }, - { - name: "ace/mode/python", - exclude: [ - "pilot/oop", - "pilot/lang", - "ace/tokenizer", - "ace/range", - "ace/mode/text" - ] - } - ] -} \ No newline at end of file diff --git a/build/ace/background_tokenizer.js b/build/ace/background_tokenizer.js deleted file mode 100644 index d913fca1..00000000 --- a/build/ace/background_tokenizer.js +++ /dev/null @@ -1,79 +0,0 @@ -define(function(f, i) { - var j = f("pilot/oop"), k = f("pilot/event_emitter").EventEmitter; - f = function(a, c) { - this.running = false; - this.textLines = []; - this.lines = []; - this.currentLine = 0; - this.tokenizer = a; - var b = this; - this.$worker = function() { - if(b.running) { - for(var e = new Date, g = b.currentLine, d = b.textLines, h = 0, l = c.getLastVisibleRow();b.currentLine < d.length;) { - b.lines[b.currentLine] = b.$tokenizeRows(b.currentLine, b.currentLine)[0]; - b.currentLine++; - h += 1; - if(h % 5 == 0 && new Date - e > 20) { - b.fireUpdateEvent(g, b.currentLine - 1); - b.running = setTimeout(b.$worker, b.currentLine < l ? 20 : 100); - return - } - }b.running = false; - b.fireUpdateEvent(g, d.length - 1) - } - } - }; - (function() { - j.implement(this, k); - this.setTokenizer = function(a) { - this.tokenizer = a; - this.lines = []; - this.start(0) - }; - this.setLines = function(a) { - this.textLines = a; - this.lines = []; - this.stop() - }; - this.fireUpdateEvent = function(a, c) { - this._dispatchEvent("update", {data:{first:a, last:c}}) - }; - this.start = function(a) { - this.currentLine = Math.min(a || 0, this.currentLine, this.textLines.length); - this.lines.splice(this.currentLine, this.lines.length); - this.stop(); - this.running = setTimeout(this.$worker, 700) - }; - this.stop = function() { - this.running && clearTimeout(this.running); - this.running = false - }; - this.getTokens = function(a, c, b) { - b(this.$tokenizeRows(a, c)) - }; - this.getState = function(a, c) { - c(this.$tokenizeRows(a, a)[0].state) - }; - this.$tokenizeRows = function(a, c) { - var b = [], e = "start", g = false; - if(a > 0 && this.lines[a - 1]) { - e = this.lines[a - 1].state; - g = true - }for(a = a;a <= c;a++) { - if(this.lines[a]) { - d = this.lines[a]; - e = d.state; - b.push(d) - }else { - var d = this.tokenizer.getLineTokens(this.textLines[a] || "", e); - e = d.state; - b.push(d); - if(g) { - this.lines[a] = d - } - } - }return b - } - }).call(f.prototype); - i.BackgroundTokenizer = f -}); \ No newline at end of file diff --git a/build/ace/commands/default_commands.js b/build/ace/commands/default_commands.js deleted file mode 100644 index 2341aa26..00000000 --- a/build/ace/commands/default_commands.js +++ /dev/null @@ -1,152 +0,0 @@ -define(function(b) { - b = b("pilot/canon"); - b.addCommand({name:"selectall", exec:function(a) { - a.editor.getSelection().selectAll() - }}); - b.addCommand({name:"removeline", exec:function(a) { - a.editor.removeLines() - }}); - b.addCommand({name:"gotoline", exec:function(a) { - var c = parseInt(prompt("Enter line number:")); - isNaN(c) || a.editor.gotoLine(c) - }}); - b.addCommand({name:"togglecomment", exec:function(a) { - a.editor.toggleCommentLines() - }}); - b.addCommand({name:"findnext", exec:function(a) { - a.editor.findNext() - }}); - b.addCommand({name:"findprevious", exec:function(a) { - a.editor.findPrevious() - }}); - b.addCommand({name:"find", exec:function(a) { - var c = prompt("Find:"); - a.editor.find(c) - }}); - b.addCommand({name:"undo", exec:function(a) { - a.editor.undo() - }}); - b.addCommand({name:"redo", exec:function(a) { - a.editor.redo() - }}); - b.addCommand({name:"redo", exec:function(a) { - a.editor.redo() - }}); - b.addCommand({name:"overwrite", exec:function(a) { - a.editor.toggleOverwrite() - }}); - b.addCommand({name:"copylinesup", exec:function(a) { - a.editor.copyLinesUp() - }}); - b.addCommand({name:"movelinesup", exec:function(a) { - a.editor.moveLinesUp() - }}); - b.addCommand({name:"selecttostart", exec:function(a) { - a.editor.getSelection().selectFileStart() - }}); - b.addCommand({name:"gotostart", exec:function(a) { - a.editor.navigateFileStart() - }}); - b.addCommand({name:"selectup", exec:function(a) { - a.editor.getSelection().selectUp() - }}); - b.addCommand({name:"golineup", exec:function(a) { - a.editor.navigateUp() - }}); - b.addCommand({name:"copylinesdown", exec:function(a) { - a.editor.copyLinesDown() - }}); - b.addCommand({name:"movelinesdown", exec:function(a) { - a.editor.moveLinesDown() - }}); - b.addCommand({name:"selecttoend", exec:function(a) { - a.editor.getSelection().selectFileEnd() - }}); - b.addCommand({name:"gotoend", exec:function(a) { - a.editor.navigateFileEnd() - }}); - b.addCommand({name:"selectdown", exec:function(a) { - a.editor.getSelection().selectDown() - }}); - b.addCommand({name:"godown", exec:function(a) { - a.editor.navigateDown() - }}); - b.addCommand({name:"selectwordleft", exec:function(a) { - a.editor.getSelection().selectWordLeft() - }}); - b.addCommand({name:"gotowordleft", exec:function(a) { - a.editor.navigateWordLeft() - }}); - b.addCommand({name:"selecttolinestart", exec:function(a) { - a.editor.getSelection().selectLineStart() - }}); - b.addCommand({name:"gotolinestart", exec:function(a) { - a.editor.navigateLineStart() - }}); - b.addCommand({name:"selectleft", exec:function(a) { - a.editor.getSelection().selectLeft() - }}); - b.addCommand({name:"gotoleft", exec:function(a) { - a.editor.navigateLeft() - }}); - b.addCommand({name:"selectwordright", exec:function(a) { - a.editor.getSelection().selectWordRight() - }}); - b.addCommand({name:"gotowordright", exec:function(a) { - a.editor.navigateWordRight() - }}); - b.addCommand({name:"selecttolineend", exec:function(a) { - a.editor.getSelection().selectLineEnd() - }}); - b.addCommand({name:"gotolineend", exec:function(a) { - a.editor.navigateLineEnd() - }}); - b.addCommand({name:"selectright", exec:function(a) { - a.editor.getSelection().selectRight() - }}); - b.addCommand({name:"gotoright", exec:function(a) { - a.editor.navigateRight() - }}); - b.addCommand({name:"selectpagedown", exec:function(a) { - a.editor.selectPageDown() - }}); - b.addCommand({name:"pagedown", exec:function(a) { - a.editor.scrollPageDown() - }}); - b.addCommand({name:"gotopagedown", exec:function(a) { - a.editor.gotoPageDown() - }}); - b.addCommand({name:"selectpageup", exec:function(a) { - a.editor.selectPageUp() - }}); - b.addCommand({name:"pageup", exec:function(a) { - a.editor.scrollPageUp() - }}); - b.addCommand({name:"gotopageup", exec:function(a) { - a.editor.gotoPageUp() - }}); - b.addCommand({name:"selectlinestart", exec:function(a) { - a.editor.getSelection().selectLineStart() - }}); - b.addCommand({name:"gotolinestart", exec:function(a) { - a.editor.navigateLineStart() - }}); - b.addCommand({name:"selectlineend", exec:function(a) { - a.editor.getSelection().selectLineEnd() - }}); - b.addCommand({name:"gotolineend", exec:function(a) { - a.editor.navigateLineEnd() - }}); - b.addCommand({name:"del", exec:function(a) { - a.editor.removeRight() - }}); - b.addCommand({name:"backspace", exec:function(a) { - a.editor.removeLeft() - }}); - b.addCommand({name:"outdent", exec:function(a) { - a.editor.blockOutdent() - }}); - b.addCommand({name:"indent", exec:function(a) { - a.editor.indent() - }}) -}); \ No newline at end of file diff --git a/build/ace/conf/keybindings/default_mac.js b/build/ace/conf/keybindings/default_mac.js deleted file mode 100644 index 057e7405..00000000 --- a/build/ace/conf/keybindings/default_mac.js +++ /dev/null @@ -1,5 +0,0 @@ -define(function(b, a) { - a.bindings = {selectall:"Command-A", removeline:"Command-D", gotoline:"Command-L", togglecomment:"Command-7", findnext:"Command-K", findprevious:"Command-Shift-K", find:"Command-F", replace:"Command-R", undo:"Command-Z", redo:"Command-Shift-Z|Command-Y", overwrite:"Insert", copylinesup:"Command-Option-Up", movelinesup:"Option-Up", selecttostart:"Command-Shift-Up", gotostart:"Command-Home|Command-Up", selectup:"Shift-Up", golineup:"Up", copylinesdown:"Command-Option-Down", movelinesdown:"Option-Down", - selecttoend:"Command-Shift-Down", gotoend:"Command-End|Command-Down", selectdown:"Shift-Down", godown:"Down", selectwordleft:"Option-Shift-Left", gotowordleft:"Option-Left", selecttolinestart:"Command-Shift-Left", gotolinestart:"Command-Left|Home", selectleft:"Shift-Left", gotoleft:"Left", selectwordright:"Option-Shift-Right", gotowordright:"Option-Right", selecttolineend:"Command-Shift-Right", gotolineend:"Command-Right|End", selectright:"Shift-Right", gotoright:"Right", selectpagedown:"Shift-PageDown", - pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", selectlineend:"Shift-End", del:"Delete", backspace:"Ctrl-Backspace|Command-Backspace|Option-Backspace|Backspace", outdent:"Shift-Tab", indent:"Tab"} -}); \ No newline at end of file diff --git a/build/ace/conf/keybindings/default_win.js b/build/ace/conf/keybindings/default_win.js deleted file mode 100644 index 60ff898f..00000000 --- a/build/ace/conf/keybindings/default_win.js +++ /dev/null @@ -1,5 +0,0 @@ -define(function(b, a) { - a.bindings = {selectall:"Ctrl-A", removeline:"Ctrl-D", gotoline:"Ctrl-L", togglecomment:"Ctrl-7", findnext:"Ctrl-K", findprevious:"Ctrl-Shift-K", find:"Ctrl-F", replace:"Ctrl-R", undo:"Ctrl-Z", redo:"Ctrl-Shift-Z|Ctrl-Y", overwrite:"Insert", copylinesup:"Ctrl-Alt-Up", movelinesup:"Alt-Up", selecttostart:"Alt-Shift-Up", gotostart:"Ctrl-Home|Ctrl-Up", selectup:"Shift-Up", golineup:"Up", copylinesdown:"Ctrl-Alt-Down", movelinesdown:"Alt-Down", selecttoend:"Alt-Shift-Down", gotoend:"Ctrl-End|Ctrl-Down", - selectdown:"Shift-Down", godown:"Down", selectwordleft:"Ctrl-Shift-Left", gotowordleft:"Ctrl-Left", selecttolinestart:"Alt-Shift-Left", gotolinestart:"Alt-Left|Home", selectleft:"Shift-Left", gotoleft:"Left", selectwordright:"Ctrl-Shift-Right", gotowordright:"Ctrl-Right", selecttolineend:"Alt-Shift-Right", gotolineend:"Alt-Right|End", selectright:"Shift-Right", gotoright:"Right", selectpagedown:"Shift-PageDown", pagedown:"PageDown", selectpageup:"Shift-PageUp", pageup:"PageUp", selectlinestart:"Shift-Home", - selectlineend:"Shift-End", del:"Delete", backspace:"Backspace", outdent:"Shift-Tab", indent:"Tab"} -}); \ No newline at end of file diff --git a/build/ace/css/editor.css b/build/ace/css/editor.css deleted file mode 100644 index b8125397..00000000 --- a/build/ace/css/editor.css +++ /dev/null @@ -1,71 +0,0 @@ -.ace_editor { - position: absolute; - overflow: hidden; - font-family: "Menlo", "Monaco", "Courier New", monospace; - font-size: 12px; -} -.ace_scroller { - position: absolute; - overflow-x: scroll; - overflow-y: hidden; -} -.ace_gutter { - position: absolute; - overflow-x: hidden; - overflow-y: hidden; - height: 100%; -} -.ace_editor .ace_sb { - position: absolute; - overflow-x: hidden; - overflow-y: scroll; - right: 0; -} -.ace_editor .ace_sb div { - position: absolute; - width: 1px; - left: 0px; -} -.ace_editor .ace_printMargin { - position: absolute; - height: 100%; -} -.ace_layer { - z-index: 0; - position: absolute; - overflow: hidden; - white-space: nowrap; - height: 100%; -} -.ace_text-layer { - font-family: Monaco, "Courier New", monospace; - color: black; -} -.ace_cursor-layer { - cursor: text; -} -.ace_cursor { - z-index: 3; - position: absolute; -} -.ace_line { - white-space: nowrap; -} -.ace_marker-layer { -} -.ace_marker-layer .ace_step { - position: absolute; - z-index: 2; -} -.ace_marker-layer .ace_selection { - position: absolute; - z-index: 3; -} -.ace_marker-layer .ace_bracket { - position: absolute; - z-index: 4; -} -.ace_marker-layer .ace_active_line { - position: absolute; - z-index: 1; -} diff --git a/build/ace/document.js b/build/ace/document.js deleted file mode 100644 index 64257f27..00000000 --- a/build/ace/document.js +++ /dev/null @@ -1,494 +0,0 @@ -define(function(i, l) { - var m = i("pilot/oop"), k = i("pilot/lang"), n = i("pilot/event_emitter").EventEmitter, o = i("ace/selection").Selection, p = i("ace/mode/text").Mode, j = i("ace/range").Range; - i = function(a, b) { - this.modified = true; - this.lines = []; - this.selection = new o(this); - this.$breakpoints = []; - this.listeners = []; - b && this.setMode(b); - Array.isArray(a) ? this.$insertLines(0, a) : this.$insert({row:0, column:0}, a) - }; - (function() { - m.implement(this, n); - this.$undoManager = null; - this.$split = function(a) { - return a.split(/\r\n|\r|\n/) - }; - this.setValue = function(a) { - var b = [0, this.lines.length]; - b.push.apply(b, this.$split(a)); - this.lines.splice.apply(this.lines, b); - this.modified = true; - this.fireChangeEvent(0) - }; - this.toString = function() { - return this.lines.join(this.$getNewLineCharacter()) - }; - this.getSelection = function() { - return this.selection - }; - this.fireChangeEvent = function(a, b) { - this._dispatchEvent("change", {data:{firstRow:a, lastRow:b}}) - }; - this.setUndoManager = function(a) { - this.$undoManager = a; - this.$deltas = []; - this.$informUndoManager && this.$informUndoManager.cancel(); - if(a) { - var b = this; - this.$informUndoManager = k.deferredCall(function() { - b.$deltas.length > 0 && a.execute({action:"aceupdate", args:[b.$deltas, b]}); - b.$deltas = [] - }) - } - }; - this.$defaultUndoManager = {undo:function() { - }, redo:function() { - }}; - this.getUndoManager = function() { - return this.$undoManager || this.$defaultUndoManager - }; - this.getTabString = function() { - return this.getUseSoftTabs() ? k.stringRepeat(" ", this.getTabSize()) : "\t" - }; - this.$useSoftTabs = true; - this.setUseSoftTabs = function(a) { - if(this.$useSoftTabs !== a) { - this.$useSoftTabs = a - } - }; - this.getUseSoftTabs = function() { - return this.$useSoftTabs - }; - this.$tabSize = 4; - this.setTabSize = function(a) { - if(!(isNaN(a) || this.$tabSize === a)) { - this.modified = true; - this.$tabSize = a; - this._dispatchEvent("changeTabSize") - } - }; - this.getTabSize = function() { - return this.$tabSize - }; - this.isTabStop = function(a) { - return this.$useSoftTabs && a.column % this.$tabSize == 0 - }; - this.getBreakpoints = function() { - return this.$breakpoints - }; - this.setBreakpoints = function(a) { - this.$breakpoints = []; - for(var b = 0;b < a.length;b++) { - this.$breakpoints[a[b]] = true - }this._dispatchEvent("changeBreakpoint", {}) - }; - this.clearBreakpoints = function() { - this.$breakpoints = []; - this._dispatchEvent("changeBreakpoint", {}) - }; - this.setBreakpoint = function(a) { - this.$breakpoints[a] = true; - this._dispatchEvent("changeBreakpoint", {}) - }; - this.clearBreakpoint = function(a) { - delete this.$breakpoints[a]; - this._dispatchEvent("changeBreakpoint", {}) - }; - this.$detectNewLine = function(a) { - this.$autoNewLine = (a = a.match(/^.*?(\r?\n)/m)) ? a[1] : "\n" - }; - this.tokenRe = /^[\w\d]+/g; - this.nonTokenRe = /^[^\w\d]+/g; - this.getWordRange = function(a, b) { - var c = this.getLine(a), d = false; - if(b > 0) { - d = !!c.charAt(b - 1).match(this.tokenRe) - }d || (d = !!c.charAt(b).match(this.tokenRe)); - d = d ? this.tokenRe : this.nonTokenRe; - var e = b; - if(e > 0) { - do { - e-- - }while(e >= 0 && c.charAt(e).match(d)); - e++ - }for(b = b;b < c.length && c.charAt(b).match(d);) { - b++ - }return new j(a, e, a, b) - }; - this.$getNewLineCharacter = function() { - switch(this.$newLineMode) { - case "windows": - return"\r\n"; - case "unix": - return"\n"; - case "auto": - return this.$autoNewLine - } - }; - this.$autoNewLine = "\n"; - this.$newLineMode = "auto"; - this.setNewLineMode = function(a) { - if(this.$newLineMode !== a) { - this.$newLineMode = a - } - }; - this.getNewLineMode = function() { - return this.$newLineMode - }; - this.$mode = null; - this.setMode = function(a) { - if(this.$mode !== a) { - this.$mode = a; - this._dispatchEvent("changeMode") - } - }; - this.getMode = function() { - if(!this.$mode) { - this.$mode = new p - }return this.$mode - }; - this.$scrollTop = 0; - this.setScrollTopRow = function(a) { - if(this.$scrollTop !== a) { - this.$scrollTop = a; - this._dispatchEvent("changeScrollTop") - } - }; - this.getScrollTopRow = function() { - return this.$scrollTop - }; - this.getWidth = function() { - this.$computeWidth(); - return this.width - }; - this.getScreenWidth = function() { - this.$computeWidth(); - return this.screenWidth - }; - this.$computeWidth = function() { - if(this.modified) { - this.modified = false; - for(var a = this.lines, b = 0, c = 0, d = this.getTabSize(), e = 0;e < a.length;e++) { - var f = a[e].length; - b = Math.max(b, f); - a[e].replace("\t", function(g) { - f += d - 1; - return g - }); - c = Math.max(c, f) - }this.width = b; - this.screenWidth = c - } - }; - this.getLine = function(a) { - return this.lines[a] || "" - }; - this.getDisplayLine = function(a) { - var b = (new Array(this.getTabSize() + 1)).join(" "); - return this.lines[a].replace(/\t/g, b) - }; - this.getLines = function(a, b) { - return this.lines.slice(a, b + 1) - }; - this.getLength = function() { - return this.lines.length - }; - this.getTextRange = function(a) { - if(a.start.row == a.end.row) { - return this.lines[a.start.row].substring(a.start.column, a.end.column) - }else { - var b = []; - b.push(this.lines[a.start.row].substring(a.start.column)); - b.push.apply(b, this.getLines(a.start.row + 1, a.end.row - 1)); - b.push(this.lines[a.end.row].substring(0, a.end.column)); - return b.join(this.$getNewLineCharacter()) - } - }; - this.findMatchingBracket = function(a) { - if(a.column == 0) { - return null - }var b = this.getLine(a.row).charAt(a.column - 1); - if(b == "") { - return null - }b = b.match(/([\(\[\{])|([\)\]\}])/); - if(!b) { - return null - }return b[1] ? this.$findClosingBracket(b[1], a) : this.$findOpeningBracket(b[2], a) - }; - this.$brackets = {")":"(", "(":")", "]":"[", "[":"]", "{":"}", "}":"{"}; - this.$findOpeningBracket = function(a, b) { - var c = this.$brackets[a], d = b.column - 2; - b = b.row; - for(var e = 1, f = this.getLine(b);;) { - for(;d >= 0;) { - var g = f.charAt(d); - if(g == c) { - e -= 1; - if(e == 0) { - return{row:b, column:d} - } - }else { - if(g == a) { - e += 1 - } - }d -= 1 - }b -= 1; - if(b < 0) { - break - }f = this.getLine(b); - d = f.length - 1 - }return null - }; - this.$findClosingBracket = function(a, b) { - var c = this.$brackets[a], d = b.column; - b = b.row; - for(var e = 1, f = this.getLine(b), g = this.getLength();;) { - for(;d < f.length;) { - var h = f.charAt(d); - if(h == c) { - e -= 1; - if(e == 0) { - return{row:b, column:d} - } - }else { - if(h == a) { - e += 1 - } - }d += 1 - }b += 1; - if(b >= g) { - break - }f = this.getLine(b); - d = 0 - }return null - }; - this.insert = function(a, b, c) { - b = this.$insert(a, b, c); - this.fireChangeEvent(a.row, a.row == b.row ? a.row : undefined); - return b - }; - this.multiRowInsert = function(a, b, c) { - for(var d = this.lines, e = a.length - 1;e >= 0;e--) { - var f = a[e]; - if(!(f >= d.length)) { - var g = b - d[f].length; - if(g > 0) { - var h = k.stringRepeat(" ", g) + c; - g = -g - }else { - h = c; - g = 0 - }h = this.$insert({row:f, column:b + g}, h, false) - } - }if(h) { - this.fireChangeEvent(a[0], a[a.length - 1] + h.row - a[0]); - return{rows:h.row - a[0], columns:h.column - b} - }else { - return{rows:0, columns:0} - } - }; - this.$insertLines = function(a, b, c) { - if(b.length != 0) { - var d = [a, 0]; - d.push.apply(d, b); - this.lines.splice.apply(this.lines, d); - if(!c && this.$undoManager) { - c = this.$getNewLineCharacter(); - this.$deltas.push({action:"insertText", range:new j(a, 0, a + b.length, 0), text:b.join(c) + c}); - this.$informUndoManager.schedule() - } - } - }; - this.$insert = function(a, b, c) { - if(b.length == 0) { - return a - }this.modified = true; - this.lines.length <= 1 && this.$detectNewLine(b); - var d = this.$split(b); - if(this.$isNewLine(b)) { - var e = this.lines[a.row] || ""; - this.lines[a.row] = e.substring(0, a.column); - this.lines.splice(a.row + 1, 0, e.substring(a.column)); - d = {row:a.row + 1, column:0} - }else { - if(d.length == 1) { - e = this.lines[a.row] || ""; - this.lines[a.row] = e.substring(0, a.column) + b + e.substring(a.column); - d = {row:a.row, column:a.column + b.length} - }else { - e = this.lines[a.row] || ""; - var f = e.substring(0, a.column) + d[0]; - e = d[d.length - 1] + e.substring(a.column); - this.lines[a.row] = f; - this.$insertLines(a.row + 1, [e], true); - d.length > 2 && this.$insertLines(a.row + 1, d.slice(1, -1), true); - d = {row:a.row + d.length - 1, column:d[d.length - 1].length} - } - }if(!c && this.$undoManager) { - this.$deltas.push({action:"insertText", range:j.fromPoints(a, d), text:b}); - this.$informUndoManager.schedule() - }return d - }; - this.$isNewLine = function(a) { - return a == "\r\n" || a == "\r" || a == "\n" - }; - this.remove = function(a, b) { - if(a.isEmpty()) { - return a.start - }this.$remove(a, b); - this.fireChangeEvent(a.start.row, a.isMultiLine() ? undefined : a.start.row); - return a.start - }; - this.multiRowRemove = function(a, b) { - if(b.start.row !== a[0]) { - throw new TypeError("range must start in the first row!"); - }for(var c = b.end.row - a[0], d = a.length - 1;d >= 0;d--) { - var e = a[d]; - if(!(e >= this.lines.length)) { - var f = this.$remove(new j(e, b.start.column, e + c, b.end.column), false) - } - }if(f) { - c < 0 ? this.fireChangeEvent(a[0] + c, undefined) : this.fireChangeEvent(a[0], c == 0 ? a[a.length - 1] : undefined) - } - }; - this.$remove = function(a, b) { - if(!a.isEmpty()) { - if(!b && this.$undoManager) { - this.$getNewLineCharacter(); - this.$deltas.push({action:"removeText", range:a.clone(), text:this.getTextRange(a)}); - this.$informUndoManager.schedule() - }this.modified = true; - b = a.start.row; - var c = a.end.row, d = this.getLine(b).substring(0, a.start.column) + this.getLine(c).substring(a.end.column); - d != "" ? this.lines.splice(b, c - b + 1, d) : this.lines.splice(b, c - b + 1, ""); - return a.start - } - }; - this.undoChanges = function(a) { - this.selection.clearSelection(); - for(var b = a.length - 1;b >= 0;b--) { - var c = a[b]; - if(c.action == "insertText") { - this.remove(c.range, true); - this.selection.moveCursorToPosition(c.range.start) - }else { - this.insert(c.range.start, c.text, true); - this.selection.clearSelection() - } - } - }; - this.redoChanges = function(a) { - this.selection.clearSelection(); - for(var b = 0;b < a.length;b++) { - var c = a[b]; - if(c.action == "insertText") { - this.insert(c.range.start, c.text, true); - this.selection.setSelectionRange(c.range) - }else { - this.remove(c.range, true); - this.selection.moveCursorToPosition(c.range.start) - } - } - }; - this.replace = function(a, b) { - this.$remove(a); - b = b ? this.$insert(a.start, b) : a.start; - var c = a.end.column == 0 ? a.end.column - 1 : a.end.column; - this.fireChangeEvent(a.start.row, c == b.row ? c : undefined); - return b - }; - this.indentRows = function(a, b, c) { - c = c.replace("\t", this.getTabString()); - for(var d = a;d <= b;d++) { - this.$insert({row:d, column:0}, c) - }this.fireChangeEvent(a, b); - return c.length - }; - this.outdentRows = function(a) { - for(var b = a.collapseRows(), c = new j(0, 0, 0, 0), d = this.getTabSize(), e = b.start.row;e <= b.end.row;++e) { - var f = this.getLine(e); - c.start.row = e; - c.end.row = e; - for(var g = 0;g < d;++g) { - if(f.charAt(g) != " ") { - break - } - }if(g < d && f.charAt(g) == "\t") { - c.start.column = g; - c.end.column = g + 1 - }else { - c.start.column = 0; - c.end.column = g - }if(e == a.start.row) { - a.start.column -= c.end.column - c.start.column - }if(e == a.end.row) { - a.end.column -= c.end.column - c.start.column - }this.$remove(c) - }this.fireChangeEvent(a.start.row, a.end.row); - return a - }; - this.moveLinesUp = function(a, b) { - if(a <= 0) { - return 0 - }var c = this.lines.slice(a, b + 1); - this.$remove(new j(a - 1, this.lines[a - 1].length, b, this.lines[b].length)); - this.$insertLines(a - 1, c); - this.fireChangeEvent(a - 1, b); - return-1 - }; - this.moveLinesDown = function(a, b) { - if(b >= this.lines.length - 1) { - return 0 - }var c = this.lines.slice(a, b + 1); - this.$remove(new j(a, 0, b + 1, 0)); - this.$insertLines(a + 1, c); - this.fireChangeEvent(a, b + 1); - return 1 - }; - this.duplicateLines = function(a, b) { - a = this.$clipRowToDocument(a); - b = this.$clipRowToDocument(b); - var c = this.getLines(a, b); - this.$insertLines(a, c); - b = b - a + 1; - this.fireChangeEvent(a); - return b - }; - this.$clipRowToDocument = function(a) { - return Math.max(0, Math.min(a, this.lines.length - 1)) - }; - this.documentToScreenColumn = function(a, b) { - var c = this.getTabSize(), d = 0; - b = b; - a = this.getLine(a).split("\t"); - for(var e = 0;e < a.length;e++) { - var f = a[e].length; - if(b > f) { - b -= f + 1; - d += f + c - }else { - d += b; - break - } - }return d - }; - this.screenToDocumentColumn = function(a, b) { - var c = this.getTabSize(), d = 0; - b = b; - a = this.getLine(a).split("\t"); - for(var e = 0;e < a.length;e++) { - var f = a[e].length; - if(b >= f + c) { - b -= f + c; - d += f + 1 - }else { - d += b > f ? f : b; - break - } - }return d - } - }).call(i.prototype); - l.Document = i -}); \ No newline at end of file diff --git a/build/ace/editor.js b/build/ace/editor.js deleted file mode 100644 index ddb61d34..00000000 --- a/build/ace/editor.js +++ /dev/null @@ -1,672 +0,0 @@ -define(function(g, r) { - var s = g("pilot/oop"), e = g("pilot/event"), t = g("pilot/lang"), u = g("ace/textinput").TextInput, v = g("ace/keybinding").KeyBinding, w = g("ace/document").Document, x = g("ace/search").Search, y = g("ace/background_tokenizer").BackgroundTokenizer, o = g("ace/range").Range, z = g("pilot/event_emitter").EventEmitter; - g = function(a, b) { - var d = a.getContainerElement(); - this.container = d; - this.renderer = a; - this.textInput = new u(d, this); - this.keyBinding = new v(d, this); - var c = this; - e.addListener(d, "mousedown", function(i) { - setTimeout(function() { - c.focus() - }); - return e.preventDefault(i) - }); - e.addListener(d, "selectstart", function(i) { - return e.preventDefault(i) - }); - a = a.getMouseEventTarget(); - e.addListener(a, "mousedown", this.onMouseDown.bind(this)); - e.addMultiMouseDownListener(a, 0, 2, 500, this.onMouseDoubleClick.bind(this)); - e.addMultiMouseDownListener(a, 0, 3, 600, this.onMouseTripleClick.bind(this)); - e.addMouseWheelListener(a, this.onMouseWheel.bind(this)); - this.$highlightLineMarker = this.$selectionMarker = null; - this.$blockScrolling = false; - this.$search = (new x).set({wrap:true}); - this.setDocument(b || new w("")); - this.focus() - }; - (function() { - s.implement(this, z); - this.$forwardEvents = {gutterclick:1, gutterdblclick:1}; - this.$originalAddEventListener = this.addEventListener; - this.$originalRemoveEventListener = this.removeEventListener; - this.addEventListener = function(a, b) { - return this.$forwardEvents[a] ? this.renderer.addEventListener(a, b) : this.$originalAddEventListener(a, b) - }; - this.removeEventListener = function(a, b) { - return this.$forwardEvents[a] ? this.renderer.removeEventListener(a, b) : this.$originalRemoveEventListener(a, b) - }; - this.setDocument = function(a) { - if(this.doc != a) { - if(this.doc) { - this.doc.removeEventListener("change", this.$onDocumentChange); - this.doc.removeEventListener("changeMode", this.$onDocumentModeChange); - this.doc.removeEventListener("changeTabSize", this.$onDocumentChangeTabSize); - this.doc.removeEventListener("changeBreakpoint", this.$onDocumentChangeBreakpoint); - var b = this.doc.getSelection(); - b.removeEventListener("changeCursor", this.$onCursorChange); - b.removeEventListener("changeSelection", this.$onSelectionChange); - this.doc.setScrollTopRow(this.renderer.getScrollTopRow()) - }this.doc = a; - this.$onDocumentChange = this.onDocumentChange.bind(this); - a.addEventListener("change", this.$onDocumentChange); - this.renderer.setDocument(a); - this.$onDocumentModeChange = this.onDocumentModeChange.bind(this); - a.addEventListener("changeMode", this.$onDocumentModeChange); - this.$onDocumentChangeTabSize = this.renderer.updateText.bind(this.renderer); - a.addEventListener("changeTabSize", this.$onDocumentChangeTabSize); - this.$onDocumentChangeBreakpoint = this.onDocumentChangeBreakpoint.bind(this); - this.doc.addEventListener("changeBreakpoint", this.$onDocumentChangeBreakpoint); - this.selection = a.getSelection(); - this.$desiredColumn = 0; - this.$onCursorChange = this.onCursorChange.bind(this); - this.selection.addEventListener("changeCursor", this.$onCursorChange); - this.$onSelectionChange = this.onSelectionChange.bind(this); - this.selection.addEventListener("changeSelection", this.$onSelectionChange); - this.onDocumentModeChange(); - this.bgTokenizer.setLines(this.doc.lines); - this.bgTokenizer.start(0); - this.onCursorChange(); - this.onSelectionChange(); - this.onDocumentChangeBreakpoint(); - this.renderer.scrollToRow(a.getScrollTopRow()); - this.renderer.updateFull() - } - }; - this.getDocument = function() { - return this.doc - }; - this.getSelection = function() { - return this.selection - }; - this.resize = function() { - this.renderer.onResize() - }; - this.setTheme = function(a) { - this.renderer.setTheme(a) - }; - this.$highlightBrackets = function() { - if(this.$bracketHighlight) { - this.renderer.removeMarker(this.$bracketHighlight); - this.$bracketHighlight = null - }if(!this.$highlightPending) { - var a = this; - this.$highlightPending = true; - setTimeout(function() { - a.$highlightPending = false; - var b = a.doc.findMatchingBracket(a.getCursorPosition()); - if(b) { - b = new o(b.row, b.column, b.row, b.column + 1); - a.$bracketHighlight = a.renderer.addMarker(b, "ace_bracket") - } - }, 10) - } - }; - this.focus = function() { - this.textInput.focus() - }; - this.blur = function() { - this.textInput.blur() - }; - this.onFocus = function() { - this.renderer.showCursor(); - this.renderer.visualizeFocus() - }; - this.onBlur = function() { - this.renderer.hideCursor(); - this.renderer.visualizeBlur() - }; - this.onDocumentChange = function(a) { - a = a.data; - this.bgTokenizer.start(a.firstRow); - this.renderer.updateLines(a.firstRow, a.lastRow); - this.renderer.updateCursor(this.getCursorPosition(), this.$overwrite) - }; - this.onTokenizerUpdate = function(a) { - a = a.data; - this.renderer.updateLines(a.first, a.last) - }; - this.onCursorChange = function(a) { - this.$highlightBrackets(); - this.renderer.updateCursor(this.getCursorPosition(), this.$overwrite); - if(!this.$blockScrolling && (!a || !a.blockScrolling)) { - this.renderer.scrollCursorIntoView() - }this.$updateHighlightActiveLine() - }; - this.$updateHighlightActiveLine = function() { - this.$highlightLineMarker && this.renderer.removeMarker(this.$highlightLineMarker); - this.$highlightLineMarker = null; - if(this.getHighlightActiveLine() && (this.getSelectionStyle() != "line" || !this.selection.isMultiLine())) { - var a = this.getCursorPosition(); - this.$highlightLineMarker = this.renderer.addMarker(new o(a.row, 0, a.row + 1, 0), "ace_active_line", "line") - } - }; - this.onSelectionChange = function(a) { - this.$selectionMarker && this.renderer.removeMarker(this.$selectionMarker); - this.$selectionMarker = null; - if(!this.selection.isEmpty()) { - var b = this.selection.getRange(), d = this.getSelectionStyle(); - this.$selectionMarker = this.renderer.addMarker(b, "ace_selection", d) - }this.onCursorChange(a) - }; - this.onDocumentChangeBreakpoint = function() { - this.renderer.setBreakpoints(this.doc.getBreakpoints()) - }; - this.onDocumentModeChange = function() { - var a = this.doc.getMode(); - if(this.mode != a) { - this.mode = a; - a = a.getTokenizer(); - if(this.bgTokenizer) { - this.bgTokenizer.setTokenizer(a) - }else { - var b = this.onTokenizerUpdate.bind(this); - this.bgTokenizer = new y(a, this); - this.bgTokenizer.addEventListener("update", b) - }this.renderer.setTokenizer(this.bgTokenizer) - } - }; - this.onMouseDown = function(a) { - var b = e.getDocumentX(a), d = e.getDocumentY(a); - b = this.renderer.screenToTextCoordinates(b, d); - b.row = Math.max(0, Math.min(b.row, this.doc.getLength() - 1)); - if(e.getButton(a) != 0) { - this.selection.isEmpty() && this.moveCursorToPosition(b) - }else { - if(a.shiftKey) { - this.selection.selectToPosition(b) - }else { - this.moveCursorToPosition(b); - this.$clickSelection || this.selection.clearSelection(b.row, b.column) - }this.renderer.scrollCursorIntoView(); - var c = this, i, n; - e.capture(this.container, function(h) { - i = e.getDocumentX(h); - n = e.getDocumentY(h) - }, function() { - clearInterval(f); - c.$clickSelection = null - }); - var f = setInterval(function() { - if(!(i === undefined || n === undefined)) { - var h = c.renderer.screenToTextCoordinates(i, n); - h.row = Math.max(0, Math.min(h.row, c.doc.getLength() - 1)); - if(c.$clickSelection) { - if(c.$clickSelection.contains(h.row, h.column)) { - c.selection.setSelectionRange(c.$clickSelection) - }else { - var j = c.$clickSelection.compare(h.row, h.column) == -1 ? c.$clickSelection.end : c.$clickSelection.start; - c.selection.setSelectionAnchor(j.row, j.column); - c.selection.selectToPosition(h) - } - }else { - c.selection.selectToPosition(h) - }c.renderer.scrollCursorIntoView() - } - }, 20); - return e.preventDefault(a) - } - }; - this.onMouseDoubleClick = function() { - this.selection.selectWord(); - this.$clickSelection = this.getSelectionRange(); - this.$updateDesiredColumn() - }; - this.onMouseTripleClick = function() { - this.selection.selectLine(); - this.$clickSelection = this.getSelectionRange(); - this.$updateDesiredColumn() - }; - this.onMouseWheel = function(a) { - var b = this.$scrollSpeed * 2; - this.renderer.scrollBy(a.wheelX * b, a.wheelY * b); - return e.preventDefault(a) - }; - this.getCopyText = function() { - return this.selection.isEmpty() ? "" : this.doc.getTextRange(this.getSelectionRange()) - }; - this.onCut = function() { - if(!this.$readOnly) { - if(!this.selection.isEmpty()) { - this.moveCursorToPosition(this.doc.remove(this.getSelectionRange())); - this.clearSelection() - } - } - }; - this.onTextInput = function(a) { - if(!this.$readOnly) { - var b = this.getCursorPosition(); - a = a.replace("\t", this.doc.getTabString()); - if(this.selection.isEmpty()) { - if(this.$overwrite) { - var d = new o.fromPoints(b, b); - d.end.column += a.length; - this.doc.remove(d) - } - }else { - b = this.doc.remove(this.getSelectionRange()); - this.clearSelection() - }this.clearSelection(); - var c = this; - this.bgTokenizer.getState(b.row, function(i) { - var n = c.mode.checkOutdent(i, c.doc.getLine(b.row), a), f = c.doc.getLine(b.row), h = c.mode.getNextLineIndent(i, f.slice(0, b.column), c.doc.getTabString()), j = c.doc.insert(b, a); - c.bgTokenizer.getState(b.row, function(p) { - if(b.row !== j.row) { - p = c.doc.getTabSize(); - for(var q = Number.MAX_VALUE, l = b.row + 1;l <= j.row;++l) { - var m = 0; - f = c.doc.getLine(l); - for(var k = 0;k < f.length;++k) { - if(f.charAt(k) == "\t") { - m += p - }else { - if(f.charAt(k) == " ") { - m += 1 - }else { - break - } - } - }if(/[^\s]/.test(f)) { - q = Math.min(m, q) - } - }for(l = b.row + 1;l <= j.row;++l) { - m = q; - f = c.doc.getLine(l); - for(k = 0;k < f.length && m > 0;++k) { - if(f.charAt(k) == "\t") { - m -= p - }else { - if(f.charAt(k) == " ") { - m -= 1 - } - } - }c.doc.replace(new o(l, 0, l, f.length), f.substr(k)) - }j.column += c.doc.indentRows(b.row + 1, j.row, h) - }else { - if(n) { - j.column += c.mode.autoOutdent(p, c.doc, b.row) - } - }c.moveCursorToPosition(j); - c.renderer.scrollCursorIntoView() - }) - }) - } - }; - this.$overwrite = false; - this.setOverwrite = function(a) { - if(this.$overwrite != a) { - this.$overwrite = a; - this.$blockScrolling = true; - this.onCursorChange(); - this.$blockScrolling = false; - this._dispatchEvent("changeOverwrite", {data:a}) - } - }; - this.getOverwrite = function() { - return this.$overwrite - }; - this.toggleOverwrite = function() { - this.setOverwrite(!this.$overwrite) - }; - this.$scrollSpeed = 1; - this.setScrollSpeed = function(a) { - this.$scrollSpeed = a - }; - this.getScrollSpeed = function() { - return this.$scrollSpeed - }; - this.$selectionStyle = "line"; - this.setSelectionStyle = function(a) { - if(this.$selectionStyle != a) { - this.$selectionStyle = a; - this.onSelectionChange(); - this._dispatchEvent("changeSelectionStyle", {data:a}) - } - }; - this.getSelectionStyle = function() { - return this.$selectionStyle - }; - this.$highlightActiveLine = true; - this.setHighlightActiveLine = function(a) { - if(this.$highlightActiveLine != a) { - this.$highlightActiveLine = a; - this.$updateHighlightActiveLine() - } - }; - this.getHighlightActiveLine = function() { - return this.$highlightActiveLine - }; - this.setShowInvisibles = function(a) { - this.getShowInvisibles() != a && this.renderer.setShowInvisibles(a) - }; - this.getShowInvisibles = function() { - return this.renderer.getShowInvisibles() - }; - this.setShowPrintMargin = function(a) { - this.renderer.setShowPrintMargin(a) - }; - this.getShowPrintMargin = function() { - return this.renderer.getShowPrintMargin() - }; - this.setPrintMarginColumn = function(a) { - this.renderer.setPrintMarginColumn(a) - }; - this.getPrintMarginColumn = function() { - return this.renderer.getPrintMarginColumn() - }; - this.$readOnly = false; - this.setReadOnly = function(a) { - this.$readOnly = a - }; - this.getReadOnly = function() { - return this.$readOnly - }; - this.removeRight = function() { - if(!this.$readOnly) { - this.selection.isEmpty() && this.selection.selectRight(); - this.moveCursorToPosition(this.doc.remove(this.getSelectionRange())); - this.clearSelection() - } - }; - this.removeLeft = function() { - if(!this.$readOnly) { - this.selection.isEmpty() && this.selection.selectLeft(); - this.moveCursorToPosition(this.doc.remove(this.getSelectionRange())); - this.clearSelection() - } - }; - this.indent = function() { - if(!this.$readOnly) { - var a = this.doc, b = this.getSelectionRange(); - if(b.start.row < b.end.row || b.start.column < b.end.column) { - b = this.$getSelectedRows(); - a = a.indentRows(b.first, b.last, "\t"); - this.selection.shiftSelection(a) - }else { - if(this.doc.getUseSoftTabs()) { - b = a.getTabSize(); - var d = this.getCursorPosition(); - a = a.documentToScreenColumn(d.row, d.column); - a = b - a % b; - a = t.stringRepeat(" ", a) - }else { - a = "\t" - }return this.onTextInput(a) - } - } - }; - this.blockOutdent = function() { - if(!this.$readOnly) { - var a = this.doc.getSelection(), b = this.doc.outdentRows(a.getRange()); - a.setSelectionRange(b, a.isBackwards()); - this.$updateDesiredColumn() - } - }; - this.toggleCommentLines = function() { - if(!this.$readOnly) { - var a = this; - this.bgTokenizer.getState(this.getCursorPosition().row, function(b) { - var d = a.$getSelectedRows(); - b = a.mode.toggleCommentLines(b, a.doc, d.first, d.last); - a.selection.shiftSelection(b) - }) - } - }; - this.removeLines = function() { - if(!this.$readOnly) { - var a = this.$getSelectedRows(); - this.selection.setSelectionAnchor(a.last + 1, 0); - this.selection.selectTo(a.first, 0); - this.doc.remove(this.getSelectionRange()); - this.clearSelection() - } - }; - this.moveLinesDown = function() { - this.$readOnly || this.$moveLines(function(a, b) { - return this.doc.moveLinesDown(a, b) - }) - }; - this.moveLinesUp = function() { - this.$readOnly || this.$moveLines(function(a, b) { - return this.doc.moveLinesUp(a, b) - }) - }; - this.copyLinesUp = function() { - this.$readOnly || this.$moveLines(function(a, b) { - this.doc.duplicateLines(a, b); - return 0 - }) - }; - this.copyLinesDown = function() { - this.$readOnly || this.$moveLines(function(a, b) { - return this.doc.duplicateLines(a, b) - }) - }; - this.$moveLines = function(a) { - var b = this.$getSelectedRows(), d = a.call(this, b.first, b.last), c = this.selection; - c.setSelectionAnchor(b.last + d + 1, 0); - c.$moveSelection(function() { - c.moveCursorTo(b.first + d, 0) - }) - }; - this.$getSelectedRows = function() { - var a = this.getSelectionRange().collapseRows(); - return{first:a.start.row, last:a.end.row} - }; - this.onCompositionStart = function() { - this.renderer.showComposition(this.getCursorPosition()) - }; - this.onCompositionUpdate = function(a) { - this.renderer.setCompositionText(a) - }; - this.onCompositionEnd = function() { - this.renderer.hideComposition() - }; - this.getFirstVisibleRow = function() { - return this.renderer.getFirstVisibleRow() - }; - this.getLastVisibleRow = function() { - return this.renderer.getLastVisibleRow() - }; - this.isRowVisible = function(a) { - return a >= this.getFirstVisibleRow() && a <= this.getLastVisibleRow() - }; - this.getVisibleRowCount = function() { - return this.getLastVisibleRow() - this.getFirstVisibleRow() + 1 - }; - this.getPageDownRow = function() { - return this.renderer.getLastVisibleRow() - 1 - }; - this.getPageUpRow = function() { - var a = this.renderer.getFirstVisibleRow(), b = this.renderer.getLastVisibleRow(); - return a - (b - a) + 1 - }; - this.selectPageDown = function() { - var a = this.getPageDownRow() + Math.floor(this.getVisibleRowCount() / 2); - this.scrollPageDown(); - var b = this.getSelection(); - b.$moveSelection(function() { - b.moveCursorTo(a, b.getSelectionLead().column) - }) - }; - this.selectPageUp = function() { - var a = this.getLastVisibleRow() - this.getFirstVisibleRow(), b = this.getPageUpRow() + Math.round(a / 2); - this.scrollPageUp(); - var d = this.getSelection(); - d.$moveSelection(function() { - d.moveCursorTo(b, d.getSelectionLead().column) - }) - }; - this.gotoPageDown = function() { - var a = this.getPageDownRow(), b = Math.min(this.getCursorPosition().column, this.doc.getLine(a).length); - this.scrollToRow(a); - this.getSelection().moveCursorTo(a, b) - }; - this.gotoPageUp = function() { - var a = this.getPageUpRow(), b = Math.min(this.getCursorPosition().column, this.doc.getLine(a).length); - this.scrollToRow(a); - this.getSelection().moveCursorTo(a, b) - }; - this.scrollPageDown = function() { - this.scrollToRow(this.getPageDownRow()) - }; - this.scrollPageUp = function() { - this.renderer.scrollToRow(this.getPageUpRow()) - }; - this.scrollToRow = function(a) { - this.renderer.scrollToRow(a) - }; - this.getCursorPosition = function() { - return this.selection.getCursor() - }; - this.getSelectionRange = function() { - return this.selection.getRange() - }; - this.clearSelection = function() { - this.selection.clearSelection(); - this.$updateDesiredColumn() - }; - this.moveCursorTo = function(a, b) { - this.selection.moveCursorTo(a, b); - this.$updateDesiredColumn() - }; - this.moveCursorToPosition = function(a) { - this.selection.moveCursorToPosition(a); - this.$updateDesiredColumn() - }; - this.gotoLine = function(a, b) { - this.selection.clearSelection(); - this.$blockScrolling = true; - this.moveCursorTo(a - 1, b || 0); - this.$blockScrolling = false; - this.isRowVisible(this.getCursorPosition().row) || this.scrollToRow(a - 1 - Math.floor(this.getVisibleRowCount() / 2)) - }; - this.navigateTo = function(a, b) { - this.clearSelection(); - this.moveCursorTo(a, b); - this.$updateDesiredColumn(b) - }; - this.navigateUp = function() { - this.selection.clearSelection(); - this.selection.moveCursorBy(-1, 0); - if(this.$desiredColumn) { - var a = this.getCursorPosition(), b = this.doc.screenToDocumentColumn(a.row, this.$desiredColumn); - this.selection.moveCursorTo(a.row, b) - } - }; - this.navigateDown = function() { - this.selection.clearSelection(); - this.selection.moveCursorBy(1, 0); - if(this.$desiredColumn) { - var a = this.getCursorPosition(), b = this.doc.screenToDocumentColumn(a.row, this.$desiredColumn); - this.selection.moveCursorTo(a.row, b) - } - }; - this.$updateDesiredColumn = function() { - var a = this.getCursorPosition(); - this.$desiredColumn = this.doc.documentToScreenColumn(a.row, a.column) - }; - this.navigateLeft = function() { - this.selection.isEmpty() ? this.selection.moveCursorLeft() : this.moveCursorToPosition(this.getSelectionRange().start); - this.clearSelection() - }; - this.navigateRight = function() { - this.selection.isEmpty() ? this.selection.moveCursorRight() : this.moveCursorToPosition(this.getSelectionRange().end); - this.clearSelection() - }; - this.navigateLineStart = function() { - this.selection.moveCursorLineStart(); - this.clearSelection() - }; - this.navigateLineEnd = function() { - this.selection.moveCursorLineEnd(); - this.clearSelection() - }; - this.navigateFileEnd = function() { - this.selection.moveCursorFileEnd(); - this.clearSelection() - }; - this.navigateFileStart = function() { - this.selection.moveCursorFileStart(); - this.clearSelection() - }; - this.navigateWordRight = function() { - this.selection.moveCursorWordRight(); - this.clearSelection() - }; - this.navigateWordLeft = function() { - this.selection.moveCursorWordLeft(); - this.clearSelection() - }; - this.replace = function(a, b) { - b && this.$search.set(b); - b = this.$search.find(this.doc); - this.$tryReplace(b, a); - b !== null && this.selection.setSelectionRange(b); - this.$updateDesiredColumn() - }; - this.replaceAll = function(a, b) { - b && this.$search.set(b); - b = this.$search.findAll(this.doc); - if(b.length) { - this.clearSelection(); - this.selection.moveCursorTo(0, 0); - for(var d = b.length - 1;d >= 0;--d) { - this.$tryReplace(b[d], a) - }b[0] !== null && this.selection.setSelectionRange(b[0]); - this.$updateDesiredColumn() - } - }; - this.$tryReplace = function(a, b) { - b = this.$search.replace(this.doc.getTextRange(a), b); - if(b !== null) { - a.end = this.doc.replace(a, b); - return a - }else { - return null - } - }; - this.getLastSearchOptions = function() { - return this.$search.getOptions() - }; - this.find = function(a, b) { - this.clearSelection(); - b = b || {}; - b.needle = a; - this.$search.set(b); - this.$find() - }; - this.findNext = function(a) { - a = a || {}; - if(typeof a.backwards == "undefined") { - a.backwards = false - }this.$search.set(a); - this.$find() - }; - this.findPrevious = function(a) { - a = a || {}; - if(typeof a.backwards == "undefined") { - a.backwards = true - }this.$search.set(a); - this.$find() - }; - this.$find = function(a) { - this.selection.isEmpty() || this.$search.set({needle:this.doc.getTextRange(this.getSelectionRange())}); - typeof a != "undefined" && this.$search.set({backwards:a}); - if(a = this.$search.find(this.doc)) { - this.gotoLine(a.end.row + 1, a.end.column); - this.$updateDesiredColumn(); - this.selection.setSelectionRange(a) - } - }; - this.undo = function() { - this.doc.getUndoManager().undo() - }; - this.redo = function() { - this.doc.getUndoManager().redo() - } - }).call(g.prototype); - r.Editor = g -}); \ No newline at end of file diff --git a/build/ace/keybinding.js b/build/ace/keybinding.js deleted file mode 100644 index 6da92ea6..00000000 --- a/build/ace/keybinding.js +++ /dev/null @@ -1,55 +0,0 @@ -define(function(e, n) { - var j = e("pilot/useragent"), m = e("pilot/event"), o = e("ace/conf/keybindings/default_mac").bindings, p = e("ace/conf/keybindings/default_win").bindings, q = e("pilot/canon"); - e("ace/commands/default_commands"); - e = function(k, i, l) { - this.setConfig(l); - var b = this; - m.addKeyListener(k, function(a) { - var d = (b.config.reverse[j.isOpera && j.isMac ? 0 | (a.metaKey ? 1 : 0) | (a.altKey ? 2 : 0) | (a.shiftKey ? 4 : 0) | (a.ctrlKey ? 8 : 0) : 0 | (a.ctrlKey ? 1 : 0) | (a.altKey ? 2 : 0) | (a.shiftKey ? 4 : 0) | (a.metaKey ? 8 : 0)] || {})[(b.keyNames[a.keyCode] || String.fromCharCode(a.keyCode)).toLowerCase()]; - if(q.exec(d, {editor:i})) { - return m.stopEvent(a) - } - }) - }; - (function() { - function k(b, a, d, f) { - return(f && b.toLowerCase() || b).replace(/(?:^\s+|\n|\s+$)/g, "").split(new RegExp("[\\s ]*" + a + "[\\s ]*", "g"), d || 999) - } - function i(b, a, d) { - var f, g = 0; - b = k(b, "\\-", null, true); - for(var c = 0, h = b.length;c < h;++c) { - if(this.keyMods[b[c]]) { - g |= this.keyMods[b[c]] - }else { - f = b[c] || "-" - } - }(d[g] || (d[g] = {}))[f] = a; - return d - } - function l(b, a) { - var d, f, g, c, h = {}; - for(d in b) { - c = b[d]; - if(a && typeof c == "string") { - c = c.split(a); - f = 0; - for(g = c.length;f < g;++f) { - i.call(this, c[f], d, h) - } - }else { - i.call(this, c, d, h) - } - }return h - } - this.keyMods = {ctrl:1, alt:2, option:2, shift:4, meta:8, command:8}; - this.keyNames = {"8":"Backspace", "9":"Tab", "13":"Enter", "27":"Esc", "32":"Space", "33":"PageUp", "34":"PageDown", "35":"End", "36":"Home", "37":"Left", "38":"Up", "39":"Right", "40":"Down", "45":"Insert", "46":"Delete", "107":"+", "112":"F1", "113":"F2", "114":"F3", "115":"F4", "116":"F5", "117":"F6", "118":"F7", "119":"F8", "120":"F9", "121":"F10", "122":"F11", "123":"F12"}; - this.setConfig = function(b) { - this.config = b || (j.isMac ? o : p); - if(typeof this.config.reverse == "undefined") { - this.config.reverse = l.call(this, this.config, "|") - } - } - }).call(e.prototype); - n.KeyBinding = e -}); \ No newline at end of file diff --git a/build/ace/layer/cursor.js b/build/ace/layer/cursor.js deleted file mode 100644 index df23345c..00000000 --- a/build/ace/layer/cursor.js +++ /dev/null @@ -1,63 +0,0 @@ -define(function(b, f) { - var d = b("pilot/dom"); - b = function(a) { - this.element = document.createElement("div"); - this.element.className = "ace_layer ace_cursor-layer"; - a.appendChild(this.element); - this.cursor = document.createElement("div"); - this.cursor.className = "ace_cursor"; - this.isVisible = false - }; - (function() { - this.setDocument = function(a) { - this.doc = a - }; - this.setCursor = function(a, c) { - this.position = {row:a.row, column:this.doc.documentToScreenColumn(a.row, a.column)}; - c ? d.addCssClass(this.cursor, "ace_overwrite") : d.removeCssClass(this.cursor, "ace_overwrite") - }; - this.hideCursor = function() { - this.isVisible = false; - this.cursor.parentNode && this.cursor.parentNode.removeChild(this.cursor); - clearInterval(this.blinkId) - }; - this.showCursor = function() { - this.isVisible = true; - this.element.appendChild(this.cursor); - this.cursor.style.visibility = "visible"; - this.restartTimer() - }; - this.restartTimer = function() { - clearInterval(this.blinkId); - if(this.isVisible) { - var a = this.cursor; - this.blinkId = setInterval(function() { - a.style.visibility = "hidden"; - setTimeout(function() { - a.style.visibility = "visible" - }, 400) - }, 1E3) - } - }; - this.getPixelPosition = function() { - if(!this.config || !this.position) { - return{left:0, top:0} - }var a = this.position.row * this.config.lineHeight; - return{left:Math.round(this.position.column * this.config.characterWidth), top:a} - }; - this.update = function(a) { - if(this.position) { - this.config = a; - var c = Math.round(this.position.column * a.characterWidth), e = this.position.row * a.lineHeight; - this.pixelPos = {left:c, top:e}; - this.cursor.style.left = c + "px"; - this.cursor.style.top = e - a.firstRow * a.lineHeight + "px"; - this.cursor.style.width = a.characterWidth + "px"; - this.cursor.style.height = a.lineHeight + "px"; - this.isVisible && this.element.appendChild(this.cursor); - this.restartTimer() - } - } - }).call(b.prototype); - f.Cursor = b -}); \ No newline at end of file diff --git a/build/ace/layer/gutter.js b/build/ace/layer/gutter.js deleted file mode 100644 index 24021d6c..00000000 --- a/build/ace/layer/gutter.js +++ /dev/null @@ -1,31 +0,0 @@ -define(function(d, e) { - var f = d("pilot/dom"); - d = function(a) { - this.element = document.createElement("div"); - this.element.className = "ace_layer ace_gutter-layer"; - a.appendChild(this.element); - this.$breakpoints = []; - this.$decorations = [] - }; - (function() { - this.addGutterDecoration = function(a, b) { - this.$decorations[a] || (this.$decorations[a] = ""); - this.$decorations[a] += " ace_" + b - }; - this.removeGutterDecoration = function(a, b) { - this.$decorations[a] = this.$decorations[a].replace(" ace_" + b, "") - }; - this.setBreakpoints = function(a) { - this.$breakpoints = a.concat() - }; - this.update = function(a) { - this.$config = a; - for(var b = [], c = a.firstRow;c <= a.lastRow;c++) { - b.push("
", c + 1, "
"); - b.push("") - }this.element = f.setInnerHtml(this.element, b.join("")); - this.element.style.height = a.minHeight + "px" - } - }).call(d.prototype); - e.Gutter = d -}); \ No newline at end of file diff --git a/build/ace/layer/marker.js b/build/ace/layer/marker.js deleted file mode 100644 index b2960ea9..00000000 --- a/build/ace/layer/marker.js +++ /dev/null @@ -1,74 +0,0 @@ -define(function(h, j) { - var i = h("ace/range").Range, k = h("pilot/dom"); - h = function(d) { - this.element = document.createElement("div"); - this.element.className = "ace_layer ace_marker-layer"; - d.appendChild(this.element); - this.markers = {}; - this.$markerId = 1 - }; - (function() { - this.setDocument = function(d) { - this.doc = d - }; - this.addMarker = function(d, a, e) { - var b = this.$markerId++; - this.markers[b] = {range:d, type:e || "line", clazz:a}; - return b - }; - this.removeMarker = function(d) { - this.markers[d] && delete this.markers[d] - }; - this.update = function(d) { - if(d = d || this.config) { - this.config = d; - var a = []; - for(var e in this.markers) { - var b = this.markers[e], c = b.range.clipRows(d.firstRow, d.lastRow); - if(!c.isEmpty()) { - if(c.isMultiLine()) { - b.type == "text" ? this.drawTextMarker(a, c, b.clazz, d) : this.drawMultiLineMarker(a, c, b.clazz, d) - }else { - this.drawSingleLineMarker(a, c, b.clazz, d) - } - } - }this.element = k.setInnerHtml(this.element, a.join("")) - } - }; - this.drawTextMarker = function(d, a, e, b) { - var c = a.start.row, f = new i(c, a.start.column, c, this.doc.getLine(c).length); - this.drawSingleLineMarker(d, f, e, b, 1); - c = a.end.row; - f = new i(c, 0, c, a.end.column); - this.drawSingleLineMarker(d, f, e, b); - for(c = a.start.row + 1;c < a.end.row;c++) { - f.start.row = c; - f.end.row = c; - f.end.column = this.doc.getLine(c).length; - this.drawSingleLineMarker(d, f, e, b, 1) - } - }; - this.drawMultiLineMarker = function(d, a, e, b) { - a = a.toScreenRange(this.doc); - var c = b.lineHeight, f = Math.round(b.width - a.start.column * b.characterWidth), g = (a.start.row - b.firstRow) * b.lineHeight, l = Math.round(a.start.column * b.characterWidth); - d.push("
"); - g = (a.end.row - b.firstRow) * b.lineHeight; - f = Math.round(a.end.column * b.characterWidth); - d.push("
"); - c = (a.end.row - a.start.row - 1) * b.lineHeight; - if(!(c < 0)) { - g = (a.start.row + 1 - b.firstRow) * b.lineHeight; - d.push("
") - } - }; - this.drawSingleLineMarker = function(d, a, e, b, c) { - a = a.toScreenRange(this.doc); - var f = b.lineHeight; - c = Math.round((a.end.column + (c || 0) - a.start.column) * b.characterWidth); - var g = (a.start.row - b.firstRow) * b.lineHeight; - a = Math.round(a.start.column * b.characterWidth); - d.push("
") - } - }).call(h.prototype); - j.Marker = h -}); \ No newline at end of file diff --git a/build/ace/layer/text.js b/build/ace/layer/text.js deleted file mode 100644 index afbc4ab3..00000000 --- a/build/ace/layer/text.js +++ /dev/null @@ -1,162 +0,0 @@ -define(function(k, n) { - var o = k("pilot/oop"), l = k("pilot/dom"), p = k("pilot/lang"), q = k("pilot/event_emitter").EventEmitter; - k = function(a) { - this.element = document.createElement("div"); - this.element.className = "ace_layer ace_text-layer"; - a.appendChild(this.element); - this.$characterSize = this.$measureSizes(); - this.$pollSizeChanges() - }; - (function() { - o.implement(this, q); - this.EOF_CHAR = "¶"; - this.EOL_CHAR = "¬"; - this.TAB_CHAR = "→"; - this.SPACE_CHAR = "·"; - this.setTokenizer = function(a) { - this.tokenizer = a - }; - this.getLineHeight = function() { - return this.$characterSize.height || 1 - }; - this.getCharacterWidth = function() { - return this.$characterSize.width || 1 - }; - this.$pollSizeChanges = function() { - var a = this; - setInterval(function() { - var b = a.$measureSizes(); - if(a.$characterSize.width !== b.width || a.$characterSize.height !== b.height) { - a.$characterSize = b; - a._dispatchEvent("changeCharaterSize", {data:b}) - } - }, 500) - }; - this.$fontStyles = {fontFamily:1, fontSize:1, fontWeight:1, fontStyle:1, lineHeight:1}; - this.$measureSizes = function() { - if(!this.$measureNode) { - var a = this.$measureNode = document.createElement("div"), b = a.style; - b.width = b.height = "auto"; - b.left = b.top = "-1000px"; - b.visibility = "hidden"; - b.position = "absolute"; - b.overflow = "visible"; - b.whiteSpace = "nowrap"; - a.innerHTML = p.stringRepeat("Xy", 1E3); - document.body.insertBefore(a, document.body.firstChild) - }b = this.$measureNode.style; - for(var e in this.$fontStyles) { - a = l.computedStyle(this.element, e); - b[e] = a - }return{height:this.$measureNode.offsetHeight, width:this.$measureNode.offsetWidth / 2E3} - }; - this.setDocument = function(a) { - this.doc = a - }; - this.showInvisibles = false; - this.setShowInvisibles = function(a) { - if(this.showInvisibles == a) { - return false - }this.showInvisibles = a; - return true - }; - this.$computeTabString = function() { - var a = this.doc.getTabSize(); - if(this.showInvisibles) { - a = a / 2; - this.$tabString = "" + (new Array(Math.floor(a))).join(" ") + this.TAB_CHAR + (new Array(Math.ceil(a) + 1)).join(" ") + "" - }else { - this.$tabString = (new Array(a + 1)).join(" ") - } - }; - this.updateLines = function(a, b, e) { - this.$computeTabString(); - this.config = a; - var g = Math.max(b, a.firstRow), c = Math.min(e, a.lastRow), d = this.element.childNodes, h = this; - this.tokenizer.getTokens(g, c, function(i) { - for(var f = g;f <= c;f++) { - var j = d[f - a.firstRow]; - if(j) { - var m = []; - h.$renderLine(m, f, i[f - g].tokens); - l.setInnerHtml(j, m.join("")) - } - } - }) - }; - this.scrollLines = function(a) { - function b(i) { - a.firstRow < c.firstRow ? g.$renderLinesFragment(a, a.firstRow, c.firstRow - 1, function(f) { - d.firstChild ? d.insertBefore(f, d.firstChild) : d.appendChild(f); - i() - }) : i() - } - function e() { - a.lastRow > c.lastRow && g.$renderLinesFragment(a, c.lastRow + 1, a.lastRow, function(i) { - d.appendChild(i) - }) - } - var g = this; - this.$computeTabString(); - var c = this.config; - this.config = a; - if(!c || c.lastRow < a.firstRow) { - return this.update(a) - }if(a.lastRow < c.firstRow) { - return this.update(a) - }var d = this.element; - if(c.firstRow < a.firstRow) { - for(var h = c.firstRow;h < a.firstRow;h++) { - d.removeChild(d.firstChild) - } - }if(c.lastRow > a.lastRow) { - for(h = a.lastRow + 1;h <= c.lastRow;h++) { - d.removeChild(d.lastChild) - } - }b(e) - }; - this.$renderLinesFragment = function(a, b, e, g) { - var c = document.createDocumentFragment(), d = this; - this.tokenizer.getTokens(b, e, function(h) { - for(var i = b;i <= e;i++) { - var f = document.createElement("div"); - f.className = "ace_line"; - var j = f.style; - j.height = d.$characterSize.height + "px"; - j.width = a.width + "px"; - j = []; - d.$renderLine(j, i, h[i - b].tokens); - f.innerHTML = j.join(""); - c.appendChild(f) - }g(c) - }) - }; - this.update = function(a) { - this.$computeTabString(); - this.config = a; - var b = [], e = this; - this.tokenizer.getTokens(a.firstRow, a.lastRow, function(g) { - for(var c = a.firstRow;c <= a.lastRow;c++) { - b.push("
"); - e.$renderLine(b, c, g[c - a.firstRow].tokens); - b.push("
") - }e.element = l.setInnerHtml(e.element, b.join("")) - }) - }; - this.$textToken = {text:true, rparen:true, lparen:true}; - this.$renderLine = function(a, b, e) { - for(var g = /[\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]/g, c = 0;c < e.length;c++) { - var d = e[c], h = d.value.replace(/&/g, "&").replace(/", h, "") - } - }if(this.showInvisibles) { - b !== this.doc.getLength() - 1 ? a.push("" + this.EOL_CHAR + "") : a.push("" + this.EOF_CHAR + "") - } - } - }).call(k.prototype); - n.Text = k -}); \ No newline at end of file diff --git a/build/ace/mode/css.js b/build/ace/mode/css.js deleted file mode 100644 index aa9499fe..00000000 --- a/build/ace/mode/css.js +++ /dev/null @@ -1,80 +0,0 @@ -define("ace/mode/css_highlight_rules", ["require", "exports", "module", "pilot/oop", "pilot/lang", "ace/mode/text_highlight_rules"], function(b, j) { - var k = b("pilot/oop"), c = b("pilot/lang"); - b = b("ace/mode/text_highlight_rules").TextHighlightRules; - var e = function() { - function a(d) { - var m = []; - d = d.split(""); - for(var l = 0;l < d.length;l++) { - m.push("[", d[l].toLowerCase(), d[l].toUpperCase(), "]") - }return m.join("") - } - var f = c.arrayToMap("azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|-moz-border-radius|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|")), - g = c.arrayToMap("rgb|rgba|url|attr|counter|counters".split("|")), h = c.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")), - i = c.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")); - this.$rules = {start:[{token:"comment", regex:"\\/\\*", next:"comment"}, {token:"string", regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'}, {token:"string", regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("em")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("ex")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("px")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + - a("cm")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("mm")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("in")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("pt")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("pc")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("deg")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + - a("rad")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("grad")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("ms")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("s")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("hz")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("khz")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))%"}, - {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"}, {token:"constant.numeric", regex:"#[a-fA-F0-9]{6}"}, {token:"constant.numeric", regex:"#[a-fA-F0-9]{3}"}, {token:"lparen", regex:"{"}, {token:"rparen", regex:"}"}, {token:function(d) { - return f[d.toLowerCase()] ? "support.type" : g[d.toLowerCase()] ? "support.function" : h[d.toLowerCase()] ? "support.constant" : i[d.toLowerCase()] ? "support.constant.color" : "text" - }, regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}], comment:[{token:"comment", regex:".*?\\*\\/", next:"start"}, {token:"comment", regex:".+"}]} - }; - k.inherits(e, b); - j.CssHighlightRules = e -}); -define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function(b, j) { - var k = b("ace/range").Range; - b = function() { - }; - (function() { - this.checkOutdent = function(c, e) { - if(!/^\s+$/.test(c)) { - return false - }return/^\s*\}/.test(e) - }; - this.autoOutdent = function(c, e) { - var a = c.getLine(e).match(/^(\s*\})/); - if(!a) { - return 0 - }a = a[1].length; - var f = c.findMatchingBracket({row:e, column:a}); - if(!f || f.row == e) { - return 0 - }f = this.$getIndent(c.getLine(f.row)); - c.replace(new k(e, 0, e, a - 1), f); - return f.length - (a - 1) - }; - this.$getIndent = function(c) { - if(c = c.match(/^(\s+)/)) { - return c[1] - }return"" - } - }).call(b.prototype); - j.MatchingBraceOutdent = b -}); -define("ace/mode/css", ["require", "exports", "module", "pilot/oop", "ace/mode/text", "ace/tokenizer", "ace/mode/css_highlight_rules", "ace/mode/matching_brace_outdent"], function(b, j) { - var k = b("pilot/oop"), c = b("ace/mode/text").Mode, e = b("ace/tokenizer").Tokenizer, a = b("ace/mode/css_highlight_rules").CssHighlightRules, f = b("ace/mode/matching_brace_outdent").MatchingBraceOutdent; - b = function() { - this.$tokenizer = new e((new a).getRules()); - this.$outdent = new f - }; - k.inherits(b, c); - (function() { - this.getNextLineIndent = function(g, h, i) { - var d = this.$getIndent(h); - g = this.$tokenizer.getLineTokens(h, g).tokens; - if(g.length && g[g.length - 1].type == "comment") { - return d - }if(h.match(/^.*\{\s*$/)) { - d += i - }return d - }; - this.checkOutdent = function(g, h, i) { - return this.$outdent.checkOutdent(h, i) - }; - this.autoOutdent = function(g, h, i) { - return this.$outdent.autoOutdent(h, i) - } - }).call(b.prototype); - j.Mode = b -}); \ No newline at end of file diff --git a/build/ace/mode/css_highlight_rules.js b/build/ace/mode/css_highlight_rules.js deleted file mode 100644 index 28b409ac..00000000 --- a/build/ace/mode/css_highlight_rules.js +++ /dev/null @@ -1,24 +0,0 @@ -define(function(c, h) { - var i = c("pilot/oop"), d = c("pilot/lang"); - c = c("ace/mode/text_highlight_rules").TextHighlightRules; - var g = function() { - function a(b) { - var f = []; - b = b.split(""); - for(var e = 0;e < b.length;e++) { - f.push("[", b[e].toLowerCase(), b[e].toUpperCase(), "]") - }return f.join("") - } - var j = d.arrayToMap("azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|-moz-border-radius|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|")), - k = d.arrayToMap("rgb|rgba|url|attr|counter|counters".split("|")), l = d.arrayToMap("absolute|all-scroll|always|armenian|auto|baseline|below|bidi-override|block|bold|bolder|both|bottom|break-all|break-word|capitalize|center|char|circle|cjk-ideographic|col-resize|collapse|crosshair|dashed|decimal-leading-zero|decimal|default|disabled|disc|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ellipsis|fixed|georgian|groove|hand|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|inactive|inherit|inline-block|inline|inset|inside|inter-ideograph|inter-word|italic|justify|katakana-iroha|katakana|keep-all|left|lighter|line-edge|line-through|line|list-item|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|medium|middle|move|n-resize|ne-resize|newspaper|no-drop|no-repeat|nw-resize|none|normal|not-allowed|nowrap|oblique|outset|outside|overline|pointer|progress|relative|repeat-x|repeat-y|repeat|right|ridge|row-resize|rtl|s-resize|scroll|se-resize|separate|small-caps|solid|square|static|strict|super|sw-resize|table-footer-group|table-header-group|tb-rl|text-bottom|text-top|text|thick|thin|top|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|zero".split("|")), - m = d.arrayToMap("aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow".split("|")); - this.$rules = {start:[{token:"comment", regex:"\\/\\*", next:"comment"}, {token:"string", regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'}, {token:"string", regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("em")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("ex")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("px")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + - a("cm")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("mm")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("in")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("pt")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("pc")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("deg")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + - a("rad")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("grad")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("ms")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("s")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("hz")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))" + a("khz")}, {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))%"}, - {token:"constant.numeric", regex:"\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))"}, {token:"constant.numeric", regex:"#[a-fA-F0-9]{6}"}, {token:"constant.numeric", regex:"#[a-fA-F0-9]{3}"}, {token:"lparen", regex:"{"}, {token:"rparen", regex:"}"}, {token:function(b) { - return j[b.toLowerCase()] ? "support.type" : k[b.toLowerCase()] ? "support.function" : l[b.toLowerCase()] ? "support.constant" : m[b.toLowerCase()] ? "support.constant.color" : "text" - }, regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"}], comment:[{token:"comment", regex:".*?\\*\\/", next:"start"}, {token:"comment", regex:".+"}]} - }; - i.inherits(g, c); - h.CssHighlightRules = g -}); \ No newline at end of file diff --git a/build/ace/mode/doc_comment_highlight_rules.js b/build/ace/mode/doc_comment_highlight_rules.js deleted file mode 100644 index 8a899a91..00000000 --- a/build/ace/mode/doc_comment_highlight_rules.js +++ /dev/null @@ -1,14 +0,0 @@ -define(function(a, c) { - var d = a("pilot/oop"); - a = a("ace/mode/text_highlight_rules").TextHighlightRules; - var b = function() { - this.$rules = {start:[{token:"comment.doc", regex:"\\*\\/", next:"start"}, {token:"comment.doc.tag", regex:"@[\\w\\d_]+"}, {token:"comment.doc", regex:"s+"}, {token:"comment.doc", regex:"TODO"}, {token:"comment.doc", regex:"[^@\\*]+"}, {token:"comment.doc", regex:"."}]} - }; - d.inherits(b, a); - (function() { - this.getStartRule = function(e) { - return{token:"comment.doc", regex:"\\/\\*(?=\\*)", next:e} - } - }).call(b.prototype); - c.DocCommentHighlightRules = b -}); \ No newline at end of file diff --git a/build/ace/mode/html.js b/build/ace/mode/html.js deleted file mode 100644 index 35cb5f7d..00000000 --- a/build/ace/mode/html.js +++ /dev/null @@ -1,57 +0,0 @@ -define("ace/mode/html_highlight_rules", ["require", "exports", "module", "pilot/oop", "ace/mode/css_highlight_rules", "ace/mode/javascript_highlight_rules", "ace/mode/text_highlight_rules"], function(a, f) { - var g = a("pilot/oop"), h = a("ace/mode/css_highlight_rules").CssHighlightRules, i = a("ace/mode/javascript_highlight_rules").JavaScriptHighlightRules; - a = a("ace/mode/text_highlight_rules").TextHighlightRules; - var d = function() { - this.$rules = {start:[{token:"text", regex:"<\\!\\[CDATA\\[", next:"cdata"}, {token:"xml_pe", regex:"<\\?.*?\\?>"}, {token:"comment", regex:"<\\!--", next:"comment"}, {token:"text", regex:"<(?=s*script)", next:"script"}, {token:"text", regex:"<(?=s*style)", next:"css"}, {token:"text", regex:"<\\/?", next:"tag"}, {token:"text", regex:"\\s+"}, {token:"text", regex:"[^<]+"}], script:[{token:"text", regex:">", next:"js-start"}, {token:"keyword", regex:"[-_a-zA-Z0-9:]+"}, {token:"text", regex:"\\s+"}, - {token:"string", regex:'".*?"'}, {token:"string", regex:"'.*?'"}], css:[{token:"text", regex:">", next:"css-start"}, {token:"keyword", regex:"[-_a-zA-Z0-9:]+"}, {token:"text", regex:"\\s+"}, {token:"string", regex:'".*?"'}, {token:"string", regex:"'.*?'"}], tag:[{token:"text", regex:">", next:"start"}, {token:"keyword", regex:"[-_a-zA-Z0-9:]+"}, {token:"text", regex:"\\s+"}, {token:"string", regex:'".*?"'}, {token:"string", regex:"'.*?'"}], cdata:[{token:"text", regex:"\\]\\]>", next:"start"}, - {token:"text", regex:"\\s+"}, {token:"text", regex:".+"}], comment:[{token:"comment", regex:".*?--\>", next:"start"}, {token:"comment", regex:".+"}]}; - this.addRules((new i).getRules(), "js-"); - this.$rules["js-start"].unshift({token:"comment", regex:"\\/\\/.*(?=<\\/script>)", next:"tag"}, {token:"text", regex:"<\\/(?=script)", next:"tag"}); - this.addRules((new h).getRules(), "css-"); - this.$rules["css-start"].unshift({token:"text", regex:"<\\/(?=style)", next:"tag"}) - }; - g.inherits(d, a); - f.HtmlHighlightRules = d -}); -define("ace/mode/html", ["require", "exports", "module", "pilot/oop", "ace/mode/text", "ace/mode/javascript", "ace/mode/css", "ace/tokenizer", "ace/mode/html_highlight_rules"], function(a, f) { - var g = a("pilot/oop"), h = a("ace/mode/text").Mode, i = a("ace/mode/javascript").Mode, d = a("ace/mode/css").Mode, l = a("ace/tokenizer").Tokenizer, m = a("ace/mode/html_highlight_rules").HtmlHighlightRules; - a = function() { - this.$tokenizer = new l((new m).getRules()); - this.$js = new i; - this.$css = new d - }; - g.inherits(a, h); - (function() { - this.toggleCommentLines = function() { - return this.$delegate("toggleCommentLines", arguments, function() { - return 0 - }) - }; - this.getNextLineIndent = function(j, b) { - var e = this; - return this.$delegate("getNextLineIndent", arguments, function() { - return e.$getIndent(b) - }) - }; - this.checkOutdent = function() { - return this.$delegate("checkOutdent", arguments, function() { - return false - }) - }; - this.autoOutdent = function() { - return this.$delegate("autoOutdent", arguments) - }; - this.$delegate = function(j, b, e) { - var k = b[0], c = k.split("js-"); - if(!c[0] && c[1]) { - b[0] = c[1]; - return this.$js[j].apply(this.$js, b) - }c = k.split("css-"); - if(!c[0] && c[1]) { - b[0] = c[1]; - return this.$css[j].apply(this.$css, b) - }return e ? e() : undefined - } - }).call(a.prototype); - f.Mode = a -}); \ No newline at end of file diff --git a/build/ace/mode/html_highlight_rules.js b/build/ace/mode/html_highlight_rules.js deleted file mode 100644 index b6dd54b0..00000000 --- a/build/ace/mode/html_highlight_rules.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function(a, c) { - var d = a("pilot/oop"), e = a("ace/mode/css_highlight_rules").CssHighlightRules, f = a("ace/mode/javascript_highlight_rules").JavaScriptHighlightRules; - a = a("ace/mode/text_highlight_rules").TextHighlightRules; - var b = function() { - this.$rules = {start:[{token:"text", regex:"<\\!\\[CDATA\\[", next:"cdata"}, {token:"xml_pe", regex:"<\\?.*?\\?>"}, {token:"comment", regex:"<\\!--", next:"comment"}, {token:"text", regex:"<(?=s*script)", next:"script"}, {token:"text", regex:"<(?=s*style)", next:"css"}, {token:"text", regex:"<\\/?", next:"tag"}, {token:"text", regex:"\\s+"}, {token:"text", regex:"[^<]+"}], script:[{token:"text", regex:">", next:"js-start"}, {token:"keyword", regex:"[-_a-zA-Z0-9:]+"}, {token:"text", regex:"\\s+"}, - {token:"string", regex:'".*?"'}, {token:"string", regex:"'.*?'"}], css:[{token:"text", regex:">", next:"css-start"}, {token:"keyword", regex:"[-_a-zA-Z0-9:]+"}, {token:"text", regex:"\\s+"}, {token:"string", regex:'".*?"'}, {token:"string", regex:"'.*?'"}], tag:[{token:"text", regex:">", next:"start"}, {token:"keyword", regex:"[-_a-zA-Z0-9:]+"}, {token:"text", regex:"\\s+"}, {token:"string", regex:'".*?"'}, {token:"string", regex:"'.*?'"}], cdata:[{token:"text", regex:"\\]\\]>", next:"start"}, - {token:"text", regex:"\\s+"}, {token:"text", regex:".+"}], comment:[{token:"comment", regex:".*?--\>", next:"start"}, {token:"comment", regex:".+"}]}; - this.addRules((new f).getRules(), "js-"); - this.$rules["js-start"].unshift({token:"comment", regex:"\\/\\/.*(?=<\\/script>)", next:"tag"}, {token:"text", regex:"<\\/(?=script)", next:"tag"}); - this.addRules((new e).getRules(), "css-"); - this.$rules["css-start"].unshift({token:"text", regex:"<\\/(?=style)", next:"tag"}) - }; - d.inherits(b, a); - c.HtmlHighlightRules = b -}); \ No newline at end of file diff --git a/build/ace/mode/javascript.js b/build/ace/mode/javascript.js deleted file mode 100644 index 1ef160ff..00000000 --- a/build/ace/mode/javascript.js +++ /dev/null @@ -1,59 +0,0 @@ -define(function(f, h) { - var i = f("pilot/oop"), j = f("ace/mode/text").Mode, k = f("ace/tokenizer").Tokenizer, l = f("ace/mode/javascript_highlight_rules").JavaScriptHighlightRules, m = f("ace/mode/matching_brace_outdent").MatchingBraceOutdent, n = f("ace/range").Range; - f = function() { - this.$tokenizer = new k((new l).getRules()); - this.$outdent = new m - }; - i.inherits(f, j); - (function() { - this.toggleCommentLines = function(c, a, d, g) { - var e = true; - c = /^(\s*)\/\//; - for(var b = d;b <= g;b++) { - if(!c.test(a.getLine(b))) { - e = false; - break - } - }if(e) { - e = new n(0, 0, 0, 0); - for(b = d;b <= g;b++) { - d = a.getLine(b).replace(c, "$1"); - e.start.row = b; - e.end.row = b; - e.end.column = d.length + 2; - a.replace(e, d) - }return-2 - }else { - return a.indentRows(d, g, "//") - } - }; - this.getNextLineIndent = function(c, a, d) { - var g = this.$getIndent(a), e = this.$tokenizer.getLineTokens(a, c), b = e.tokens; - e = e.state; - if(b.length && b[b.length - 1].type == "comment") { - return g - }if(c == "start") { - if(c = a.match(/^.*[\{\(\[]\s*$/)) { - g += d - } - }else { - if(c == "doc-start") { - if(e == "start") { - return"" - }if(c = a.match(/^\s*(\/?)\*/)) { - if(c[1]) { - g += " " - }g += "* " - } - } - }return g - }; - this.checkOutdent = function(c, a, d) { - return this.$outdent.checkOutdent(a, d) - }; - this.autoOutdent = function(c, a, d) { - return this.$outdent.autoOutdent(a, d) - } - }).call(f.prototype); - h.Mode = f -}); \ No newline at end of file diff --git a/build/ace/mode/javascript_highlight_rules.js b/build/ace/mode/javascript_highlight_rules.js deleted file mode 100644 index b44c427c..00000000 --- a/build/ace/mode/javascript_highlight_rules.js +++ /dev/null @@ -1,16 +0,0 @@ -define(function(a, e) { - var f = a("pilot/oop"), c = a("pilot/lang"), g = a("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules; - a = a("ace/mode/text_highlight_rules").TextHighlightRules; - JavaScriptHighlightRules = function() { - var d = new g, h = c.arrayToMap("break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|var|while|with".split("|")), i = c.arrayToMap("null|Infinity|NaN|undefined".split("|")), j = c.arrayToMap("class|enum|extends|super|const|export|import|implements|let|private|public|yield|interface|package|protected|static".split("|")); - this.$rules = {start:[{token:"comment", regex:"\\/\\/.*$"}, d.getStartRule("doc-start"), {token:"comment", regex:"\\/\\*", next:"comment"}, {token:"string.regexp", regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"}, {token:"string", regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'}, {token:"string", regex:'["].*\\\\$', next:"qqstring"}, {token:"string", regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"}, {token:"string", regex:"['].*\\\\$", next:"qstring"}, {token:"constant.numeric", - regex:"0[xX][0-9a-fA-F]+\\b"}, {token:"constant.numeric", regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"}, {token:"constant.language.boolean", regex:"(?:true|false)\\b"}, {token:function(b) { - return b == "this" ? "variable.language" : h[b] ? "keyword" : i[b] ? "constant.language" : j[b] ? "invalid.illegal" : b == "debugger" ? "invalid.deprecated" : "identifier" - }, regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}, {token:"keyword.operator", regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"}, {token:"lparen", regex:"[[({]"}, {token:"rparen", regex:"[\\])}]"}, {token:"text", regex:"\\s+"}], comment:[{token:"comment", regex:".*?\\*\\/", next:"start"}, {token:"comment", regex:".+"}], qqstring:[{token:"string", regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next:"start"}, {token:"string", regex:".+"}], qstring:[{token:"string", regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'", next:"start"}, {token:"string", regex:".+"}]}; - this.addRules(d.getRules(), "doc-"); - this.$rules["doc-start"][0].next = "start" - }; - f.inherits(JavaScriptHighlightRules, a); - e.JavaScriptHighlightRules = JavaScriptHighlightRules -}); \ No newline at end of file diff --git a/build/ace/mode/matching_brace_outdent.js b/build/ace/mode/matching_brace_outdent.js deleted file mode 100644 index e66aecb7..00000000 --- a/build/ace/mode/matching_brace_outdent.js +++ /dev/null @@ -1,30 +0,0 @@ -define(function(e, f) { - var g = e("ace/range").Range; - e = function() { - }; - (function() { - this.checkOutdent = function(a, b) { - if(!/^\s+$/.test(a)) { - return false - }return/^\s*\}/.test(b) - }; - this.autoOutdent = function(a, b) { - var c = a.getLine(b).match(/^(\s*\})/); - if(!c) { - return 0 - }c = c[1].length; - var d = a.findMatchingBracket({row:b, column:c}); - if(!d || d.row == b) { - return 0 - }d = this.$getIndent(a.getLine(d.row)); - a.replace(new g(b, 0, b, c - 1), d); - return d.length - (c - 1) - }; - this.$getIndent = function(a) { - if(a = a.match(/^(\s+)/)) { - return a[1] - }return"" - } - }).call(e.prototype); - f.MatchingBraceOutdent = e -}); \ No newline at end of file diff --git a/build/ace/mode/php.js b/build/ace/mode/php.js deleted file mode 100644 index a4ce06e6..00000000 --- a/build/ace/mode/php.js +++ /dev/null @@ -1,48 +0,0 @@ -define(function(d, h) { - var i = d("pilot/oop"), j = d("./text").Mode, k = d("../tokenizer").Tokenizer, l = d("./php_highlight_rules").PhpHighlightRules, m = d("./matching_brace_outdent").MatchingBraceOutdent, n = d("../range").Range; - d = function() { - this.$tokenizer = new k((new l).getRules()); - this.$outdent = new m - }; - i.inherits(d, j); - (function() { - this.toggleCommentLines = function(f, a, b, g) { - var c = true; - f = /^(\s*)#/; - for(var e = b;e <= g;e++) { - if(!f.test(a.getLine(e))) { - c = false; - break - } - }if(c) { - c = new n(0, 0, 0, 0); - for(e = b;e <= g;e++) { - b = a.getLine(e).replace(f, "$1"); - c.start.row = e; - c.end.row = e; - c.end.column = b.length + 2; - a.replace(c, b) - }return-2 - }else { - return a.indentRows(b, g, "#") - } - }; - this.getNextLineIndent = function(f, a, b) { - var g = this.$getIndent(a), c = this.$tokenizer.getLineTokens(a, f).tokens; - if(c.length && c[c.length - 1].type == "comment") { - return g - }if(f == "start") { - if(a.match(/^.*[\{\(\[\:]\s*$/)) { - g += b - } - }return g - }; - this.checkOutdent = function(f, a, b) { - return this.$outdent.checkOutdent(a, b) - }; - this.autoOutdent = function(f, a, b) { - return this.$outdent.autoOutdent(a, b) - } - }).call(d.prototype); - h.Mode = d -}); \ No newline at end of file diff --git a/build/ace/mode/php_highlight_rules.js b/build/ace/mode/php_highlight_rules.js deleted file mode 100644 index b5cdf02a..00000000 --- a/build/ace/mode/php_highlight_rules.js +++ /dev/null @@ -1,46 +0,0 @@ -define(function(b, e) { - var f = b("pilot/oop"), c = b("pilot/lang"), g = b("ace/mode/doc_comment_highlight_rules").DocCommentHighlightRules; - b = b("ace/mode/text_highlight_rules").TextHighlightRules; - PhpHighlightRules = function() { - var d = new g, h = c.arrayToMap("abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_response_headers|apache_setenv|array|array_change_key_case|array_chunk|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_uassoc|array_fill|array_filter|array_flip|array_intersect|array_intersect_assoc|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_push|array_rand|array_reduce|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_unique|array_unshift|array_values|array_walk|arsort|ascii2ebcdic|asin|asinh|asort|aspell_check|aspell_check_raw|aspell_new|aspell_suggest|assert|assert_options|atan|atan2|atanh|base64_decode|base64_encode|base_convert|basename|bcadd|bccomp|bcdiv|bcmod|bcmul|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|call_user_func|call_user_func_array|call_user_method|call_user_method_array|ccvs_add|ccvs_auth|ccvs_command|ccvs_count|ccvs_delete|ccvs_done|ccvs_init|ccvs_lookup|ccvs_new|ccvs_report|ccvs_return|ccvs_reverse|ccvs_sale|ccvs_status|ccvs_textvalue|ccvs_void|ceil|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_exists|clearstatcache|closedir|closelog|com|com_addref|com_get|com_invoke|com_isenum|com_load|com_load_typelib|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|convert_cyr_string|copy|cos|cosh|count|count_chars|cpdf_add_annotation|cpdf_add_outline|cpdf_arc|cpdf_begin_text|cpdf_circle|cpdf_clip|cpdf_close|cpdf_closepath|cpdf_closepath_fill_stroke|cpdf_closepath_stroke|cpdf_continue_text|cpdf_curveto|cpdf_end_text|cpdf_fill|cpdf_fill_stroke|cpdf_finalize|cpdf_finalize_page|cpdf_global_set_document_limits|cpdf_import_jpeg|cpdf_lineto|cpdf_moveto|cpdf_newpath|cpdf_open|cpdf_output_buffer|cpdf_page_init|cpdf_place_inline_image|cpdf_rect|cpdf_restore|cpdf_rlineto|cpdf_rmoveto|cpdf_rotate|cpdf_rotate_text|cpdf_save|cpdf_save_to_file|cpdf_scale|cpdf_set_action_url|cpdf_set_char_spacing|cpdf_set_creator|cpdf_set_current_page|cpdf_set_font|cpdf_set_font_directories|cpdf_set_font_map_file|cpdf_set_horiz_scaling|cpdf_set_keywords|cpdf_set_leading|cpdf_set_page_animation|cpdf_set_subject|cpdf_set_text_matrix|cpdf_set_text_pos|cpdf_set_text_rendering|cpdf_set_text_rise|cpdf_set_title|cpdf_set_viewer_preferences|cpdf_set_word_spacing|cpdf_setdash|cpdf_setflat|cpdf_setgray|cpdf_setgray_fill|cpdf_setgray_stroke|cpdf_setlinecap|cpdf_setlinejoin|cpdf_setlinewidth|cpdf_setmiterlimit|cpdf_setrgbcolor|cpdf_setrgbcolor_fill|cpdf_setrgbcolor_stroke|cpdf_show|cpdf_show_xy|cpdf_stringwidth|cpdf_stroke|cpdf_text|cpdf_translate|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|curl_close|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_version|current|cybercash_base64_decode|cybercash_base64_encode|cybercash_decr|cybercash_encr|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dblist|dbmclose|dbmdelete|dbmexists|dbmfetch|dbmfirstkey|dbminsert|dbmnextkey|dbmopen|dbmreplace|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debugger_off|debugger_on|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|dotnet_load|doubleval|each|easter_date|easter_days|ebcdic2ascii|echo|empty|end|ereg|ereg_replace|eregi|eregi_replace|error_log|error_reporting|escapeshellarg|escapeshellcmd|eval|exec|exif_imagetype|exif_read_data|exif_thumbnail|exit|exp|explode|expm1|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_select_db|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filetype|floatval|flock|floor|flush|fmod|fnmatch|fopen|fpassthru|fprintf|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gd_info|get_browser|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getcwd|getdate|getenv|gethostbyaddr|gethostbyname|gethostbynamel|getimagesize|getlastmod|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getopt|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|gettext|gettimeofday|gettype|glob|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_xor|gmstrftime|gregoriantojd|gzclose|gzcompress|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|header|headers_list|headers_sent|hebrev|hebrevc|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|http_build_query|hw_api_attribute|hw_api_content|hw_api_object|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_hgcsp|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|idate|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|image2wbmp|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepscopyfont|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchstructure|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implode|import_request_variables|in_array|ingres_autocommit|ingres_close|ingres_commit|ingres_connect|ingres_fetch_array|ingres_fetch_object|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_query|ingres_rollback|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|intval|ip2long|iptcembed|iptcparse|ircg_channel_mode|ircg_disconnect|ircg_fetch_error_msg|ircg_get_username|ircg_html_encode|ircg_ignore_add|ircg_ignore_del|ircg_invite|ircg_is_conn_alive|ircg_join|ircg_kick|ircg_list|ircg_lookup_format_messages|ircg_lusers|ircg_msg|ircg_nick|ircg_nickname_escape|ircg_nickname_unescape|ircg_notice|ircg_oper|ircg_part|ircg_pconnect|ircg_register_format_messages|ircg_set_current|ircg_set_file|ircg_set_on_die|ircg_topic|ircg_who|ircg_whois|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isset|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|juliantojd|key|krsort|ksort|lcg_value|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|levenshtein|link|linkinfo|list|localeconv|localtime|log|log10|log1p|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_strlen|mb_strpos|mb_strrpos|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcal_append_event|mcal_close|mcal_create_calendar|mcal_date_compare|mcal_date_valid|mcal_day_of_week|mcal_day_of_year|mcal_days_in_month|mcal_delete_calendar|mcal_delete_event|mcal_event_add_attribute|mcal_event_init|mcal_event_set_alarm|mcal_event_set_category|mcal_event_set_class|mcal_event_set_description|mcal_event_set_end|mcal_event_set_recur_daily|mcal_event_set_recur_monthly_mday|mcal_event_set_recur_monthly_wday|mcal_event_set_recur_none|mcal_event_set_recur_weekly|mcal_event_set_recur_yearly|mcal_event_set_start|mcal_event_set_title|mcal_expunge|mcal_fetch_current_stream_event|mcal_fetch_event|mcal_is_leap_year|mcal_list_alarms|mcal_list_events|mcal_next_recurrence|mcal_open|mcal_popen|mcal_rename_calendar|mcal_reopen|mcal_snooze|mcal_store_event|mcal_time_valid|mcal_week_of_year|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|mcve_adduser|mcve_adduserarg|mcve_bt|mcve_checkstatus|mcve_chkpwd|mcve_chngpwd|mcve_completeauthorizations|mcve_connect|mcve_connectionerror|mcve_deleteresponse|mcve_deletetrans|mcve_deleteusersetup|mcve_deluser|mcve_destroyconn|mcve_destroyengine|mcve_disableuser|mcve_edituser|mcve_enableuser|mcve_force|mcve_getcell|mcve_getcellbynum|mcve_getcommadelimited|mcve_getheader|mcve_getuserarg|mcve_getuserparam|mcve_gft|mcve_gl|mcve_gut|mcve_initconn|mcve_initengine|mcve_initusersetup|mcve_iscommadelimited|mcve_liststats|mcve_listusers|mcve_maxconntimeout|mcve_monitor|mcve_numcolumns|mcve_numrows|mcve_override|mcve_parsecommadelimited|mcve_ping|mcve_preauth|mcve_preauthcompletion|mcve_qc|mcve_responseparam|mcve_return|mcve_returncode|mcve_returnstatus|mcve_sale|mcve_setblocking|mcve_setdropfile|mcve_setip|mcve_setssl|mcve_setssl_files|mcve_settimeout|mcve_settle|mcve_text_avs|mcve_text_code|mcve_text_cv|mcve_transactionauth|mcve_transactionavs|mcve_transactionbatch|mcve_transactioncv|mcve_transactionid|mcve_transactionitem|mcve_transactionssent|mcve_transactiontext|mcve_transinqueue|mcve_transnew|mcve_transparam|mcve_transsend|mcve_ub|mcve_uwait|mcve_verifyconnection|mcve_verifysslcert|mcve_void|md5|md5_file|mdecrypt_generic|memory_get_usage|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_setcubicthreshold|ming_setscale|ming_useswfversion|mkdir|mktime|money_format|move_uploaded_file|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_getdata|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_setdata|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|muscat_close|muscat_get|muscat_give|muscat_setup|muscat_setup_net|mysql_affected_rows|mysql_change_user|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli_affected_rows|mysqli_autocommit|mysqli_bind_param|mysqli_bind_result|mysqli_change_user|mysqli_character_set_name|mysqli_client_encoding|mysqli_close|mysqli_commit|mysqli_connect|mysqli_connect_errno|mysqli_connect_error|mysqli_data_seek|mysqli_debug|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_dump_debug_info|mysqli_embedded_connect|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_errno|mysqli_error|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_fetch_array|mysqli_fetch_assoc|mysqli_fetch_field|mysqli_fetch_field_direct|mysqli_fetch_fields|mysqli_fetch_lengths|mysqli_fetch_object|mysqli_fetch_row|mysqli_field_count|mysqli_field_seek|mysqli_field_tell|mysqli_free_result|mysqli_get_client_info|mysqli_get_client_version|mysqli_get_host_info|mysqli_get_metadata|mysqli_get_proto_info|mysqli_get_server_info|mysqli_get_server_version|mysqli_info|mysqli_init|mysqli_insert_id|mysqli_kill|mysqli_master_query|mysqli_more_results|mysqli_multi_query|mysqli_next_result|mysqli_num_fields|mysqli_num_rows|mysqli_options|mysqli_param_count|mysqli_ping|mysqli_prepare|mysqli_query|mysqli_real_connect|mysqli_real_escape_string|mysqli_real_query|mysqli_report|mysqli_rollback|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_select_db|mysqli_send_long_data|mysqli_send_query|mysqli_server_end|mysqli_server_init|mysqli_set_opt|mysqli_sqlstate|mysqli_ssl_set|mysqli_stat|mysqli_stmt_init|mysqli_stmt_affected_rows|mysqli_stmt_bind_param|mysqli_stmt_bind_result|mysqli_stmt_close|mysqli_stmt_data_seek|mysqli_stmt_errno|mysqli_stmt_error|mysqli_stmt_execute|mysqli_stmt_fetch|mysqli_stmt_free_result|mysqli_stmt_num_rows|mysqli_stmt_param_count|mysqli_stmt_prepare|mysqli_stmt_result_metadata|mysqli_stmt_send_long_data|mysqli_stmt_sqlstate|mysqli_stmt_store_result|mysqli_store_result|mysqli_thread_id|mysqli_thread_safe|mysqli_use_result|mysqli_warning_count|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|next|ngettext|nl2br|nl_langinfo|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|number_format|ob_clean|ob_end_clean|ob_end_flush|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_by_name|oci_cancel|oci_close|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_copy|oci_lob_is_equal|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|opendir|openlog|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_new|openssl_csr_sign|openssl_error_string|openssl_free_key|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ora_bind|ora_close|ora_columnname|ora_columnsize|ora_columntype|ora_commit|ora_commitoff|ora_commiton|ora_do|ora_error|ora_errorcode|ora_exec|ora_fetch|ora_fetch_into|ora_getcolumn|ora_logoff|ora_logon|ora_numcols|ora_numrows|ora_open|ora_parse|ora_plogon|ora_rollback|ord|output_add_rewrite_var|output_reset_rewrite_vars|overload|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parse_ini_file|parse_str|parse_url|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_page|pdf_begin_pattern|pdf_begin_template|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_curveto|pdf_delete|pdf_end_page|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_stroke|pdf_findfont|pdf_get_buffer|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_initgraphics|pdf_lineto|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_page|pdf_open_png|pdf_open_tiff|pdf_place_image|pdf_place_pdi_page|pdf_rect|pdf_restore|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_font|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_translate|pfpro_cleanup|pfpro_init|pfpro_process|pfpro_process_raw|pfpro_version|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_fetch_all|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_type|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_pconnect|pg_ping|pg_port|pg_put_line|pg_query|pg_result_error|pg_result_seek|pg_result_status|pg_select|pg_send_query|pg_set_client_encoding|pg_trace|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_ctermid|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_isatty|posix_kill|posix_mkfifo|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_grep|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|qdom_error|qdom_tree|quoted_printable_decode|quotemeta|rad2deg|rand|range|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_read_history|readline_write_history|readlink|realpath|recode|recode_file|recode_string|register_shutdown_function|register_tick_function|rename|reset|restore_error_handler|restore_include_path|rewind|rewinddir|rmdir|round|rsort|rtrim|scandir|sem_acquire|sem_get|sem_release|sem_remove|serialize|sesam_affected_rows|sesam_commit|sesam_connect|sesam_diagnostic|sesam_disconnect|sesam_errormsg|sesam_execimm|sesam_fetch_array|sesam_fetch_result|sesam_fetch_row|sesam_field_array|sesam_field_name|sesam_free_result|sesam_num_fields|sesam_query|sesam_rollback|sesam_seek_row|sesam_settransaction|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|set_error_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_time_limit|setcookie|setlocale|setrawcookie|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|sin|sinh|sizeof|sleep|snmp_get_quick_print|snmp_set_quick_print|snmpget|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_iovec_add|socket_iovec_alloc|socket_iovec_delete|socket_iovec_fetch|socket_iovec_free|socket_iovec_set|socket_last_error|socket_listen|socket_read|socket_readv|socket_recv|socket_recvfrom|socket_recvmsg|socket_select|socket_send|socket_sendmsg|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|socket_writev|sort|soundex|split|spliti|sprintf|sql_regcase|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_fetch_array|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqrt|srand|sscanf|stat|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_context_create|stream_context_get_options|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_register_wrapper|stream_select|stream_set_blocking|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_get_name|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_wrapper_register|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpos|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfbutton_keypress|swfdisplayitem|swffill|swffont|swfgradient|swfmorph|swfmovie|swfshape|swfsprite|swftext|swftextfield|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|syslog|system|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy_access_count|tidy_clean_repair|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_body|tidy_get_config|tidy_get_error_buffer|tidy_get_head|tidy_get_html|tidy_get_html_ver|tidy_get_output|tidy_get_release|tidy_get_root|tidy_get_status|tidy_getopt|tidy_is_xhtml|tidy_is_xml|tidy_load_config|tidy_parse_file|tidy_parse_string|tidy_repair_file|tidy_repair_string|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|time|tmpfile|token_get_all|token_name|touch|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|user_error|usleep|usort|utf8_decode|utf8_encode|var_dump|var_export|variant|version_compare|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|wordwrap|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xpath_eval|xpath_eval_expression|xpath_new_context|xptr_eval|xptr_new_context|xsl_xsltprocessor_get_parameter|xsl_xsltprocessor_has_exslt_support|xsl_xsltprocessor_import_stylesheet|xsl_xsltprocessor_register_php_functions|xsl_xsltprocessor_remove_parameter|xsl_xsltprocessor_set_parameter|xsl_xsltprocessor_transform_to_doc|xsl_xsltprocessor_transform_to_uri|xsl_xsltprocessor_transform_to_xml|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|zlib_get_coding_type".split("|")), - i = c.arrayToMap("abstract|and|array|as|break|case|catch|cfunction|class|clone|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|for|foreach|function|include|include_once|global|goto|if|implements|interface|instanceof|namespace|new|old_function|or|private|protected|public|return|require|require_once|static|switch|throw|try|use|var|while|xor".split("|")), j = c.arrayToMap("true|false|null|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__CLASS__".split("|")), - k = c.arrayToMap("$_GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv".split("|")), l = c.arrayToMap([]); - this.$rules = {start:[{token:"support", regex:"<\\?(?:php|\\=)"}, {token:"support", regex:"\\?>"}, {token:"comment", regex:"\\/\\/.*$"}, d.getStartRule("doc-start"), {token:"comment", regex:"\\/\\*", next:"comment"}, {token:"string.regexp", regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"}, {token:"string", regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'}, {token:"string", regex:'["].*\\\\$', next:"qqstring"}, {token:"string", regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"}, - {token:"string", regex:"['].*\\\\$", next:"qstring"}, {token:"constant.numeric", regex:"0[xX][0-9a-fA-F]+\\b"}, {token:"constant.numeric", regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"}, {token:"constant.language", regex:"\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\b"}, - {token:"constant.language", regex:"\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"}, - {token:function(a) { - if(i[a]) { - return"keyword" - }else { - if(j[a]) { - return"constant.language" - }else { - if(k[a]) { - return"variable.language" - }else { - if(l[a]) { - return"invalid.illegal" - }else { - if(h[a]) { - return"support.function" - }else { - if(a == "debugger") { - return"invalid.deprecated" - }else { - if(a.match(/^(\$[a-zA-Z][a-zA-Z0-9_]*|self|parent)$/)) { - return"variable" - } - } - } - } - } - } - }return"identifier" - }, regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}, {token:"keyword.operator", regex:"!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"}, {token:"lparen", regex:"[[({]"}, {token:"rparen", regex:"[\\])}]"}, {token:"text", regex:"\\s+"}], comment:[{token:"comment", regex:".*?\\*\\/", next:"start"}, {token:"comment", regex:".+"}], qqstring:[{token:"string", regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"', - next:"start"}, {token:"string", regex:".+"}], qstring:[{token:"string", regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'", next:"start"}, {token:"string", regex:".+"}]}; - this.addRules(d.getRules(), "doc-"); - this.$rules["doc-start"][0].next = "start" - }; - f.inherits(PhpHighlightRules, b); - e.PhpHighlightRules = PhpHighlightRules -}); \ No newline at end of file diff --git a/build/ace/mode/python.js b/build/ace/mode/python.js deleted file mode 100644 index 91df47e5..00000000 --- a/build/ace/mode/python.js +++ /dev/null @@ -1,93 +0,0 @@ -define("ace/mode/python_highlight_rules", ["require", "exports", "module", "pilot/oop", "pilot/lang", "./text_highlight_rules"], function(a, l) { - var m = a("pilot/oop"), b = a("pilot/lang"); - a = a("./text_highlight_rules").TextHighlightRules; - PythonHighlightRules = function() { - var f = b.arrayToMap("and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield".split("|")), h = b.arrayToMap("True|False|None|NotImplemented|Ellipsis|__debug__".split("|")), i = b.arrayToMap("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern".split("|")), - n = b.arrayToMap("".split("|")); - this.$rules = {start:[{token:"comment", regex:"#.*$"}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"{3}(?:(?:.)|(?:^"{3}))*?"{3}'}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"{3}.*$', next:"qqstring"}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"(?:(?:\\\\.)|(?:[^"\\\\]))*?"'}, {token:"string", regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'{3}(?:(?:.)|(?:^'{3}))*?'{3}"}, {token:"string", regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'{3}.*$", next:"qstring"}, {token:"string", - regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'(?:(?:\\\\.)|(?:[^'\\\\]))*?'"}, {token:"constant.numeric", regex:"(?:(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))|\\d+)[jJ]\\b"}, {token:"constant.numeric", regex:"(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))"}, {token:"constant.numeric", regex:"(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))[lL]\\b"}, - {token:"constant.numeric", regex:"(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))\\b"}, {token:function(c) { - return f[c] ? "keyword" : h[c] ? "constant.language" : n[c] ? "invalid.illegal" : i[c] ? "support.function" : c == "debugger" ? "invalid.deprecated" : "identifier" - }, regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}, {token:"keyword.operator", regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="}, {token:"lparen", regex:"[\\[\\(\\{]"}, {token:"rparen", regex:"[\\]\\)\\}]"}, {token:"text", regex:"\\s+"}], qqstring:[{token:"string", regex:'(?:^"{3})*?"{3}', next:"start"}, {token:"string", regex:".+"}], qstring:[{token:"string", regex:"(?:^'{3})*?'{3}", next:"start"}, {token:"string", regex:".+"}]} - }; - m.inherits(PythonHighlightRules, a); - l.PythonHighlightRules = PythonHighlightRules -}); -define("ace/mode/matching_brace_outdent", ["require", "exports", "module", "ace/range"], function(a, l) { - var m = a("ace/range").Range; - a = function() { - }; - (function() { - this.checkOutdent = function(b, f) { - if(!/^\s+$/.test(b)) { - return false - }return/^\s*\}/.test(f) - }; - this.autoOutdent = function(b, f) { - var h = b.getLine(f).match(/^(\s*\})/); - if(!h) { - return 0 - }h = h[1].length; - var i = b.findMatchingBracket({row:f, column:h}); - if(!i || i.row == f) { - return 0 - }i = this.$getIndent(b.getLine(i.row)); - b.replace(new m(f, 0, f, h - 1), i); - return i.length - (h - 1) - }; - this.$getIndent = function(b) { - if(b = b.match(/^(\s+)/)) { - return b[1] - }return"" - } - }).call(a.prototype); - l.MatchingBraceOutdent = a -}); -define("ace/mode/python", ["require", "exports", "module", "pilot/oop", "./text", "../tokenizer", "./python_highlight_rules", "./matching_brace_outdent", "../range"], function(a, l) { - var m = a("pilot/oop"), b = a("./text").Mode, f = a("../tokenizer").Tokenizer, h = a("./python_highlight_rules").PythonHighlightRules, i = a("./matching_brace_outdent").MatchingBraceOutdent, n = a("../range").Range; - a = function() { - this.$tokenizer = new f((new h).getRules()); - this.$outdent = new i - }; - m.inherits(a, b); - (function() { - this.toggleCommentLines = function(c, d, e, k) { - var g = true; - c = /^(\s*)#/; - for(var j = e;j <= k;j++) { - if(!c.test(d.getLine(j))) { - g = false; - break - } - }if(g) { - g = new n(0, 0, 0, 0); - for(j = e;j <= k;j++) { - e = d.getLine(j).replace(c, "$1"); - g.start.row = j; - g.end.row = j; - g.end.column = e.length + 2; - d.replace(g, e) - }return-2 - }else { - return d.indentRows(e, k, "#") - } - }; - this.getNextLineIndent = function(c, d, e) { - var k = this.$getIndent(d), g = this.$tokenizer.getLineTokens(d, c).tokens; - if(g.length && g[g.length - 1].type == "comment") { - return k - }if(c == "start") { - if(d.match(/^.*[\{\(\[\:]\s*$/)) { - k += e - } - }return k - }; - this.checkOutdent = function(c, d, e) { - return this.$outdent.checkOutdent(d, e) - }; - this.autoOutdent = function(c, d, e) { - return this.$outdent.autoOutdent(d, e) - } - }).call(a.prototype); - l.Mode = a -}); \ No newline at end of file diff --git a/build/ace/mode/python_highlight_rules.js b/build/ace/mode/python_highlight_rules.js deleted file mode 100644 index 57468c5c..00000000 --- a/build/ace/mode/python_highlight_rules.js +++ /dev/null @@ -1,15 +0,0 @@ -define(function(a, d) { - var e = a("pilot/oop"), c = a("pilot/lang"); - a = a("./text_highlight_rules").TextHighlightRules; - PythonHighlightRules = function() { - var f = c.arrayToMap("and|as|assert|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|not|or|pass|print|raise|return|try|while|with|yield".split("|")), g = c.arrayToMap("True|False|None|NotImplemented|Ellipsis|__debug__".split("|")), h = c.arrayToMap("abs|divmod|input|open|staticmethod|all|enumerate|int|ord|str|any|eval|isinstance|pow|sum|basestring|execfile|issubclass|print|super|binfile|iter|property|tuple|bool|filter|len|range|type|bytearray|float|list|raw_input|unichr|callable|format|locals|reduce|unicode|chr|frozenset|long|reload|vars|classmethod|getattr|map|repr|xrange|cmp|globals|max|reversed|zip|compile|hasattr|memoryview|round|__import__|complex|hash|min|set|apply|delattr|help|next|setattr|buffer|dict|hex|object|slice|coerce|dir|id|oct|sorted|intern".split("|")), - i = c.arrayToMap("".split("|")); - this.$rules = {start:[{token:"comment", regex:"#.*$"}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"{3}(?:(?:.)|(?:^"{3}))*?"{3}'}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"{3}.*$', next:"qqstring"}, {token:"string", regex:'(?:(?:[rubRUB])|(?:[ubUB][rR]))?"(?:(?:\\\\.)|(?:[^"\\\\]))*?"'}, {token:"string", regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'{3}(?:(?:.)|(?:^'{3}))*?'{3}"}, {token:"string", regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'{3}.*$", next:"qstring"}, {token:"string", - regex:"(?:(?:[rubRUB])|(?:[ubUB][rR]))?'(?:(?:\\\\.)|(?:[^'\\\\]))*?'"}, {token:"constant.numeric", regex:"(?:(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))|\\d+)[jJ]\\b"}, {token:"constant.numeric", regex:"(?:(?:(?:(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.))|(?:\\d+))(?:[eE][+-]?\\d+))|(?:(?:(?:\\d+)?(?:\\.\\d+))|(?:(?:\\d+)\\.)))"}, {token:"constant.numeric", regex:"(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))[lL]\\b"}, - {token:"constant.numeric", regex:"(?:(?:(?:[1-9]\\d*)|(?:0))|(?:0[oO]?[0-7]+)|(?:0[xX][\\dA-Fa-f]+)|(?:0[bB][01]+))\\b"}, {token:function(b) { - return f[b] ? "keyword" : g[b] ? "constant.language" : i[b] ? "invalid.illegal" : h[b] ? "support.function" : b == "debugger" ? "invalid.deprecated" : "identifier" - }, regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"}, {token:"keyword.operator", regex:"\\+|\\-|\\*|\\*\\*|\\/|\\/\\/|%|<<|>>|&|\\||\\^|~|<|>|<=|=>|==|!=|<>|="}, {token:"lparen", regex:"[\\[\\(\\{]"}, {token:"rparen", regex:"[\\]\\)\\}]"}, {token:"text", regex:"\\s+"}], qqstring:[{token:"string", regex:'(?:^"{3})*?"{3}', next:"start"}, {token:"string", regex:".+"}], qstring:[{token:"string", regex:"(?:^'{3})*?'{3}", next:"start"}, {token:"string", regex:".+"}]} - }; - e.inherits(PythonHighlightRules, a); - d.PythonHighlightRules = PythonHighlightRules -}); \ No newline at end of file diff --git a/build/ace/mode/text.js b/build/ace/mode/text.js deleted file mode 100644 index 63ae67bd..00000000 --- a/build/ace/mode/text.js +++ /dev/null @@ -1,28 +0,0 @@ -define(function(a, c) { - var d = a("ace/tokenizer").Tokenizer, e = a("ace/mode/text_highlight_rules").TextHighlightRules; - a = function() { - this.$tokenizer = new d((new e).getRules()) - }; - (function() { - this.getTokenizer = function() { - return this.$tokenizer - }; - this.toggleCommentLines = function() { - return 0 - }; - this.getNextLineIndent = function() { - return"" - }; - this.checkOutdent = function() { - return false - }; - this.autoOutdent = function() { - }; - this.$getIndent = function(b) { - if(b = b.match(/^(\s+)/)) { - return b[1] - }return"" - } - }).call(a.prototype); - c.Mode = a -}); \ No newline at end of file diff --git a/build/ace/mode/text_highlight_rules.js b/build/ace/mode/text_highlight_rules.js deleted file mode 100644 index 2415acca..00000000 --- a/build/ace/mode/text_highlight_rules.js +++ /dev/null @@ -1,19 +0,0 @@ -define(function(a, h) { - a = function() { - this.$rules = {start:[{token:"text", regex:".+"}]} - }; - (function() { - this.addRules = function(g, b) { - for(var c in g) { - for(var d = g[c], e = 0;e < d.length;e++) { - var f = d[e]; - f.next = f.next ? b + f.next : b + c - }this.$rules[b + c] = d - } - }; - this.getRules = function() { - return this.$rules - } - }).call(a.prototype); - h.TextHighlightRules = a -}); \ No newline at end of file diff --git a/build/ace/mode/xml.js b/build/ace/mode/xml.js deleted file mode 100644 index 2c0ba5e1..00000000 --- a/build/ace/mode/xml.js +++ /dev/null @@ -1,23 +0,0 @@ -define("ace/mode/xml_highlight_rules", ["require", "exports", "module", "pilot/oop", "ace/mode/text_highlight_rules"], function(a, c) { - var d = a("pilot/oop"); - a = a("ace/mode/text_highlight_rules").TextHighlightRules; - var b = function() { - this.$rules = {start:[{token:"text", regex:"<\\!\\[CDATA\\[", next:"cdata"}, {token:"xml_pe", regex:"<\\?.*?\\?>"}, {token:"comment", regex:"<\\!--", next:"comment"}, {token:"text", regex:"<\\/?", next:"tag"}, {token:"text", regex:"\\s+"}, {token:"text", regex:"[^<]+"}], tag:[{token:"text", regex:">", next:"start"}, {token:"keyword", regex:"[-_a-zA-Z0-9:]+"}, {token:"text", regex:"\\s+"}, {token:"string", regex:'".*?"'}, {token:"string", regex:"'.*?'"}], cdata:[{token:"text", regex:"\\]\\]>", - next:"start"}, {token:"text", regex:"\\s+"}, {token:"text", regex:"(?:[^\\]]|\\](?!\\]>))+"}], comment:[{token:"comment", regex:".*?--\>", next:"start"}, {token:"comment", regex:".+"}]} - }; - d.inherits(b, a); - c.XmlHighlightRules = b -}); -define("ace/mode/xml", ["require", "exports", "module", "pilot/oop", "ace/mode/text", "ace/tokenizer", "ace/mode/xml_highlight_rules"], function(a, c) { - var d = a("pilot/oop"), b = a("ace/mode/text").Mode, e = a("ace/tokenizer").Tokenizer, f = a("ace/mode/xml_highlight_rules").XmlHighlightRules; - a = function() { - this.$tokenizer = new e((new f).getRules()) - }; - d.inherits(a, b); - (function() { - this.getNextLineIndent = function(h, g) { - return this.$getIndent(g) - } - }).call(a.prototype); - c.Mode = a -}); \ No newline at end of file diff --git a/build/ace/mode/xml_highlight_rules.js b/build/ace/mode/xml_highlight_rules.js deleted file mode 100644 index ed500328..00000000 --- a/build/ace/mode/xml_highlight_rules.js +++ /dev/null @@ -1,10 +0,0 @@ -define(function(a, c) { - var d = a("pilot/oop"); - a = a("ace/mode/text_highlight_rules").TextHighlightRules; - var b = function() { - this.$rules = {start:[{token:"text", regex:"<\\!\\[CDATA\\[", next:"cdata"}, {token:"xml_pe", regex:"<\\?.*?\\?>"}, {token:"comment", regex:"<\\!--", next:"comment"}, {token:"text", regex:"<\\/?", next:"tag"}, {token:"text", regex:"\\s+"}, {token:"text", regex:"[^<]+"}], tag:[{token:"text", regex:">", next:"start"}, {token:"keyword", regex:"[-_a-zA-Z0-9:]+"}, {token:"text", regex:"\\s+"}, {token:"string", regex:'".*?"'}, {token:"string", regex:"'.*?'"}], cdata:[{token:"text", regex:"\\]\\]>", - next:"start"}, {token:"text", regex:"\\s+"}, {token:"text", regex:"(?:[^\\]]|\\](?!\\]>))+"}], comment:[{token:"comment", regex:".*?--\>", next:"start"}, {token:"comment", regex:".+"}]} - }; - d.inherits(b, a); - c.XmlHighlightRules = b -}); \ No newline at end of file diff --git a/build/ace/range.js b/build/ace/range.js deleted file mode 100644 index 57677a7e..00000000 --- a/build/ace/range.js +++ /dev/null @@ -1,71 +0,0 @@ -define(function(h, f) { - var c = function(a, b, d, e) { - this.start = {row:a, column:b}; - this.end = {row:d, column:e} - }; - (function() { - this.toString = function() { - return"Range: [" + this.start.row + "/" + this.start.column + "] -> [" + this.end.row + "/" + this.end.column + "]" - }; - this.contains = function(a, b) { - return this.compare(a, b) == 0 - }; - this.compare = function(a, b) { - if(!this.isMultiLine()) { - if(a === this.start.row) { - return b < this.start.column ? -1 : b > this.end.column ? 1 : 0 - } - }if(a < this.start.row) { - return-1 - }if(a > this.end.row) { - return 1 - }if(this.start.row === a) { - return b >= this.start.column ? 0 : -1 - }if(this.end.row === a) { - return b <= this.end.column ? 0 : 1 - }return 0 - }; - this.clipRows = function(a, b) { - if(this.end.row > b) { - var d = {row:b + 1, column:0} - }if(this.start.row > b) { - var e = {row:b + 1, column:0} - }if(this.start.row < a) { - e = {row:a, column:0} - }if(this.end.row < a) { - d = {row:a, column:0} - }return c.fromPoints(e || this.start, d || this.end) - }; - this.extend = function(a, b) { - var d = this.compare(a, b); - if(d == 0) { - return this - }else { - if(d == -1) { - var e = {row:a, column:b} - }else { - var g = {row:a, column:b} - } - }return c.fromPoints(e || this.start, g || this.end) - }; - this.isEmpty = function() { - return this.start.row == this.end.row && this.start.column == this.end.column - }; - this.isMultiLine = function() { - return this.start.row !== this.end.row - }; - this.clone = function() { - return c.fromPoints(this.start, this.end) - }; - this.collapseRows = function() { - return this.end.column == 0 ? new c(this.start.row, 0, Math.max(this.start.row, this.end.row - 1), 0) : new c(this.start.row, 0, this.end.row, 0) - }; - this.toScreenRange = function(a) { - return new c(this.start.row, a.documentToScreenColumn(this.start.row, this.start.column), this.end.row, a.documentToScreenColumn(this.end.row, this.end.column)) - } - }).call(c.prototype); - c.fromPoints = function(a, b) { - return new c(a.row, a.column, b.row, b.column) - }; - f.Range = c -}); \ No newline at end of file diff --git a/build/ace/renderloop.js b/build/ace/renderloop.js deleted file mode 100644 index fdc7a06d..00000000 --- a/build/ace/renderloop.js +++ /dev/null @@ -1,44 +0,0 @@ -define(function(d, f) { - var e = d("pilot/event"); - d = function(b) { - this.onRender = b; - this.pending = false; - this.changes = 0 - }; - (function() { - this.schedule = function(b) { - this.changes |= b; - if(!this.pending) { - this.pending = true; - var a = this; - this.setTimeoutZero(function() { - a.pending = false; - var c = a.changes; - a.changes = 0; - a.onRender(c) - }) - } - }; - if(window.postMessage) { - this.messageName = "zero-timeout-message"; - this.setTimeoutZero = function(b) { - if(!this.attached) { - var a = this; - e.addListener(window, "message", function(c) { - if(c.source == window && a.callback && c.data == a.messageName) { - e.stopPropagation(c); - a.callback() - } - }); - this.attached = true - }this.callback = b; - window.postMessage(this.messageName, "*") - } - }else { - this.setTimeoutZero = function(b) { - setTimeout(b, 0) - } - } - }).call(d.prototype); - f.RenderLoop = d -}); \ No newline at end of file diff --git a/build/ace/scrollbar.js b/build/ace/scrollbar.js deleted file mode 100644 index 424d6de0..00000000 --- a/build/ace/scrollbar.js +++ /dev/null @@ -1,32 +0,0 @@ -define(function(a, c) { - var d = a("pilot/oop"), e = a("pilot/dom"), f = a("pilot/event"), g = a("pilot/event_emitter").EventEmitter; - a = function(b) { - this.element = document.createElement("div"); - this.element.className = "ace_sb"; - this.inner = document.createElement("div"); - this.element.appendChild(this.inner); - b.appendChild(this.element); - this.width = e.scrollbarWidth(); - this.element.style.width = this.width; - f.addListener(this.element, "scroll", this.onScroll.bind(this)) - }; - (function() { - d.implement(this, g); - this.onScroll = function() { - this._dispatchEvent("scroll", {data:this.element.scrollTop}) - }; - this.getWidth = function() { - return this.width - }; - this.setHeight = function(b) { - this.element.style.height = Math.max(0, b - this.width) + "px" - }; - this.setInnerHeight = function(b) { - this.inner.style.height = b + "px" - }; - this.setScrollTop = function(b) { - this.element.scrollTop = b - } - }).call(a.prototype); - c.ScrollBar = a -}); \ No newline at end of file diff --git a/build/ace/search.js b/build/ace/search.js deleted file mode 100644 index aace07de..00000000 --- a/build/ace/search.js +++ /dev/null @@ -1,149 +0,0 @@ -define(function(o, r) { - var p = o("pilot/lang"), s = o("pilot/oop"), t = o("ace/range").Range, l = function() { - this.$options = {needle:"", backwards:false, wrap:false, caseSensitive:false, wholeWord:false, scope:l.ALL, regExp:false} - }; - l.ALL = 1; - l.SELECTION = 2; - (function() { - this.set = function(a) { - s.mixin(this.$options, a); - return this - }; - this.getOptions = function() { - return p.copyObject(this.$options) - }; - this.find = function(a) { - if(!this.$options.needle) { - return null - }var b = null; - (this.$options.backwards ? this.$backwardMatchIterator(a) : this.$forwardMatchIterator(a)).forEach(function(c) { - b = c; - return true - }); - return b - }; - this.findAll = function(a) { - if(!this.$options.needle) { - return[] - }var b = []; - (this.$options.backwards ? this.$backwardMatchIterator(a) : this.$forwardMatchIterator(a)).forEach(function(c) { - b.push(c) - }); - return b - }; - this.replace = function(a, b) { - var c = this.$assembleRegExp(), g = c.exec(a); - return g && g[0].length == a.length ? this.$options.regExp ? a.replace(c, b) : b : null - }; - this.$forwardMatchIterator = function(a) { - var b = this.$assembleRegExp(), c = this; - return{forEach:function(g) { - c.$forwardLineIterator(a).forEach(function(d, i, k) { - if(i) { - d = d.substring(i) - }var j = []; - d.replace(b, function(e) { - j.push({str:e, offset:i + arguments[arguments.length - 2]}); - return e - }); - for(d = 0;d < j.length;d++) { - var h = j[d]; - h = c.$rangeFromMatch(k, h.offset, h.str.length); - if(g(h)) { - return true - } - } - }) - }} - }; - this.$backwardMatchIterator = function(a) { - var b = this.$assembleRegExp(), c = this; - return{forEach:function(g) { - c.$backwardLineIterator(a).forEach(function(d, i, k) { - if(i) { - d = d.substring(i) - }var j = []; - d.replace(b, function(e, f) { - j.push({str:e, offset:i + f}); - return e - }); - for(d = j.length - 1;d >= 0;d--) { - var h = j[d]; - h = c.$rangeFromMatch(k, h.offset, h.str.length); - if(g(h)) { - return true - } - } - }) - }} - }; - this.$rangeFromMatch = function(a, b, c) { - return new t(a, b, a, b + c) - }; - this.$assembleRegExp = function() { - var a = this.$options.regExp ? this.$options.needle : p.escapeRegExp(this.$options.needle); - if(this.$options.wholeWord) { - a = "\\b" + a + "\\b" - }var b = "g"; - this.$options.caseSensitive || (b += "i"); - return new RegExp(a, b) - }; - this.$forwardLineIterator = function(a) { - function b(e) { - var f = a.getLine(e); - if(c && e == g.end.row) { - f = f.substring(0, g.end.column) - }return f - } - var c = this.$options.scope == l.SELECTION, g = a.getSelection().getRange(), d = a.getSelection().getCursor(), i = c ? g.start.row : 0, k = c ? g.start.column : 0, j = c ? g.end.row : a.getLength() - 1, h = this.$options.wrap; - return{forEach:function(e) { - for(var f = d.row, m = b(f), n = d.column, q = false;!e(m, n, f);) { - if(q) { - return - }f++; - n = 0; - if(f > j) { - if(h) { - f = i; - n = k - }else { - return - } - }if(f == d.row) { - q = true - }m = b(f) - } - }} - }; - this.$backwardLineIterator = function(a) { - var b = this.$options.scope == l.SELECTION, c = a.getSelection().getRange(), g = b ? c.end : c.start, d = b ? c.start.row : 0, i = b ? c.start.column : 0, k = b ? c.end.row : a.getLength() - 1, j = this.$options.wrap; - return{forEach:function(h) { - for(var e = g.row, f = a.getLine(e).substring(0, g.column), m = 0, n = false;!h(f, m, e);) { - if(n) { - return - }e--; - m = 0; - if(e < d) { - if(j) { - e = k - }else { - return - } - }if(e == g.row) { - n = true - }f = a.getLine(e); - if(b) { - if(e == d) { - m = i - }else { - if(e == k) { - f = f.substring(0, c.end.column) - } - } - } - } - }} - } - }).call(l.prototype); - r.Search = l -}); \ No newline at end of file diff --git a/build/ace/selection.js b/build/ace/selection.js deleted file mode 100644 index ac335096..00000000 --- a/build/ace/selection.js +++ /dev/null @@ -1,261 +0,0 @@ -define(function(d, g) { - var h = d("pilot/oop"), i = d("pilot/lang"), j = d("pilot/event_emitter").EventEmitter, f = d("ace/range").Range; - d = function(a) { - this.doc = a; - this.clearSelection(); - this.selectionLead = {row:0, column:0} - }; - (function() { - h.implement(this, j); - this.isEmpty = function() { - return!this.selectionAnchor || this.selectionAnchor.row == this.selectionLead.row && this.selectionAnchor.column == this.selectionLead.column - }; - this.isMultiLine = function() { - if(this.isEmpty()) { - return false - }return this.getRange().isMultiLine() - }; - this.getCursor = function() { - return this.selectionLead - }; - this.setSelectionAnchor = function(a, b) { - a = this.$clipPositionToDocument(a, b); - if(this.selectionAnchor) { - if(this.selectionAnchor.row !== a.row || this.selectionAnchor.column !== a.column) { - this.selectionAnchor = a; - this._dispatchEvent("changeSelection", {}) - } - }else { - this.selectionAnchor = a; - this._dispatchEvent("changeSelection", {}) - } - }; - this.getSelectionAnchor = function() { - return this.selectionAnchor ? this.$clone(this.selectionAnchor) : this.$clone(this.selectionLead) - }; - this.getSelectionLead = function() { - return this.$clone(this.selectionLead) - }; - this.shiftSelection = function(a) { - if(this.isEmpty()) { - this.moveCursorTo(this.selectionLead.row, this.selectionLead.column + a) - }else { - var b = this.getSelectionAnchor(), c = this.getSelectionLead(), e = this.isBackwards(); - if(!e || b.column !== 0) { - this.setSelectionAnchor(b.row, b.column + a) - }if(e || c.column !== 0) { - this.$moveSelection(function() { - this.moveCursorTo(c.row, c.column + a) - }) - } - } - }; - this.isBackwards = function() { - var a = this.selectionAnchor || this.selectionLead, b = this.selectionLead; - return a.row > b.row || a.row == b.row && a.column > b.column - }; - this.getRange = function() { - var a = this.selectionAnchor || this.selectionLead, b = this.selectionLead; - return this.isBackwards() ? f.fromPoints(b, a) : f.fromPoints(a, b) - }; - this.clearSelection = function() { - if(this.selectionAnchor) { - this.selectionAnchor = null; - this._dispatchEvent("changeSelection", {}) - } - }; - this.selectAll = function() { - var a = this.doc.getLength() - 1; - this.setSelectionAnchor(a, this.doc.getLine(a).length); - if(!this.selectionAnchor) { - this.selectionAnchor = this.$clone(this.selectionLead) - }a = {row:0, column:0}; - if(a.row !== this.selectionLead.row || a.column !== this.selectionLead.column) { - this.selectionLead = a; - this._dispatchEvent("changeSelection", {blockScrolling:true}) - } - }; - this.setSelectionRange = function(a, b) { - if(b) { - this.setSelectionAnchor(a.end.row, a.end.column); - this.selectTo(a.start.row, a.start.column) - }else { - this.setSelectionAnchor(a.start.row, a.start.column); - this.selectTo(a.end.row, a.end.column) - } - }; - this.$moveSelection = function(a) { - var b = false; - if(!this.selectionAnchor) { - b = true; - this.selectionAnchor = this.$clone(this.selectionLead) - }var c = this.$clone(this.selectionLead); - a.call(this); - if(c.row !== this.selectionLead.row || c.column !== this.selectionLead.column) { - b = true - }b && this._dispatchEvent("changeSelection", {}) - }; - this.selectTo = function(a, b) { - this.$moveSelection(function() { - this.moveCursorTo(a, b) - }) - }; - this.selectToPosition = function(a) { - this.$moveSelection(function() { - this.moveCursorToPosition(a) - }) - }; - this.selectUp = function() { - this.$moveSelection(this.moveCursorUp) - }; - this.selectDown = function() { - this.$moveSelection(this.moveCursorDown) - }; - this.selectRight = function() { - this.$moveSelection(this.moveCursorRight) - }; - this.selectLeft = function() { - this.$moveSelection(this.moveCursorLeft) - }; - this.selectLineStart = function() { - this.$moveSelection(this.moveCursorLineStart) - }; - this.selectLineEnd = function() { - this.$moveSelection(this.moveCursorLineEnd) - }; - this.selectFileEnd = function() { - this.$moveSelection(this.moveCursorFileEnd) - }; - this.selectFileStart = function() { - this.$moveSelection(this.moveCursorFileStart) - }; - this.selectWordRight = function() { - this.$moveSelection(this.moveCursorWordRight) - }; - this.selectWordLeft = function() { - this.$moveSelection(this.moveCursorWordLeft) - }; - this.selectWord = function() { - var a = this.selectionLead; - this.setSelectionRange(this.doc.getWordRange(a.row, a.column)) - }; - this.selectLine = function() { - this.setSelectionAnchor(this.selectionLead.row, 0); - this.$moveSelection(function() { - this.moveCursorTo(this.selectionLead.row + 1, 0) - }) - }; - this.moveCursorUp = function() { - this.moveCursorBy(-1, 0) - }; - this.moveCursorDown = function() { - this.moveCursorBy(1, 0) - }; - this.moveCursorLeft = function() { - if(this.selectionLead.column == 0) { - this.selectionLead.row > 0 && this.moveCursorTo(this.selectionLead.row - 1, this.doc.getLine(this.selectionLead.row - 1).length) - }else { - var a = this.doc, b = a.getTabSize(), c = this.selectionLead; - a.isTabStop(c) && a.getLine(c.row).slice(c.column - b, c.column).split(" ").length - 1 == b ? this.moveCursorBy(0, -b) : this.moveCursorBy(0, -1) - } - }; - this.moveCursorRight = function() { - if(this.selectionLead.column == this.doc.getLine(this.selectionLead.row).length) { - this.selectionLead.row < this.doc.getLength() - 1 && this.moveCursorTo(this.selectionLead.row + 1, 0) - }else { - var a = this.doc, b = a.getTabSize(), c = this.selectionLead; - a.isTabStop(c) && a.getLine(c.row).slice(c.column, c.column + b).split(" ").length - 1 == b ? this.moveCursorBy(0, b) : this.moveCursorBy(0, 1) - } - }; - this.moveCursorLineStart = function() { - var a = this.selectionLead.row, b = this.selectionLead.column, c = this.doc.getLine(a).slice(0, b).match(/^\s*/); - if(c[0].length == 0) { - this.moveCursorTo(a, this.doc.getLine(a).match(/^\s*/)[0].length) - }else { - c[0].length >= b ? this.moveCursorTo(a, 0) : this.moveCursorTo(a, c[0].length) - } - }; - this.moveCursorLineEnd = function() { - this.moveCursorTo(this.selectionLead.row, this.doc.getLine(this.selectionLead.row).length) - }; - this.moveCursorFileEnd = function() { - var a = this.doc.getLength() - 1, b = this.doc.getLine(a).length; - this.moveCursorTo(a, b) - }; - this.moveCursorFileStart = function() { - this.moveCursorTo(0, 0) - }; - this.moveCursorWordRight = function() { - var a = this.selectionLead.row, b = this.selectionLead.column, c = this.doc.getLine(a), e = c.substring(b); - this.doc.nonTokenRe.lastIndex = 0; - this.doc.tokenRe.lastIndex = 0; - if(b == c.length) { - this.moveCursorRight() - }else { - if(this.doc.nonTokenRe.exec(e)) { - b += this.doc.nonTokenRe.lastIndex; - this.doc.nonTokenRe.lastIndex = 0 - }else { - if(this.doc.tokenRe.exec(e)) { - b += this.doc.tokenRe.lastIndex; - this.doc.tokenRe.lastIndex = 0 - } - }this.moveCursorTo(a, b) - } - }; - this.moveCursorWordLeft = function() { - var a = this.selectionLead.row, b = this.selectionLead.column, c = this.doc.getLine(a); - c = i.stringReverse(c.substring(0, b)); - this.doc.nonTokenRe.lastIndex = 0; - this.doc.tokenRe.lastIndex = 0; - if(b == 0) { - this.moveCursorLeft() - }else { - if(this.doc.nonTokenRe.exec(c)) { - b -= this.doc.nonTokenRe.lastIndex; - this.doc.nonTokenRe.lastIndex = 0 - }else { - if(this.doc.tokenRe.exec(c)) { - b -= this.doc.tokenRe.lastIndex; - this.doc.tokenRe.lastIndex = 0 - } - }this.moveCursorTo(a, b) - } - }; - this.moveCursorBy = function(a, b) { - this.moveCursorTo(this.selectionLead.row + a, this.selectionLead.column + b) - }; - this.moveCursorToPosition = function(a) { - this.moveCursorTo(a.row, a.column) - }; - this.moveCursorTo = function(a, b) { - a = this.$clipPositionToDocument(a, b); - if(a.row !== this.selectionLead.row || a.column !== this.selectionLead.column) { - this.selectionLead = a; - this._dispatchEvent("changeCursor", {data:this.getCursor()}) - } - }; - this.moveCursorUp = function() { - this.moveCursorBy(-1, 0) - }; - this.$clipPositionToDocument = function(a, b) { - var c = {}; - if(a >= this.doc.getLength()) { - c.row = Math.max(0, this.doc.getLength() - 1); - c.column = this.doc.getLine(c.row).length - }else { - if(a < 0) { - c.row = 0; - c.column = 0 - }else { - c.row = a; - c.column = Math.min(this.doc.getLine(c.row).length, Math.max(0, b)) - } - }return c - }; - this.$clone = function(a) { - return{row:a.row, column:a.column} - } - }).call(d.prototype); - g.Selection = d -}); \ No newline at end of file diff --git a/build/ace/test/all.js b/build/ace/test/all.js deleted file mode 100644 index 3053c7c9..00000000 --- a/build/ace/test/all.js +++ /dev/null @@ -1,4 +0,0 @@ -require("../../../support/paths"); -var async = require("async"); -async.concat(require("./change_document_test"), require("./document_test"), require("./event_emitter_test"), require("./navigation_test"), require("./range_test"), require("./search_test"), require("./selection_test"), require("./text_edit_test"), require("./mode/css_test"), require("./mode/css_tokenizer_test"), require("./mode/html_test"), require("./mode/html_tokenizer_test"), require("./mode/javascript_test"), require("./mode/javascript_tokenizer_test"), require("./mode/text_test"), require("./mode/xml_test"), -require("./mode/xml_tokenizer_test")).exec(); \ No newline at end of file diff --git a/build/ace/test/assertions.js b/build/ace/test/assertions.js deleted file mode 100644 index c1e0c891..00000000 --- a/build/ace/test/assertions.js +++ /dev/null @@ -1,18 +0,0 @@ -define(function(e, f, g) { - var a = e("assert"); - a.position = function(b, c, d) { - a.equal(b.row, c); - a.equal(b.column, d) - }; - a.range = function(b, c, d, h, i) { - a.position(b.start, c, d); - a.position(b.end, h, i) - }; - a.notOk = function(b) { - a.equal(b, false) - }; - f.jsonEquals = function(b, c) { - a.equal(JSON.stringify(b), JSON.stringify(c)) - }; - g.exports = a -}); \ No newline at end of file diff --git a/build/ace/test/change_document_test.js b/build/ace/test/change_document_test.js deleted file mode 100644 index c10c8a58..00000000 --- a/build/ace/test/change_document_test.js +++ /dev/null @@ -1,83 +0,0 @@ -define(function(c, d, f) { - c("./mockdom"); - var e = c("../document").Document, g = c("../editor").Editor, h = c("../mode/text").Mode, i = c("../mode/javascript").Mode, j = c("./mockrenderer"), a = c("./assertions"); - d = {setUp:function() { - this.doc1 = new e("abc\ndef"); - this.doc2 = new e("ghi\njkl"); - this.editor = new g(new j) - }, "test: change document":function() { - this.editor.setDocument(this.doc1); - a.equal(this.editor.getDocument(), this.doc1); - this.editor.setDocument(this.doc2); - a.equal(this.editor.getDocument(), this.doc2) - }, "test: only changes to the new document should have effect":function() { - var b = false; - this.editor.onDocumentChange = function() { - b = true - }; - this.editor.setDocument(this.doc1); - this.editor.setDocument(this.doc2); - this.doc1.duplicateLines(0, 0); - a.notOk(b); - this.doc2.duplicateLines(0, 0); - a.notOk(b) - }, "test: should use cursor of new document":function() { - this.doc1.getSelection().moveCursorTo(0, 1); - this.doc2.getSelection().moveCursorTo(1, 0); - this.editor.setDocument(this.doc1); - a.position(this.editor.getCursorPosition(), 0, 1); - this.editor.setDocument(this.doc2); - a.position(this.editor.getCursorPosition(), 1, 0) - }, "test: only changing the cursor of the new doc should not have an effect":function() { - this.editor.onCursorChange = function() { - b = true - }; - this.editor.setDocument(this.doc1); - this.editor.setDocument(this.doc2); - a.position(this.editor.getCursorPosition(), 0, 0); - var b = false; - this.doc1.getSelection().moveCursorTo(0, 1); - a.position(this.editor.getCursorPosition(), 0, 0); - a.notOk(b); - this.doc2.getSelection().moveCursorTo(1, 1); - a.position(this.editor.getCursorPosition(), 1, 1); - a.ok(b) - }, "test: should use selection of new document":function() { - this.doc1.getSelection().selectTo(0, 1); - this.doc2.getSelection().selectTo(1, 0); - this.editor.setDocument(this.doc1); - a.position(this.editor.getSelection().getSelectionLead(), 0, 1); - this.editor.setDocument(this.doc2); - a.position(this.editor.getSelection().getSelectionLead(), 1, 0) - }, "test: only changing the selection of the new doc should not have an effect":function() { - this.editor.onSelectionChange = function() { - b = true - }; - this.editor.setDocument(this.doc1); - this.editor.setDocument(this.doc2); - a.position(this.editor.getSelection().getSelectionLead(), 0, 0); - var b = false; - this.doc1.getSelection().selectTo(0, 1); - a.position(this.editor.getSelection().getSelectionLead(), 0, 0); - a.notOk(b); - this.doc2.getSelection().selectTo(1, 1); - a.position(this.editor.getSelection().getSelectionLead(), 1, 1); - a.ok(b) - }, "test: should use mode of new document":function() { - this.editor.onDocumentModeChange = function() { - b = true - }; - this.editor.setDocument(this.doc1); - this.editor.setDocument(this.doc2); - var b = false; - this.doc1.setMode(new h); - a.notOk(b); - this.doc2.setMode(new i); - a.ok(b) - }}; - f.exports = c("async/test").testcase(d) -}); -if(module === require.main) { - require("../../../support/paths"); - exports.exec() -}; \ No newline at end of file diff --git a/build/ace/test/document_test.js b/build/ace/test/document_test.js deleted file mode 100644 index d0d6e798..00000000 --- a/build/ace/test/document_test.js +++ /dev/null @@ -1,163 +0,0 @@ -define(function(e, g, i) { - var c = e("../document").Document, h = e("../undomanager").UndoManager; - e("./mockrenderer"); - var f = e("../range").Range, b = e("./assertions"); - e("async"); - g = {"test: find matching opening bracket":function() { - var a = new c(["(()(", "())))"]); - b.position(a.findMatchingBracket({row:0, column:3}), 0, 1); - b.position(a.findMatchingBracket({row:1, column:2}), 1, 0); - b.position(a.findMatchingBracket({row:1, column:3}), 0, 3); - b.position(a.findMatchingBracket({row:1, column:4}), 0, 0); - b.equal(a.findMatchingBracket({row:1, column:5}), null) - }, "test: find matching closing bracket":function() { - var a = new c(["(()(", "())))"]); - b.position(a.findMatchingBracket({row:1, column:1}), 1, 1); - b.position(a.findMatchingBracket({row:1, column:1}), 1, 1); - b.position(a.findMatchingBracket({row:0, column:4}), 1, 2); - b.position(a.findMatchingBracket({row:0, column:2}), 0, 2); - b.position(a.findMatchingBracket({row:0, column:1}), 1, 3); - b.equal(a.findMatchingBracket({row:0, column:0}), null) - }, "test: match different bracket types":function() { - var a = new c(["({[", ")]}"]); - b.position(a.findMatchingBracket({row:0, column:1}), 1, 0); - b.position(a.findMatchingBracket({row:0, column:2}), 1, 2); - b.position(a.findMatchingBracket({row:0, column:3}), 1, 1); - b.position(a.findMatchingBracket({row:1, column:1}), 0, 0); - b.position(a.findMatchingBracket({row:1, column:2}), 0, 2); - b.position(a.findMatchingBracket({row:1, column:3}), 0, 1) - }, "test: move lines down":function() { - var a = new c(["a1", "a2", "a3", "a4"]); - a.moveLinesDown(0, 1); - b.equal(a.toString(), "a3\na1\na2\na4"); - a.moveLinesDown(1, 2); - b.equal(a.toString(), "a3\na4\na1\na2"); - a.moveLinesDown(2, 3); - b.equal(a.toString(), "a3\na4\na1\na2"); - a.moveLinesDown(2, 2); - b.equal(a.toString(), "a3\na4\na2\na1") - }, "test: move lines up":function() { - var a = new c(["a1", "a2", "a3", "a4"]); - a.moveLinesUp(2, 3); - b.equal(a.toString(), "a1\na3\na4\na2"); - a.moveLinesUp(1, 2); - b.equal(a.toString(), "a3\na4\na1\na2"); - a.moveLinesUp(0, 1); - b.equal(a.toString(), "a3\na4\na1\na2"); - a.moveLinesUp(2, 2); - b.equal(a.toString(), "a3\na1\na4\na2") - }, "test: duplicate lines":function() { - var a = new c(["1", "2", "3", "4"]); - a.duplicateLines(1, 2); - b.equal(a.toString(), "1\n2\n3\n2\n3\n4") - }, "test: duplicate last line":function() { - var a = new c(["1", "2", "3"]); - a.duplicateLines(2, 2); - b.equal(a.toString(), "1\n2\n3\n3") - }, "test: duplicate first line":function() { - var a = new c(["1", "2", "3"]); - a.duplicateLines(0, 0); - b.equal(a.toString(), "1\n1\n2\n3") - }, "test: should handle unix style new lines":function() { - var a = new c(["1", "2", "3"]); - b.equal(a.toString(), "1\n2\n3") - }, "test: should handle windows style new lines":function() { - var a = new c("1\r\n2\r\n3"); - a.setNewLineMode("unix"); - b.equal(a.toString(), "1\n2\n3") - }, "test: set new line mode to 'windows' should use '\r\n' as new lines":function() { - var a = new c("1\n2\n3"); - a.setNewLineMode("windows"); - b.equal(a.toString(), "1\r\n2\r\n3") - }, "test: set new line mode to 'unix' should use '\n' as new lines":function() { - var a = new c("1\r\n2\r\n3"); - a.setNewLineMode("unix"); - b.equal(a.toString(), "1\n2\n3") - }, "test: set new line mode to 'auto' should detect the incoming nl type":function() { - var a = new c("1\n2\n3"); - a.setNewLineMode("auto"); - b.equal(a.toString(), "1\n2\n3"); - a = new c("1\r\n2\r\n3"); - a.setNewLineMode("auto"); - b.equal(a.toString(), "1\r\n2\r\n3"); - a.replace(new f(0, 0, 2, 1), "4\n5\n6"); - b.equal("4\n5\n6", a.toString()) - }, "test: convert document to screen coordinates":function() { - var a = new c("01234\t567890\t1234"); - a.setTabSize(4); - b.equal(a.documentToScreenColumn(0, 0), 0); - b.equal(a.documentToScreenColumn(0, 4), 4); - b.equal(a.documentToScreenColumn(0, 5), 5); - b.equal(a.documentToScreenColumn(0, 6), 9); - b.equal(a.documentToScreenColumn(0, 12), 15); - b.equal(a.documentToScreenColumn(0, 13), 19); - a.setTabSize(2); - b.equal(a.documentToScreenColumn(0, 0), 0); - b.equal(a.documentToScreenColumn(0, 4), 4); - b.equal(a.documentToScreenColumn(0, 5), 5); - b.equal(a.documentToScreenColumn(0, 6), 7); - b.equal(a.documentToScreenColumn(0, 12), 13); - b.equal(a.documentToScreenColumn(0, 13), 15) - }, "test: convert document to scrren coordinates with leading tabs":function() { - var a = new c("\t\t123"); - a.setTabSize(4); - b.equal(a.documentToScreenColumn(0, 0), 0); - b.equal(a.documentToScreenColumn(0, 1), 4); - b.equal(a.documentToScreenColumn(0, 2), 8); - b.equal(a.documentToScreenColumn(0, 3), 9) - }, "test: convert screen to document coordinates":function() { - var a = new c("01234\t567890\t1234"); - a.setTabSize(4); - b.equal(a.screenToDocumentColumn(0, 0), 0); - b.equal(a.screenToDocumentColumn(0, 4), 4); - b.equal(a.screenToDocumentColumn(0, 5), 5); - b.equal(a.screenToDocumentColumn(0, 6), 5); - b.equal(a.screenToDocumentColumn(0, 7), 5); - b.equal(a.screenToDocumentColumn(0, 8), 5); - b.equal(a.screenToDocumentColumn(0, 9), 6); - b.equal(a.screenToDocumentColumn(0, 15), 12); - b.equal(a.screenToDocumentColumn(0, 19), 13) - }, "test: insert text in multiple rows":function() { - var a = new c(["12", "", "abcd"]), d = a.multiRowInsert([0, 1, 2], 2, "juhu 1"); - b.equal(d.rows, 0); - b.equal(d.columns, 6); - b.equal(a.toString(), "12juhu 1\n juhu 1\nabjuhu 1cd") - }, "test: undo insert text in multiple rows":function() { - var a = new c(["12", "", "abcd"]), d = new h; - a.setUndoManager(d); - a.multiRowInsert([0, 1, 2], 2, "juhu 1"); - a.$informUndoManager.call(); - b.equal(a.toString(), "12juhu 1\n juhu 1\nabjuhu 1cd"); - d.undo(); - b.equal(a.toString(), "12\n\nabcd"); - d.redo(); - b.equal(a.toString(), "12juhu 1\n juhu 1\nabjuhu 1cd") - }, "test: insert new line in multiple rows":function() { - var a = new c(["12", "", "abcd"]), d = a.multiRowInsert([0, 1, 2], 2, "\n"); - b.equal(d.rows, 1); - b.equal(a.toString(), "12\n\n \n\nab\ncd") - }, "test: insert multi line text in multiple rows":function() { - var a = new c(["12", "", "abcd"]), d = a.multiRowInsert([0, 1, 2], 2, "juhu\n12"); - b.equal(d.rows, 1); - b.equal(a.toString(), "12juhu\n12\n juhu\n12\nabjuhu\n12cd") - }, "test: remove right in multiple rows":function() { - var a = new c(["12", "", "abcd"]); - a.multiRowRemove([0, 1, 2], new f(0, 2, 0, 3)); - b.equal(a.toString(), "12\n\nabd") - }, "test: undo remove right in multiple rows":function() { - var a = new c(["12", "", "abcd"]), d = new h; - a.setUndoManager(d); - a.multiRowRemove([0, 1, 2], new f(0, 1, 0, 3)); - a.$informUndoManager.call(); - b.equal(a.toString(), "1\n\nad"); - d.undo(); - b.equal(a.toString(), "12\n\nabcd"); - d.redo(); - b.equal(a.toString(), "1\n\nad") - }}; - i.exports = e("async/test").testcase(g) -}); -if(module === require.main) { - require("../../../support/paths"); - exports.exec() -}; \ No newline at end of file diff --git a/build/ace/test/event_emitter_test.js b/build/ace/test/event_emitter_test.js deleted file mode 100644 index 86797fb4..00000000 --- a/build/ace/test/event_emitter_test.js +++ /dev/null @@ -1,18 +0,0 @@ -require("../../../support/paths"); -var oop = require("pilot/oop"); -EventEmitter = require("pilot/event_emitter").EventEmitter; -assert = require("./assertions"); -var Emitter = function() { -}; -oop.implement(Emitter.prototype, EventEmitter); -var Test = {"test: dispatch event with no data":function() { - var a = new Emitter, b = false; - a.addEventListener("juhu", function(c) { - b = true; - assert.equal(c.type, "juhu") - }); - a._dispatchEvent("juhu"); - assert.ok(b) -}}; -module.exports = require("async/test").testcase(Test); -module === require.main && module.exports.exec(); \ No newline at end of file diff --git a/build/ace/test/mockdom.js b/build/ace/test/mockdom.js deleted file mode 100644 index 89879485..00000000 --- a/build/ace/test/mockdom.js +++ /dev/null @@ -1,6 +0,0 @@ -var dom = require("jsdom/level2/html").dom.level2.html, browser = require("jsdom/browser/index").windowAugmentation(dom); -global.document = browser.document; -global.window = browser.window; -global.self = browser.self; -global.navigator = browser.navigator; -global.location = browser.location; \ No newline at end of file diff --git a/build/ace/test/mockrenderer.js b/build/ace/test/mockrenderer.js deleted file mode 100644 index 3540aec7..00000000 --- a/build/ace/test/mockrenderer.js +++ /dev/null @@ -1,61 +0,0 @@ -define(function() { - MockRenderer = function(a) { - this.container = document.createElement("div"); - this.cursor = {row:0, column:0}; - this.visibleRowCount = a || 20; - this.layerConfig = {firstVisibleRow:0, lastVisibleRow:this.visibleRowCount} - }; - MockRenderer.prototype.getFirstVisibleRow = function() { - return this.layerConfig.firstVisibleRow - }; - MockRenderer.prototype.getLastVisibleRow = function() { - return this.layerConfig.lastVisibleRow - }; - MockRenderer.prototype.getContainerElement = function() { - return this.container - }; - MockRenderer.prototype.getMouseEventTarget = function() { - return this.container - }; - MockRenderer.prototype.setDocument = function(a) { - this.lines = a.lines - }; - MockRenderer.prototype.setTokenizer = function() { - }; - MockRenderer.prototype.updateCursor = function(a) { - this.cursor.row = a.row; - this.cursor.column = a.column - }; - MockRenderer.prototype.scrollCursorIntoView = function() { - if(this.cursor.row < this.layerConfig.firstVisibleRow) { - this.scrollToRow(this.cursor.row) - }else { - this.cursor.row > this.layerConfig.lastVisibleRow && this.scrollToRow(this.cursor.row) - } - }; - MockRenderer.prototype.scrollToRow = function(a) { - a = Math.min(this.lines.length - this.visibleRowCount, Math.max(0, a)); - this.layerConfig.firstVisibleRow = a; - this.layerConfig.lastVisibleRow = a + this.visibleRowCount - }; - MockRenderer.prototype.getScrollTopRow = function() { - return this.layerConfig.firstVisibleRow - }; - MockRenderer.prototype.draw = function() { - }; - MockRenderer.prototype.updateLines = function() { - }; - MockRenderer.prototype.addMarker = function() { - }; - MockRenderer.prototype.setBreakpoints = function() { - }; - MockRenderer.prototype.updateFull = function() { - }; - MockRenderer.prototype.updateText = function() { - }; - MockRenderer.prototype.showCursor = function() { - }; - MockRenderer.prototype.visualizeFocus = function() { - }; - return MockRenderer -}); \ No newline at end of file diff --git a/build/ace/test/mode/css_test.js b/build/ace/test/mode/css_test.js deleted file mode 100644 index 360fbf11..00000000 --- a/build/ace/test/mode/css_test.js +++ /dev/null @@ -1,24 +0,0 @@ -define(function(b, c, e) { - var f = b("ace/document").Document, g = b("ace/mode/css").Mode, a = b("../assertions"); - c = {setUp:function() { - this.mode = new g - }, "test: toggle comment lines should not do anything":function() { - var d = new f(" abc\ncde\nfg"); - this.mode.toggleCommentLines("start", d, 0, 1); - a.equal(" abc\ncde\nfg", d.toString()) - }, "test: lines should keep indentation":function() { - a.equal(" ", this.mode.getNextLineIndent("start", " abc", " ")); - a.equal("\t", this.mode.getNextLineIndent("start", "\tabc", " ")) - }, "test: new line after { should increase indent":function() { - a.equal(" ", this.mode.getNextLineIndent("start", " abc{", " ")); - a.equal("\t ", this.mode.getNextLineIndent("start", "\tabc { ", " ")) - }, "test: no indent increase after { in a comment":function() { - a.equal(" ", this.mode.getNextLineIndent("start", " /*{", " ")); - a.equal(" ", this.mode.getNextLineIndent("start", " /*{ ", " ")) - }}; - e.exports = b("async/test").testcase(c) -}); -if(module === require.main) { - require("../../../support/paths"); - exports.exec() -}; \ No newline at end of file diff --git a/build/ace/test/mode/css_tokenizer_test.js b/build/ace/test/mode/css_tokenizer_test.js deleted file mode 100644 index e3ef4566..00000000 --- a/build/ace/test/mode/css_tokenizer_test.js +++ /dev/null @@ -1,33 +0,0 @@ -define(function(c, d, e) { - var f = c("ace/mode/css").Mode, b = c("../assertions"); - d = {setUp:function() { - this.tokenizer = (new f).getTokenizer() - }, "test: tokenize pixel number":function() { - var a = this.tokenizer.getLineTokens("-12px", "start").tokens; - b.equal(1, a.length); - b.equal("constant.numeric", a[0].type) - }, "test: tokenize hex3 color":function() { - var a = this.tokenizer.getLineTokens("#abc", "start").tokens; - b.equal(1, a.length); - b.equal("constant.numeric", a[0].type) - }, "test: tokenize hex6 color":function() { - var a = this.tokenizer.getLineTokens("#abc012", "start").tokens; - b.equal(1, a.length); - b.equal("constant.numeric", a[0].type) - }, "test: tokenize parens":function() { - var a = this.tokenizer.getLineTokens("{()}", "start").tokens; - b.equal(3, a.length); - b.equal("lparen", a[0].type); - b.equal("text", a[1].type); - b.equal("rparen", a[2].type) - }, "test for last rule in ruleset to catch capturing group bugs":function() { - var a = this.tokenizer.getLineTokens("top", "start").tokens; - b.equal(1, a.length); - b.equal("support.type", a[0].type) - }}; - e.exports = c("async/test").testcase(d, "css tokenizer") -}); -if(module === require.main) { - require("../../../support/paths"); - exports.exec() -}; \ No newline at end of file diff --git a/build/ace/test/mode/html_test.js b/build/ace/test/mode/html_test.js deleted file mode 100644 index 7c52107c..00000000 --- a/build/ace/test/mode/html_test.js +++ /dev/null @@ -1,20 +0,0 @@ -define(function(a, c, e) { - var f = a("ace/document").Document, g = a("ace/range").Range, h = a("ace/mode/html").Mode, b = a("../assertions"); - c = {setUp:function() { - this.mode = new h - }, "test: toggle comment lines should not do anything":function() { - var d = new f([" abc", "cde", "fg"]); - new g(0, 3, 1, 1); - this.mode.toggleCommentLines("start", d, 0, 1); - b.equal(" abc\ncde\nfg", d.toString()) - }, "test: next line indent should be the same as the current line indent":function() { - b.equal(" ", this.mode.getNextLineIndent("start", " abc")); - b.equal("", this.mode.getNextLineIndent("start", "abc")); - b.equal("\t", this.mode.getNextLineIndent("start", "\tabc")) - }}; - e.exports = a("async/test").testcase(c) -}); -if(module === require.main) { - require("../../../support/paths"); - exports.exec() -}; \ No newline at end of file diff --git a/build/ace/test/mode/html_tokenizer_test.js b/build/ace/test/mode/html_tokenizer_test.js deleted file mode 100644 index 12b5ed6a..00000000 --- a/build/ace/test/mode/html_tokenizer_test.js +++ /dev/null @@ -1,24 +0,0 @@ -define(function(c, d, e) { - var f = c("ace/mode/html").Mode, a = c("../assertions"); - d = {setUp:function() { - this.tokenizer = (new f).getTokenizer() - }, "test: tokenize embedded script":function() { - var b = this.tokenizer.getLineTokens("