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
Mike Gerwitz
6fd31a8e76
Added abstract method support to propParse()
2010-12-04 14:03:26 -05:00