1
0
Fork 0
Commit Graph

490 Commits (perfodd)

Author SHA1 Message Date
Mike Gerwitz 840a495017 Began implementing named classes
- toString() implementation
2011-03-03 22:33:18 -05:00
Mike Gerwitz d23ae6210c Initial implementation of natural class definition by invoking class module 2011-03-03 19:43:20 -05:00
Mike Gerwitz 3f915d3644 The interface module may now be invoked, providing a more natural looking means of declaring interfaces 2011-03-03 19:08:24 -05:00
Mike Gerwitz bc9e2bb7b2 Fix setting public properties
- This currently only works with ES5 engines
  - Fallback to follow so this will work with pre-ES5 engines
- As such, I do not recommend using this commit outside of ES5-compliant engines that work properly with getters/setters
  - This does NOT include IE8, as IE8 only works with getters/setters on DOM elements
2011-03-02 23:21:10 -05:00
Mike Gerwitz 74c2fc57c1 Initial implementation of protected members
- This was quite the pain in the ass
- There are additional considerations. I DO NOT recommend using this commit. Check out a later commit.
2011-03-02 20:43:24 -05:00
Mike Gerwitz 2af7bcf45d Merge branch 'master' into visibility/master 2011-03-02 07:54:52 -05:00
Mike Gerwitz d74c01b562 Removed visibility dependency from test-class-abstract 2011-03-02 07:53:58 -05:00
Mike Gerwitz 40228361a1 test-class-parent no longer relies on member visibility to succeed
- This is important for pending changes
2011-03-02 07:51:18 -05:00
Mike Gerwitz e239352fc0 Resolved bug that was causing the system to think that Object prototype members were part of the abstract member list when attempting to define a method with the same name 2011-03-01 12:11:36 -05:00
Mike Gerwitz 02d0c07f98 Extended existing visibility tests to include methods 2011-01-27 22:39:52 -05:00
Mike Gerwitz 38c16048cb Began adding protected/private member support
- No longer adding ANY properties to prototype
- protected/private members no longer part of the public access level
2011-01-27 22:35:40 -05:00
Mike Gerwitz 881edc0cc6 Preparing to remove abstractMethods from public prototype; now uses hash for performance since it no longer needs to be referenced cleanly externally
- It will be later referenced via reflection
2011-01-25 00:13:47 -05:00
Mike Gerwitz 188ad2f4eb Getters/setters are not supported within interface definitions 2011-01-24 23:56:54 -05:00
Mike Gerwitz c7b262b271 Concrete methods cannot be overridden by abstract methods 2011-01-24 23:52:06 -05:00
Mike Gerwitz 37e5b1d94d util.propCopy() no longer needed 2011-01-24 23:38:27 -05:00
Mike Gerwitz 2a54662716 Added getter/setter keywords to propParse 2011-01-24 23:27:55 -05:00
Mike Gerwitz 96d2f74dae Method builder wraps overrides in an override function 2011-01-21 23:16:20 -05:00
Mike Gerwitz e03d5861bb Overridden methods must have >= length parameter lists 2011-01-21 22:19:22 -05:00
Mike Gerwitz b8a6aa2af6 Method builder does not permit overriding properties with methods 2011-01-21 21:53:31 -05:00
Mike Gerwitz 12e5b48a7d Cannot override method with property 2011-01-21 21:43:18 -05:00
Mike Gerwitz dea6972416 Began adding basic method builder (currently operates the same as property builder)
- They are essentially the same, but the method builder will have additional logic (e.g. method overriding) and support different keywords
2011-01-21 20:54:55 -05:00
Mike Gerwitz 906e468cdf Refactored test logic that will be shared between multiple members into inc-member_builder-common.js to reduce code duplication 2011-01-21 20:46:24 -05:00
Mike Gerwitz 2205af8c07 Can initialize member object with existing objects for each level of visibility 2011-01-20 23:56:39 -05:00
Mike Gerwitz 96cee9660b Began adding member_builder.initMembers() 2011-01-20 23:53:00 -05:00
Mike Gerwitz 3c45912f25 Added getter/setter to member builder 2011-01-20 23:50:53 -05:00
Mike Gerwitz b34e0b45f6 Property member builder tests now use object and deepEqual() to ensure that property is copied as intended 2011-01-20 22:22:12 -05:00
Mike Gerwitz f25ae7cb43 Made property member builder tests more specific to ensure that properties are not copied to multiple prototypes 2011-01-20 22:19:06 -05:00
Mike Gerwitz a58b7989ee Throws TypeError if multiple visibility keywords are given to member builder 2011-01-20 22:11:36 -05:00
Mike Gerwitz 9a5fe96c3e Result of buildProp() in tests unneeded 2011-01-20 21:53:18 -05:00
Mike Gerwitz 7f92a76e1f Member builder uses public prototype by default 2011-01-20 21:50:52 -05:00
Mike Gerwitz f27b0b01ab Member builder recognizes private members 2011-01-20 21:48:09 -05:00
Mike Gerwitz 0ba3122db5 Member builder recognizes protected members 2011-01-20 21:46:49 -05:00
Mike Gerwitz 23a7d9d540 Began adding member_builder 2011-01-18 23:47:58 -05:00
Mike Gerwitz 96f5b8ff58 Multiple spaces now properly handled in keyword parser 2011-01-18 19:33:33 -05:00
Mike Gerwitz 7dab5c7b20 Keywords are now returned by propParse 2011-01-17 22:24:02 -05:00
Mike Gerwitz 1f661bebcd Altered property keyword parser tests to be more easily recognizable 2011-01-17 20:41:04 -05:00
Mike Gerwitz afc5d4668d Abstract classes also have a more intuitive string representation 2011-01-17 20:22:30 -05:00
Mike Gerwitz d19638be4f Classes now return a more intuitive string representation 2011-01-17 20:20:39 -05:00
Mike Gerwitz 1b40451aad Put class-implement tests into self-executing functions in testdox format to make them more easily recognized
- Eventually, I'd like for all the tests to be in this format
2011-01-11 19:03:30 -05:00
Mike Gerwitz 7fb0f6a820 Classes now contain implement() method 2011-01-10 19:56:09 -05:00
Mike Gerwitz e822bc8840 Combined test now testing for Interface export 2011-01-09 02:00:36 -05:00
Mike Gerwitz aa1d38b007 Added deep cloning for objects 2011-01-09 01:46:46 -05:00
Mike Gerwitz 0f905481bf Added deep cloning for arrays 2011-01-09 01:38:40 -05:00
Mike Gerwitz 56c13b757b isInstanceOf() now works with interfaces 2011-01-04 00:37:54 -05:00
Mike Gerwitz c3b00ab9b7 Encapsulating implemented list (can use isInstanceOf() or a future reflection API) 2011-01-03 23:41:45 -05:00
Mike Gerwitz 0b112dac51 Abstract method list is now updated for classes that implement interfaces 2011-01-03 23:25:27 -05:00
Mike Gerwitz c12ac412cb Class.{implements => implement} - like Class.extend(), we're looking for a verb 2010-12-30 09:54:53 -05:00
Mike Gerwitz 5b3ecf853b Exposed Interface 2010-12-30 09:24:52 -05:00
Mike Gerwitz d5d6082bfb Interface methods are now copied to the class prototype (basic implementation - no deep copy for interface subtypes yet) 2010-12-29 23:34:12 -05:00
Mike Gerwitz 459d5e967b Classes now store implemented interfaces in a list (does not yet import methods) 2010-12-29 23:33:30 -05:00
Mike Gerwitz 80b0732be1 Interfaces cannot be instantiated 2010-12-29 22:40:23 -05:00
Mike Gerwitz b357293890 Classes now tested using isInstanceOf() 2010-12-29 21:45:33 -05:00
Mike Gerwitz 76969201fb Added isA() as an alias for isInstanceOf() 2010-12-29 21:37:11 -05:00
Mike Gerwitz 6a24f2ad13 Added isInstanceOf() partially applied function to class instances 2010-12-29 21:32:16 -05:00
Mike Gerwitz 83cecb5fdc Instantiating test object only once 2010-12-29 21:18:03 -05:00
Mike Gerwitz 96909732db Began adding isInstanceOf, starting with prototype chain checks 2010-12-29 21:13:21 -05:00
Mike Gerwitz 004ccfa05b Interfaces cannot inherit from Classes 2010-12-28 21:56:55 -05:00
Mike Gerwitz c9d0e027fa Added isClass() and isClassInstance() methods 2010-12-28 20:58:42 -05:00
Mike Gerwitz 928a0ea297 Removed Interface.abstractMethod() in favor of 'abstract' keyword 2010-12-28 20:13:50 -05:00
Mike Gerwitz 44186068b4 Class constructors are now self-invoking
- Permits omitting 'new' keyword, which is a style preferred by some (such as Crockford)
- It's very difficult to use apply() with the 'new' keyword - this method permits a simple way of passing an argument list to the constructor
2010-12-28 19:05:53 -05:00
Mike Gerwitz 1fc791fa31 Altered secure property test to work properly in IE8, which falls back due to its incomplete implementation of Object.defineProperty() 2010-12-28 13:45:33 -05:00
Mike Gerwitz c29d3a15d7 Corrected line over 80 character mark 2010-12-28 13:21:48 -05:00
Mike Gerwitz dce46bb555 Tests will not attempt to use Object.isFrozen() unless defined 2010-12-28 09:14:54 -05:00
Mike Gerwitz 665b11e116 Removed forEach from tests to support engines that have not yet implemented that method (new in ES5) 2010-12-28 09:14:35 -05:00
Mike Gerwitz ac6fb40c21 IE does not like 'item' as a var name 2010-12-28 09:04:27 -05:00
Mike Gerwitz 2325bd9a8f Resolved getter/setter test issues for browsers that do not support the functionality
- __define{Getter,Setter}__ had to be used rather than object notation due to syntax errors in older browsers
2010-12-28 09:02:23 -05:00
Mike Gerwitz 3347b8f6d5 Added ease-full.js, which includes tests to be run client-side (initial implementation; may be buggy) 2010-12-28 00:23:13 -05:00
Mike Gerwitz 828a366f29 Renamed prop_parse.{parse => parseKeywords} 2010-12-27 23:12:37 -05:00
Mike Gerwitz 1b708bac63 Added property keyword parser tests (was previously encapsulated) 2010-12-27 23:04:55 -05:00
Mike Gerwitz 1364d5967f Abstract methods must contain a parameter list as an array 2010-12-27 22:30:28 -05:00
Mike Gerwitz 28cf2d0e2b Moved util abstract method tests into their own test case 2010-12-27 22:24:41 -05:00
Mike Gerwitz 69391f9b48 Finished correcting assertion tests with new implementation 2010-12-27 22:20:29 -05:00
Mike Gerwitz e789e58000 Removed Class.abstractMethod in favor of property keyword 2010-12-27 22:11:37 -05:00
Mike Gerwitz 9666a5f80f Began adding property keyword parsing (concept) 2010-12-27 20:49:59 -05:00
Mike Gerwitz 3ef2a28e24 Merge branch 'master' of github.com:mikegerwitz/easejs 2010-12-23 15:59:57 -05:00
Mike Gerwitz f58586fc94 Added tests to ensure constructor is properly applied to subtypes 2010-12-23 15:57:45 -05:00
Mike Gerwitz 98fd1e7c7c All tests now using common.require() to prepare for client-side testing 2010-12-21 23:25:12 -05:00
Mike Gerwitz a3cf31aa40 Tests now explicitly specify relative path to tested module
- Certain modules otherwise have naming conflicts (e.g. util in node.js is loaded instead)
2010-12-21 22:51:42 -05:00
Mike Gerwitz 445fc936a2 Added basic test for combined file (does not yet test functionality) 2010-12-20 22:49:52 -05:00
Mike Gerwitz 8b8c7e8533 separated rmtrail function into its own tool and added test 2010-12-20 22:19:18 -05:00
Mike Gerwitz 3ffb150207 Tests for util.defineSecureProp() (had accidently omitted from previous commit) 2010-12-20 19:13:27 -05:00
Mike Gerwitz 600e389b40 Refactored abstract method logic out of util.propCopy() into class extend() 2010-12-19 00:11:39 -05:00
Mike Gerwitz 2c49e9719f util.propParse() now ignores instance prototype properties 2010-12-18 07:07:27 -05:00
Mike Gerwitz 53a62742c5 Added another subtype to test case to ensure parent property intialization of class instances is recursive 2010-12-17 00:01:22 -05:00
Mike Gerwitz ec27eb2286 Added index to propCopy() performDefault test message 2010-12-16 23:57:41 -05:00
Mike Gerwitz a06d9a7204 Ensured __initProps() is treated as a reserved method and cannot be declared within Classes 2010-12-16 23:55:56 -05:00
Mike Gerwitz 6b6ffe0134 propCopy() parser function overrides can now invoke default functionality 2010-12-16 23:49:52 -05:00
Mike Gerwitz 591434b82f [*] Previous commit (property cloning per instance) now applied to subtypes as well 2010-12-16 23:37:18 -05:00
Mike Gerwitz fe853b505b [*] Properties are no longer shared between class instances
- Properties were previously shared on the prototype level, acting as though they were static class properties, which can cause some nasty bugs
2010-12-16 23:18:30 -05:00
Mike Gerwitz 6efaba7fc5 Added util.clone(); does not yet support deep cloning 2010-12-16 23:15:42 -05:00
Mike Gerwitz a2c894b6bb Added ability to override propCopy() parser functions 2010-12-16 21:11:07 -05:00
Mike Gerwitz 5126c71a2d Using TypeError instead of Error for property type inconsistiencies 2010-12-10 00:00:47 -05:00
Mike Gerwitz 25dc7e031e Ensured properties cannot be overridden with methods 2010-12-07 20:24:51 -05:00
Mike Gerwitz eced0a7e91 Both concrete and abstract methods now use the same callback in propParse()
- Now uses an is_abstract parameter
- Intended to reduce clutter and duplicate code
2010-12-07 00:46:50 -05:00
Mike Gerwitz 994b8e16fa [1 failing test] Added support for 'each' in propParse() 2010-12-07 00:39:25 -05:00
Mike Gerwitz fd2b3ccc6d Added support for getters/setters in propParse() 2010-12-05 20:50:13 -05:00
Mike Gerwitz 20b78ba73a Minor formatting change in propParse test 2010-12-04 14:05:56 -05:00
Mike Gerwitz 6fd31a8e76 Added abstract method support to propParse() 2010-12-04 14:03:26 -05:00
Mike Gerwitz 4037cc1343 Began adding util.propParse() to simplify design (supports scalar, arr and obj props and concrete methods) 2010-12-04 13:59:06 -05:00
Mike Gerwitz 60025bd048 Added extend method to Interface 2010-12-01 23:27:31 -05:00
Mike Gerwitz 611ee9ab35 Added tests to assure that intefaces can be extended from other interfaces 2010-12-01 23:13:21 -05:00
Mike Gerwitz 0d45716a43 Added missing space to error string 2010-12-01 23:04:22 -05:00
Mike Gerwitz 84dcca35d2 Interface prototype contains defined methods 2010-12-01 23:01:20 -05:00
Mike Gerwitz 789c7f9b5e Moved extend-related tests to their own file for interfaces in preparation for additional extend tests 2010-12-01 21:54:02 -05:00
Mike Gerwitz 3ebe82c0a5 Interface does not depend on Class 2010-12-01 21:46:36 -05:00
Mike Gerwitz c910dafb76 Interfaces permit only abstract methods 2010-12-01 21:39:41 -05:00
Mike Gerwitz 2e930482d2 Abstract methods of subtypes overriding abstract methods must be compatiable with the previous definition 2010-12-01 21:34:57 -05:00
Mike Gerwitz 2e8097e21e Altered abstract method declaration (using strings to represent arguments rather than a function) 2010-12-01 21:13:51 -05:00
Mike Gerwitz 837422c46f Added util.isAbstractMethod 2010-12-01 21:00:15 -05:00
Mike Gerwitz 2edcb8a75e Only methods are permitted within interface declarations 2010-12-01 19:38:30 -05:00
Mike Gerwitz b294f84481 Began Interface development 2010-12-01 19:27:40 -05:00
Mike Gerwitz 1e2e73c9f0 Began moving utility methods into their own module 2010-11-15 23:44:15 -05:00
Mike Gerwitz 0e232b4a2c Freezing class object after creation 2010-11-15 23:22:24 -05:00
Mike Gerwitz 0b4ec19911 Case of poor copy-and-paste 2010-11-15 18:31:10 -05:00
Mike Gerwitz d4593725a4 If a definition is provided for an abstract method, the concrete implementation must be compatiable (proper number of arguments) 2010-11-14 21:33:13 -05:00
Mike Gerwitz bb631eb706 Added test to ensure constructor of abstract supertypes can be called 2010-11-14 21:09:24 -05:00
Mike Gerwitz 0d1ba74415 Ensured abstract classes cannot be instantiated and permitted their instantiation during extending so that it may be used in the subclass's prototype 2010-11-14 20:48:39 -05:00
Mike Gerwitz 113e3b974f Properly implemented abstract methods list 2010-11-14 20:30:33 -05:00
Mike Gerwitz d3ba8a9dfe Corrected abstract class tests (.equals() = .equal()) 2010-11-14 01:11:24 -05:00
Mike Gerwitz a083313538 Began implementing abstract methods 2010-11-14 00:47:27 -05:00
Mike Gerwitz 88b1a72255 Added some beginning test cases for abstract classes (will currently fail) 2010-11-14 00:41:18 -05:00
Mike Gerwitz 97f3c5ed5d Added tests to ensure it is possible to extend classes that were not previously created using Class.extend() 2010-11-11 21:02:09 -05:00
Mike Gerwitz e56ecce61f Added index.js 2010-11-11 08:50:05 -05:00
Mike Gerwitz 16a91b728e Methods can no longer be overridden with non-methods (anything other than a Function) 2010-11-10 23:42:26 -05:00
Mike Gerwitz 61985eea47 Added checks for ES5 features 2010-11-10 23:28:20 -05:00
Mike Gerwitz 8422bea1d6 Added getter/setter override support 2010-11-10 23:19:46 -05:00
Mike Gerwitz 0c963d1d00 Added access to parent prototype via parent property 2010-11-10 22:54:24 -05:00
Mike Gerwitz 607bbf7f4c Added support for _super method
- Motivation from John Reisg's "Simple Javascript Inheritance": http://ejohn.org/blog/simple-javascript-inheritance/
2010-11-10 22:49:27 -05:00
Mike Gerwitz 6ea6fd0bb7 Began adding parent tests (parent method call currently fails) 2010-11-10 22:19:50 -05:00
Mike Gerwitz 26b70bcd93 Changed license to LGPL
My reason for doing so is more practical - for the same reasons that GNU released glib and
other libraries under the LGPL. The reason is that there are so many other alternatives out
there that are released under more permissive licenses. This isn't anything special. Therefore,
to encourage its adoption, I've released it under the LGPL.

