1
0
Fork 0
Commit Graph

504 Commits (d9b86c154467400807150a1aca7712324d3540d0)

Author SHA1 Message Date
Mike Gerwitz 81fa2ae424 Merge branch 'master' into 'virtual/master'
- Resolved conflicts
2011-06-30 23:00:13 -04:00
Mike Gerwitz adb7e088b7 [#19] Cannot declare virtual static methods 2011-06-09 22:22:14 -04:00
Mike Gerwitz 08dc2559b4 [#19] Cannot declare virtual properties 2011-06-09 19:46:13 -04:00
Mike Gerwitz 4fea62a8ed [#19] Removed 'final' keyword and all associated logic
- Kept FinalClass'
2011-06-08 01:26:04 -04:00
Mike Gerwitz 8b83e85c43 [#19] Implemented 'virtual' keyword
- Baby steps. 'override' keyword is not yet necessary.
- Final not yet removed
2011-06-08 01:11:53 -04:00
Mike Gerwitz 24a04369ae Properly copying over abstract methods in implement() 2011-06-08 01:10:44 -04:00
Mike Gerwitz 557dcf6904 Fixed static bug and removed late static binding
- Late static binding will be revisited in the future
2011-05-31 22:29:07 -04:00
Mike Gerwitz 9db4e8d99f Supplying alternative to getMethodInstance() for static methods 2011-05-30 23:03:08 -04:00
Mike Gerwitz 85c4c70b7d Removed unneeded argument 2011-05-30 20:10:52 -04:00
Mike Gerwitz 76bc7361d3 Implemented GH#2 - Keyword restrictions; throw exception when unknown keywords are used 2011-05-22 22:11:57 -04:00
Mike Gerwitz cf344186fc Implement GH#1 Provide useful error when attempting to extend from non-constructor 2011-05-22 21:54:41 -04:00
Mike Gerwitz 8c62ee021c Added support for final subtypes 2011-05-22 21:35:29 -04:00
Mike Gerwitz a67d704837 Added support for named abstract subclasses 2011-05-22 21:05:46 -04:00
Mike Gerwitz db9de2712e Added class_abstract docblocks 2011-05-22 19:15:19 -04:00
Mike Gerwitz e0de030cee Implemented AbstractClass
- Some of this functionality requires further refactoring
2011-05-22 16:08:48 -04:00
Mike Gerwitz b359906aa3 Refactored method validations into separate method 2011-05-22 11:25:15 -04:00
Mike Gerwitz 9690663d1c Added support for final classes
- This commit was originally many. Unfortunately, certain Git objects became
  corrupt shortly after my 500th commit due to HDD issues. Due to the scope, I
  was unable to recover the set of commits I needed (after an hour of trying
  every method).
  - Fortunately, vim's swap files came to the rescue. Had I been able to
    properly shut down my PC, I would have been rather frustrated.
2011-05-22 11:19:51 -04:00
Mike Gerwitz 6e1d796092 Implemented constant properties 2011-05-19 19:48:51 -04:00
Mike Gerwitz 2d91a221aa Const keyword now results in static property 2011-05-19 19:07:31 -04:00
Mike Gerwitz 030bdef821 Static keyword cannot be used with const for properties 2011-05-19 18:30:55 -04:00
Mike Gerwitz f3c1d0f9af Methods cannot be declared as constant 2011-05-19 07:54:51 -04:00
Mike Gerwitz 0c5293991c Disallowed use of final keyword with properties 2011-05-18 20:51:02 -04:00
Mike Gerwitz f47fcf4f46 Simplified and enhanced util.freeze() 2011-05-15 19:12:24 -04:00
Mike Gerwitz 4c74f2a1f2 Added final keyword for methods 2011-05-15 19:11:23 -04:00
Mike Gerwitz 775438c1b6 Implemented private static properties 2011-05-13 00:55:09 -04:00
Mike Gerwitz 9b20cdff48 Initial concept for protected static property access 2011-05-12 00:25:34 -04:00
Mike Gerwitz 9067bbf0cf Static property accessor method is no longer enumerable 2011-05-11 20:53:43 -04:00
Mike Gerwitz fa8d1bebe1 Implemented private static methods 2011-05-11 20:10:10 -04:00
Mike Gerwitz a303adddea Added tests to ensure that static method overrides are supported 2011-05-11 18:36:49 -04:00
Mike Gerwitz 9822894eae Protected static methods are now inherited by subtypes 2011-05-11 17:56:48 -04:00
Mike Gerwitz d542f9d803 Extendig concrete classes should no longer consume an instance id unnecessarily
- This is not tested because it would be testing too closely to the implementation
2011-05-10 23:35:43 -04:00
Mike Gerwitz 6325b0cf17 [Cleanup] Removed unused arguments from concrete ctor 2011-05-10 23:32:13 -04:00
Mike Gerwitz 91a47e4dcd [Bug Fix] Concrete class constructor is no longer invoked on extend
- The ctor must be instantiated for use in the prototype chain
- This was working in the past, but apparently no test existed for it and
  refactoring broke it
2011-05-10 23:32:13 -04:00
Mike Gerwitz 3c774a7b16 Implemented protected static members within static methods
- Still not inheritence
2011-05-10 19:54:23 -04:00
Mike Gerwitz a246dd67e0 Began adding protected static members (supported for instance methods)
- No inheritance support yet
2011-05-09 23:09:32 -04:00
Mike Gerwitz c980a59273 Comment correction for static members 2011-04-14 20:28:42 -04:00
Mike Gerwitz 26cf32abe5 Enhanced static property setter to support setting to both undefined and null values 2011-04-13 23:53:03 -04:00
Mike Gerwitz 462671cfba Can no longer set values of undeclared static properties 2011-04-13 23:45:26 -04:00
Mike Gerwitz 7e53df0e84 Static property setter now returns calling class 2011-04-13 23:35:54 -04:00
Mike Gerwitz e3c526b89d Writes to public static properties now work properly 2011-04-13 23:06:24 -04:00
Mike Gerwitz 44cd8db82d Began implementing static property method (getter) 2011-04-13 22:38:05 -04:00
Mike Gerwitz 143348d390 propobj doSetup() param doc fix 2011-04-13 19:53:22 -04:00
Mike Gerwitz 63a4f95f65 Fix for overriding protected with protected
- A better solution may be explored
2011-04-13 14:48:20 -04:00
Mike Gerwitz 4a90b7b809 Public static properties references are now shared with subtypes 2011-04-10 22:32:46 -04:00
Mike Gerwitz aead20290c Inherited static members are no longer copied by reference
- Sharing values with supertype = bad
2011-04-05 23:47:44 -04:00
Mike Gerwitz 604e03fa55 util.clone() no longer falsely attempts to clone functions 2011-04-05 23:47:08 -04:00
Mike Gerwitz 4a0537223b Added deep copy to util.copyTo() 2011-04-05 23:38:13 -04:00
Mike Gerwitz fad503422e Subtypes now inherit public static members from their supertype 2011-04-05 23:11:25 -04:00
Mike Gerwitz a1ed610681 More efficient inheritance check for __initProps()'s __inst definition 2011-04-05 22:09:02 -04:00
Mike Gerwitz 7560d57619 Implemented __self for static access 2011-04-05 22:07:13 -04:00
Mike Gerwitz af53fe81b4 Added support for public static getters/setters 2011-04-05 00:08:39 -04:00
Mike Gerwitz 4d0724b85d Added util.copyTo() 2011-04-05 00:05:18 -04:00
Mike Gerwitz e93a4db3e4 Began implementing public static members 2011-04-04 23:07:01 -04:00
Mike Gerwitz 7a2640eb5d Removing unnecessary method reference (more post-refactor cleanup) 2011-04-04 22:42:09 -04:00
Mike Gerwitz 666d1df3fb Removed unused var from class_builder
- 'properties' var no longer used after prior refactoring
2011-04-04 22:42:04 -04:00
Mike Gerwitz dddd26761c Current __self -> __inst; __self will be used in a different manner in following commits 2011-04-03 11:57:15 -04:00
Mike Gerwitz 1abf127ccc Protected property values, when set by the parent, are now available to subtypes 2011-04-02 10:58:26 -04:00
Mike Gerwitz 0c48f00c74 Corrected documentation and default value for unless_exists in propobj's doSetup() 2011-04-02 10:31:39 -04:00
Mike Gerwitz 61f2f7e22d Methods can now be properly overridden when visibility is escalated 2011-04-01 06:28:45 -04:00
Mike Gerwitz 170eb06af6 Only adding __self() for instance, not supertype init 2011-03-30 23:31:46 -04:00
Mike Gerwitz 6ade1c021f Implemented GH#15 Access to public interface from within class instance 2011-03-30 00:55:27 -04:00
Mike Gerwitz 9d47e64ac3 Properties can no longer be declared as abstract 2011-03-29 23:48:17 -04:00
Mike Gerwitz 8a3010c964 Implemented GH#3 Abstract keyword cannot be used with private members 2011-03-29 23:39:49 -04:00
Mike Gerwitz 08771b2b97 Chose a more tolerable name to show in debuggers for class instances 2011-03-29 22:04:54 -04:00
Mike Gerwitz 5cb0b8355f __super() method is now properly set on context 2011-03-29 22:02:42 -04:00
Mike Gerwitz f43959640c Moved attachId() to class_builder 2011-03-29 00:15:16 -04:00
Mike Gerwitz 55288f1e07 Moved attachAbstract() to class_builder 2011-03-29 00:08:49 -04:00
Mike Gerwitz c8e2ebc4ea Added toString() to forced-public methods list 2011-03-28 19:52:16 -04:00
Mike Gerwitz bc8ec4e0be Added tests for forced-public methods 2011-03-28 19:17:38 -04:00
Mike Gerwitz 52aab7fa54 reserved => reserved_members 2011-03-28 19:01:58 -04:00
Mike Gerwitz 2555a0db47 Added tests for reserved members 2011-03-28 18:58:23 -04:00
Mike Gerwitz 030b207f8f Public-required members are now stored in a hash 2011-03-28 18:21:06 -04:00
Mike Gerwitz 8cd25b1bc4 Now storing reserved names in a hash 2011-03-28 18:18:40 -04:00
Mike Gerwitz 8ba68b31dc Split concrete and abstract ctor generation into two separate functions 2011-03-27 23:16:19 -04:00
Mike Gerwitz 5bb0269280 Added test todo for class_builder 2011-03-27 23:09:17 -04:00
Mike Gerwitz adfc607c8b Continued moving class creation logic into class_builder module
- Again, very messy. Not yet complete.
2011-03-27 23:04:40 -04:00
Mike Gerwitz 87e7872f61 Using __dirname for modules rather than relative path 2011-03-27 02:02:04 -04:00
Mike Gerwitz af8f0b1566 Began refactoring into class_builder module
- Sloppy thusfar. Baby steps.
2011-03-27 01:57:17 -04:00
Mike Gerwitz 30d10ff9d7 Constructor must now be public 2011-03-23 21:35:25 -04:00
Mike Gerwitz 2388d8f4d3 Typo caught my eye in comment 2011-03-23 21:03:19 -04:00
Mike Gerwitz 4d2852627e All interface members must now be public 2011-03-19 00:58:42 -04:00
Mike Gerwitz 5af833ab05 Disallowing member redeclaration in same class definition 2011-03-19 00:48:02 -04:00
Mike Gerwitz ce736bea55 Visibility de-escalation no longer permitted 2011-03-18 23:42:07 -04:00
Mike Gerwitz 9b9bcfd150 Apparently methodOverride callback isn't used anymore in this context. Forgot to remove. 2011-03-16 23:32:48 -04:00
Mike Gerwitz 36ae6bcd81 Now throwing expection if more than two arguments are passed to extend() when implementing 2011-03-16 19:50:47 -04:00
Mike Gerwitz 14cac6b461 Can now specify parent class in extend() when implementing atop an empty base 2011-03-16 19:24:02 -04:00
Mike Gerwitz 80f3ec6b68 Preventing base specification via extend() when implementing off of an existing base class 2011-03-16 19:06:16 -04:00
Mike Gerwitz 58cb196213 Extending class while using temporary name object is now permitted 2011-03-16 18:18:33 -04:00
Mike Gerwitz dde4fb99d3 Corrected error language for invoking class module 2011-03-16 17:50:11 -04:00
Mike Gerwitz 5fe08a18ac Corrected argument documentation 2011-03-15 00:17:02 -04:00
Mike Gerwitz b2161d1822 Now storing visibility data in class instance (so GC can clear it) 2011-03-14 23:49:11 -04:00
Mike Gerwitz 66758500e6 Class metadata is now stored in class object (first step in working with GC) 2011-03-14 23:43:56 -04:00
Mike Gerwitz 7b766c1b14 Altered toString() defaults to be more consistent with v8 2011-03-14 18:16:53 -04:00
Mike Gerwitz d05652f880 Fixed visibility issues in IE6
- Wasn't properly falling back
2011-03-13 21:47:40 -04:00
Mike Gerwitz 984a14b087 Added more detailed documentation regarding the class_instance object 2011-03-13 14:51:40 -04:00
Mike Gerwitz e03c081cfd Fixed bug that made private members of a supertype inaccessible to methods that have not been overridden by a subtype
- In doing so, abandoned the super identifier (sid) for a more elegant solution with class ids (cid's)
- This permits fast and easy private member swapping via getMethodInstance() in class.js
2011-03-13 04:51:00 -04:00
Mike Gerwitz e4e8900a9f Storing each supertype's private members in a separate object to prepare for future change
- sid = super identifier
2011-03-13 03:55:43 -04:00
Mike Gerwitz 6b374902ae Separated private members into a separate object (propobj) to prepare for future modifications
- This incurs a performance hit for accessing protected members, and even further for public, internally
  - But speeds up access to private members, likely due to there being less members
2011-03-12 23:48:38 -05:00
Mike Gerwitz e0fb37daa0 Overridden methods now property return instance when returning 'this'
- There may be a cleaner way to do this. This is a quick fix.
2011-03-10 12:40:55 -05:00
Mike Gerwitz 7427958ec0 Returning 'this' from a method will now return the object instance, not the internal property object 2011-03-10 12:19:39 -05:00
Mike Gerwitz 960be880ab Merge branch 'master' into visibility/master 2011-03-07 23:09:02 -05:00
Mike Gerwitz 841b5ac5a5 Replaed all __{define,lookup}[GS]etter__'s with defineProperty/getOwnPropertyDescriptor 2011-03-07 22:44:47 -05:00
Mike Gerwitz df409c1e58 Property object now properly falls back in IE8 2011-03-07 09:05:05 -05:00
Mike Gerwitz 00378da630 Merge branch 'master' into visibility/master 2011-03-07 09:03:34 -05:00
Mike Gerwitz fbc58384b4 Provided a more accurate mechanism for detecting Object.defineProperty (tests in IE8 fixed) 2011-03-07 09:03:03 -05:00
Mike Gerwitz e05a65d5fa Initial concept of inheriting protected/private members 2011-03-07 00:14:43 -05:00
Mike Gerwitz f692ebcdfd Once again refactored propobj.setup(), removing unnecessary argument and separating into inheritance and non-inheritance methods 2011-03-07 00:10:12 -05:00
Mike Gerwitz d1be2d5351 Refactored propbj.setup() to be a bit more managable 2011-03-06 23:56:19 -05:00
Mike Gerwitz 30bfde50cd Tada! Private members. 2011-03-06 23:03:39 -05:00
Mike Gerwitz c1765cd720 Using visibility fallback for browsers that do not support getters/setters 2011-03-06 22:43:14 -05:00
Mike Gerwitz df2943b5a1 Replaced __define[GS]etter__ with defineProperty for prop proxy 2011-03-06 22:16:50 -05:00
Mike Gerwitz 3651e31d20 Refactored property proxying into its own method 2011-03-06 21:48:18 -05:00
Mike Gerwitz e463d2c411 Began factoring property instance object out of class module 2011-03-06 18:19:19 -05:00
Mike Gerwitz 5d8fdc5204 Merge branch 'master' into visibility/master
Conflicts:
	lib/class.js
2011-03-06 12:39:26 -05:00
Mike Gerwitz 517b2be464 Fix toString() override for IE
- All tests once again pass on IE6
2011-03-06 12:38:31 -05:00
Mike Gerwitz c0f351d173 Merge branch 'master' into visibility/master 2011-03-05 23:12:55 -05:00
Mike Gerwitz d6cca75093 Can now override toString() method of a class 2011-03-05 23:11:13 -05:00
Mike Gerwitz b321610cc7 Interface name included in instantiation error, if available 2011-03-05 21:46:44 -05:00
Mike Gerwitz 6f7dabe35e Interface name is included in declaration errors, if available 2011-03-05 17:27:02 -05:00
Mike Gerwitz 2967cc7a9a Class name is now provided in all errors where name is available, within class module 2011-03-05 13:13:53 -05:00
Mike Gerwitz da8be9affa Interface definition errors now contain class name when available 2011-03-05 12:57:21 -05:00
Mike Gerwitz 5f739e604b Class name is included in definition errors when available 2011-03-05 12:56:14 -05:00
Mike Gerwitz 635395b303 Merge branch 'master' into visibility/master 2011-03-05 03:23:11 -05:00
Mike Gerwitz 2c2701f4ab Implemented staging-style named class definition when implementing interfaces 2011-03-05 03:22:45 -05:00
Mike Gerwitz 8749228764 interface() calls now push/pop rather than shift/unshift (performance) 2011-03-05 03:03:50 -05:00
Mike Gerwitz 0f9454b79b interface() no longer returns a usable class
- Number of reasons. First and foremost, it doesn't make sense to return a usable class with no body/definition
- Secondly, to make the following commit(s) possible and consistent
2011-03-05 02:59:21 -05:00
Mike Gerwitz ace9f4c1ea Began implementing class name staging (implement() does not yet work with it) 2011-03-05 00:33:47 -05:00
Mike Gerwitz bedc3c95af Moved named class argument check error to a more sensible location and amended error message 2011-03-04 23:44:19 -05:00
Mike Gerwitz 0ccdf07145 Implemented strict argument check for interface creation 2011-03-04 23:43:30 -05:00
Mike Gerwitz 649356ef23 Refactored interface module invocation into separate functions for named and anonymous 2011-03-04 23:35:28 -05:00
Mike Gerwitz e3075b0479 Refactored class module invocation method into separate functions
- The class module is getting too big. Something will have to be done soon.
2011-03-04 19:49:15 -05:00
Mike Gerwitz b158e542d5 Declaring named class will throw error for extreaneous arguments 2011-03-04 16:36:15 -05:00
Mike Gerwitz dca7653adf Merge branch 'master' into visibility/master 2011-03-04 00:26:02 -05:00
Mike Gerwitz 7bb87e370f No need to recheck the type each time 2011-03-04 00:24:42 -05:00
Mike Gerwitz 009c4a93e9 Interfaces now have sane/useful values when converted to strings 2011-03-04 00:19:02 -05:00
Mike Gerwitz ec7b4e2b6b Updated class module docblock 2011-03-04 00:17:25 -05:00
Mike Gerwitz 85e687e29c Added Interface.isInterface() 2011-03-03 23:59:37 -05:00
Mike Gerwitz 4148f8742d Merge branch 'master' into visibility/master
Conflicts:
	test/test-class-extend.js
2011-03-03 23:29:20 -05:00
Mike Gerwitz 81d03cb984 Altered class toString() representations to be more consistent with JS 2011-03-03 23:00:59 -05:00
Mike Gerwitz e2cba458d8 Class instances now have different default toString() implementations than uninstantiated classes
- Instance id is not yet included, as that is currently in a different branch
2011-03-03 22:53:20 -05:00
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 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 e3561a492f Modified interface property message to be a bit more helpful in a likely common scenerio 2011-03-01 09:17:24 -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 8c7ad787c8 Abstract methods list is no longer public 2011-01-25 00:24:50 -05:00
Mike Gerwitz fb5d541ea3 Removed old console.log 2011-01-25 00:23:56 -05:00
Mike Gerwitz fa8cddea07 Meta now uses deep cloning 2011-01-25 00:19:48 -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 194aa02402 {new,} TypeError 2011-01-24 23:57:19 -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 70f5d09c34 Interface now uses propParse and member builders 2011-01-24 23:35:45 -05:00
Mike Gerwitz cd7b2563e5 Combined shared conditions in separate if statements 2011-01-24 23:30:32 -05:00
Mike Gerwitz eba32ed4cb Beginning to move Class over to use member builders 2011-01-24 23:28:48 -05:00
Mike Gerwitz 2a54662716 Added getter/setter keywords to propParse 2011-01-24 23:27:55 -05:00
Mike Gerwitz 5a3b401647 Began moving abstract logic out of propCopy 2011-01-24 20:58:58 -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 94d6fb1655 Added params to member_builder.initMembers() docblock 2011-01-21 00:09:26 -05:00
Mike Gerwitz f55def4f06 Preparing class to use member_builder 2011-01-21 00:03:41 -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 a58b7989ee Throws TypeError if multiple visibility keywords are given to member builder 2011-01-20 22:11:36 -05:00
Mike Gerwitz 9d9d00388c Presumably private keywords will be used more frequently than protected, if the class is properly encapsulated 2011-01-20 21:51:35 -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 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 7fb0f6a820 Classes now contain implement() method 2011-01-10 19:56:09 -05:00
Mike Gerwitz ec9f24a926 Moved implement() into its own method, accepting destination object as the first parameter 2011-01-10 19:00:26 -05:00
Mike Gerwitz fba94f2e0b Added todo to profile propParse's use of fvoid vs if statements 2011-01-09 19:44:09 -05:00
Mike Gerwitz 7301ddbac2 [minor] formatting fix 2011-01-09 19:41:47 -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 3e8dba2fdc Added missing comma to variable list 2011-01-09 00:40:35 -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 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 9ef73195c5 [minor] formatting fix 2010-12-29 22:51:29 -05:00
Mike Gerwitz ca71fc6296 Remove accidental attach of isInstanceOf() to Class 2010-12-29 22:45:47 -05:00
Mike Gerwitz 80b0732be1 Interfaces cannot be instantiated 2010-12-29 22:40:23 -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 96909732db Began adding isInstanceOf, starting with prototype chain checks 2010-12-29 21:13:21 -05:00
Mike Gerwitz 0103df3e71 Fixed self-invoking constructor issue in IE 2010-12-29 09:43:00 -05:00
Mike Gerwitz 38a6a4ee6a Added missing semi-colons that would otherwise be inserted via semicolon insertion 2010-12-28 22:10:12 -05:00
Mike Gerwitz 789f2390af All functions are now camelCase 2010-12-28 22:08:30 -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 828a366f29 Renamed prop_parse.{parse => parseKeywords} 2010-12-27 23:12:37 -05:00
Mike Gerwitz 87e293e33f Property keyword parser now simply checks for spaces (to be flexible enough to support any keywords in the future) 2010-12-27 23:04:50 -05:00
Mike Gerwitz 3277a30d54 Removed now unnecessary abstract keyword check from util.propParse() 2010-12-27 22:32:30 -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 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 f705f38640 Began adding prop_parser module and moved existing property keyword parser function into it 2010-12-27 20:56:36 -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 a93ff61bde If setting a secure property fails, it will force a fallback to prevent performance degredation due to exceptions 2010-12-22 22:17:07 -05:00
Mike Gerwitz 7e7080ccbf util.defineSecureProp() no longer performs fallback check on each invocation 2010-12-21 22:41:50 -05:00
Mike Gerwitz d5f37f294e IE8 does not support Object.defineProperty on non-DOM objects
(see http://stackoverflow.com/questions/3830800/object-defineproperty-in-es5)
2010-12-21 14:37:34 -05:00
Mike Gerwitz e1d7b80d46 Calling hasOwnProperty via Object prototype in case it has been overridden 2010-12-21 10:09:18 -05:00
Mike Gerwitz 3a0972c79d Removed unneeded 'continue' statement 2010-12-20 13:51:44 -05:00
Mike Gerwitz 1f40665e57 Added tests for util.defineSecureProp() 2010-12-20 13:43:12 -05:00
Mike Gerwitz 0d84cd829a util.defineSecureProp was failing in browsers that do not support Object.defineProperty()
- This is untested! Test needed.
2010-12-20 10:04:11 -05:00
Mike Gerwitz cd9ef1ea71 Finished refactoring to remove result_data object in class extend() function 2010-12-19 13:54:31 -05:00
Mike Gerwitz 1ff9408885 Rearranged util.overrideMethod() arguments to match methodOverride propCopy() action (to avoid unnecessary mistakes and confusion) 2010-12-19 00:12:41 -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 2789e5fcf9 Abstract map no longer passed to method_override() - it's only used in that method 2010-12-18 10:57:00 -05:00
Mike Gerwitz e39cfea741 Now exporting util's array_shrink() as util.arrayShrink() 2010-12-18 09:38:58 -05:00
Mike Gerwitz 3a2ddbb29b class.js 'extending' var is an argument and shouldn't be declared with var keyword 2010-12-18 08:24:15 -05:00
Mike Gerwitz 2c49e9719f util.propParse() now ignores instance prototype properties 2010-12-18 07:07:27 -05:00
Mike Gerwitz f2baf82100 Removed unneeded var 2010-12-18 06:59:35 -05:00
Mike Gerwitz 755b79725f Corrected attach_prop_init() documentation (__propInit => __initProps) 2010-12-16 23:56:35 -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 a60fe9c2de Class extend() now implements propCopy's performDefault (see previous commit) 2010-12-16 23:51:22 -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 459335cf62 attempt_override() within propCopy() no longer needed after previous commit 2010-12-07 00:49:00 -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 52b1ef657f Resolved failing test (methods may only be overridden with methods) with propParse() 'each' 2010-12-07 00:41:30 -05:00
Mike Gerwitz 994b8e16fa [1 failing test] Added support for 'each' in propParse() 2010-12-07 00:39:25 -05:00
Mike Gerwitz abefb0858b [1 failing test] Crude beginning of implementation of propParse()
- Looks ugly now because it is. Attempting to refactor before doing a proper implementation. Baby steps.
2010-12-07 00:38:51 -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