I'm going to check this in ahead of final review because it (claims to) fix the 
top priority webtop bug.

There have been 2 rounds of review already, so I feel it is relatively correct. 
 If there are further review issues I will re-open and address with a 
subsequent change.

On 2010-06-17, at 10:25, P T Withington wrote:

> [UPDATED^3
> 
> On 2010-06-16, at 12:10, André Bargull wrote:
> 
>> ViewSchema#getTypeForName():
>>>        if (name.equals("text") ||
>>>            name.equals("html"))
>>> -            name = "string";
>>> +            name = "text";
>> 
>> A bit simpler:
>> if ("html".equals(name)) {
>>   // [insert explanatory comment here]
>>   name = "text";
>> }
> 
> Fixed
> 
>>> +    html: StringPresentationType,
>>> +    text: TextPresentationType,
>> 
>> 1) If text and html are treated as synonyms for now, they should have the 
>> same presentation type.
>> 2) test/smoke/presentation-types.lzl needs to be updated to test the new 
>> types, too.
> 
> Fixed
> 
>> In TextPresentationType.present():
>>> +          i = e + 1;
>> 
>> i = e? e is the position of the ';', e+1 is the next character which needs 
>> to be processed, but as the for-loop increments i another time, the next 
>> character which is processed is at position e+2, so the char value[e+1] is 
>> left out.
> 
> Thanks!  Fixed, although TextPresentationType will be unused for now.
> 
>> NodeModel#compileAttribute():
>>> +                // Immediate string, token, and id types are
>>> +                // auto-quoted, but must _first_ be parsed as ES
>>> +                // strings!
>> 
>> I'm not sure whether this is valid for IDs and tokens. Have you tested this?
>> For example this test doesn't compile at all, that means the compiler 
>> doesn't not parse the values as ES strings:
>> <canvas>
>> <!-- name's type is token, id's type is ID -->
>> <view name="\x60" id="\x61"/>
>> </canvas>
> 
> You are correct, these are XML tokens and ids.  Fixed.
> 
>>> +            } else if (type == ViewSchema.XML_CDATA_TYPE
>>> +                       || type == ViewSchema.XML_CONTENT_TYPE) {
>>> +                // Immediate text and html types are auto-quoted; They
>>> +                // will be treated differently in the runtime
>>> +                // PresentationType system
>> 
>> This code is a bit misleading, because right know html-type is 
>> auto-converted to text-type (ViewSchema#getTypeForName() !). An additional 
>> comment should be added for clarification.
> 
> Fixed with a comment.
> 
>> Some components need to be updated to change the type from string to text 
>> for backward compatibility. I'd suggest to do this in a subsequent change 
>> set. For example in lz/windowpanel.lzx, the "title" attribute is set to 
>> string, but it's only used in a constraint for a <text> element. I think in 
>> this case the type for "title" should be changed to text.
> 
> http://jira.openlaszlo.org/jira/browse/LPP-9126
> 
>> And it'd be nice if docs/src/developers/methods-events-attributes.dbk was 
>> updated to reflect the new understanding of string/text/html.
> 
> Fixed.
> 
> ]
> 
> Change 20100525-ptw-1 by [email protected] on 2010-05-25 09:56:35 EDT
>    in /Users/ptw/OpenLaszlo/trunk
>    for http://svn.openlaszlo.org/openlaszlo/trunk
> 
> Summary: Correct quoting of string-typed attributes
> 
> Bugs Fixed: LPP-9027 pattern attribute on text doesn't work as expected in 
> trunk
> 
> Technical Reviewer: [email protected] (pending)
> QA Reviewer: [email protected] (pending)
> 
> Release Notes:
> 
>    The LZX `string` attribute type is no longer a synonym for `text`
>    and `html`.  The `string` type implies an ECMAScript String.
>    Literal values assigned to attributes of that type will be
>    interpreted as ECMAScript `String` literals, meaning that the
>    ECMAScript single-character (\t, \n, etc.) and short (\xNN) and
>    long (\uNNNN) escapes will be interpreted as defined in the
>    ECMAScript standard.  The `text` and `html` types imply XML
>    content.  Literal values assigned to attributes of that type will
>    (continue to) be interpreted as verbatim text.  ECMAScript escapes
>    will not be interpreted.
> 
>    The `<text>/text` attribute is now declared to be of type `text`,
>    to indicate that it represents HTML content, not an ECMAScript
>    string.  If you redeclare the `text` attribute in a subclass of
>    `<text>` you should omit any type declaration as it is redundant.
>    (If you had declared the type as `string`, the compiler will issue
>    a warning.)
> 
>    At present `text` and `html` are still synonyms, but this is a
>    bug.  The intent is that `text` represents XML CDATA (with the
>    implication that markup is _not_ interpreted), whereas `html`
>    represents XML content (with the implication that markup _is_
>    interpreted).  See LPP-1948.
> 
> Overview:
> 
>    Split the `string` LZX type from the `text` and `html` types
>    (leaving the latter two as synonyms for now).  Declare the type of
>    `<text>/text` to be `text` (which is the popular concensus in
>    components, although perhaps incorrect because <text> behaves as
>    if it were `html`; that is, it interprets markup).
> 
>    With this split, we are able to have the LZX compiler interpret
>    literal `string` values as ECMAScript `String`s and solve the
>    original bug.  In a future change we will address the
>    `<text>/text` `text`/`html` issue.
> 
> Details:
> 
>    lztest-node:  Added tests to verify that setting a string
>    attribute using a literal or expression is the same as setting an
>    expression attribute to a literal string using the failing pattern
>    from the bug (which verifies the use of \u escapes to specify
>    unicode characters works).
> 
>    presentation-types:  Added tests for `html` and `text` types and
>    enhanced test for `string` type to ensure String escapes work as
>    expected.
> 
>    LzNode:  Added mapping for text and html presentation types..
> 
>    PresentationTypes:  Added text presentation type which
>    escapes/unescapes the 5 XML entities.  This presentation type
>    should eventually replace the many copies of xml escaping code.
> 
>    LzText:  Change the @lzxtype of the `text` attribute from `string`
>    to `text`.
> 
>    LzDataset:  Correct spelling of @lzxtype noticed in passing
> 
>    SchemaBuilder:  Handle `text` and `html` types
> 
>    Schema, ViewSchema, NodeModel: Added real types for 'text' and
>    'html', distinct from 'string', which affects how immediate values
>    of those types are interpreted by the tag compiler: 'string'
>    implies an ECMAScript string (i.e., interpreted as an ECMAScript
>    String literal), 'text' implies XML CDATA and 'html' implies XML
>    content.  In this change, the latter two remain synonyms (as they
>    currently are), and are _not_ interpreted as ECMAScript strings,
>    but as XML content.  In a later change the implied distinction
>    between `text` and `html` will be addressed
> 
>    methods-events-attributes.dbk:  Update type table to reflect
>    current understanding.
> 
>    debugger:  Remove unused `escapeText` noticed in passing.
> 
>    basecombobox: Remove redundant (conflicting) attribute
>    declaration.
> 
>    photo, classes: Remove redundant (conflicting) attrbute type
>    specification.
> 
> Tests:
>    ant lztest with new node attribute tests, smokecheck, various
>    combinations of demos and runtimes.
> 
> Files:
> M       test/lztest/lztest-node.lzx
> M       test/smoke/presentation-types.lzl
> M       WEB-INF/lps/lfc/core/LzNode.lzs
> M       WEB-INF/lps/lfc/core/PresentationTypes.lzs
> M       WEB-INF/lps/lfc/views/LzText.lzs
> M       WEB-INF/lps/lfc/data/LzDataset.lzs
> M       WEB-INF/lps/server/src/org/openlaszlo/js2doc/SchemaBuilder.java
> M       WEB-INF/lps/server/src/org/openlaszlo/xml/internal/Schema.java
> M       WEB-INF/lps/server/src/org/openlaszlo/compiler/ViewSchema.java
> M       WEB-INF/lps/server/src/org/openlaszlo/compiler/NodeModel.java
> M       docs/src/developers/methods-events-attributes.dbk
> M       lps/components/debugger/debugger.lzx
> M       lps/components/base/basecombobox.lzx
> M       demos/lzpix/classes/photo.lzx
> M       demos/lzpix/classes/classes.lzx
> M       demos/lzpix/classes/clipboard.lzx
> 
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20100525-ptw-1.tar


Reply via email to