All my larger projects/libraries that have few/no alternatives will be released under the
GPL/AGPL.
2010-11-10 22:07:03 -05:00
Mike Gerwitz fdf389ba2e Added inheritance instanceof assertions 2010-11-10 21:39:09 -05:00
Mike Gerwitz 909542d19b Added support for extending classes via convenience method and tests for property inheritance 2010-11-10 21:10:31 -05:00
Mike Gerwitz 0d5afa8d71 Moved object extend() assertion to its own file to prepare for extending subtypes 2010-11-10 20:48:35 -05:00
Mike Gerwitz 6a14b86777 Minor documentation changes 2010-11-10 20:45:33 -05:00
Mike Gerwitz 9071a158a2 Added tests for constructor arguments 2010-11-10 19:29:56 -05:00
Mike Gerwitz bebaee7b46 Moved constructor tests into their own file 2010-11-10 19:21:53 -05:00
Mike Gerwitz 94835d290a Implemented constructor 2010-11-10 19:19:02 -05:00
Mike Gerwitz 1ee270883e Began implementing constructor (not yet operable - test will fail) 2010-11-10 19:02:52 -05:00
Mike Gerwitz 8d6c2645bc Began adding Class.extend() 2010-11-10 18:40:36 -05:00
Mike Gerwitz 979331cda3 Initial commit beginning to outline concept 2010-11-10 17:41:12 -05:00