[Laszlo-dev] tagnames
André Bargull
andre.bargull at udo.edu
Wed Aug 6 11:05:38 PDT 2008
Simply invert the (debug-)invariant to distinguish those classes:
lz[this.constructor.tagname] !== this.constructor
If this condition is true, the current object is an anonymous subclass.
Or for more fail-safe code:
lz[this.constructor.tagname] !== this.constructor
&& this is lz[this.constructor.tagname]
On 8/6/2008 1:01 PM, P T Withington wrote:
> You know my code better than I do! Ok, let's remove the munging of the
> tagName, although we need to make sure that in debug mode you can
> distinguish the true button class from one of the anonymous button
> subclasses.
>
> On 2008-08-05, at 20:03EDT, André Bargull wrote:
>
>>
>> On 8/5/2008 10:04 PM, P T Withington wrote:
>>> I see what you are getting at, but doing so would break this invariant:
>>> lz[this.constructor.tagname] == this.constructor
>>
>> This is only true in debug-mode!
>>
>> From NodeModel.java:
>>> // If there are methods, make a class
>>> if (debug) {
>>> String name = id;
>>> if (name == null) {
>>> name = CompilerUtils.attributeUniqueName(element, "class");
>>> } // Update tagname to our custom class
>>> tagName = tagName + "_" + name;
>>> } else {
>>> *// Don't create a tag for anonymous classes
>>> tagName = null;*
>>> }
>>
>>
>> And a small testcase:
>>> <canvas debug="false" >
>>> <button onclick="txt.setText(this.constructor.tagname)" />
>>> <text id="txt" x="50" />
>>> </canvas>
>>
>>
>>> which is presently true for all classes. We would have to say that
>>> for 'anonymous' classes that does not hold. That's probably ok, but
>>> I expect that is why it is currently the way it is (at some point in
>>> the evolution, the anonymous classes were instantiated with a tagname
>>> which had to be unique; now that they are instantiated directly with
>>> their classname, we could avoid creating the unique tagnames).
>>> Perhaps there should be some amendment to the debugger also to print
>>> these anonymous classes in a prettier fashion too.
>>> On 2008-08-05, at 13:43EDT, André Bargull wrote:
>>>> An user asked me on the forum
>>>> (http://forum.openlaszlo.org/showthread.php?t=12198):
>>>>
>>>>> what i want to ask is:
>>>>> does OL support the original "tagname" in customized instances
>>>>> (constraint and method filled in tag )?
>>>>> or
>>>>> it is a defect?
>>>>
>>>> So, whenever an anonymous class was created (because of constraints,
>>>> handlers etc), do we provide a way to retrieve the original tagname?
>>>> In my mind, a reasonable question, names like
>>>> "/button_$$2Etmp_C697C77B63C2714AA45A51E9F3163AFA_hello$2Elzx_2_32/"
>>>> look ugly and do confuse people (at least me when I see those names
>>>> in the debugger :-) ).
>>>>
>>>>
>>>> ---
>>>> And I don't want to get this answer: ;-)
>>>>> /foo/.constructor.prototype.constructor.tagname
>>>>
>>
>
>
More information about the Laszlo-dev
mailing list