Anne van Kesteren <[email protected]> skreiv Fri, 09 Sep 2011 16:48:36 +0200

As a high-level comment it seems to me the organization of the specification needs some changing. The processing model is about how to deal with a "copy/paste/cut operation" it is not about firing an event (that is mainly part of it). The events section meanwhile is about how users invoke a "copy/paste/cut operation" and not so much about firing an event either (the event summary boxes are not needed I think).

I agree that the event summary tables aren't really required, and have removed them. I'm not quite sure what else I should do specifically to address the comment that the "organization of the specification needs some changing". For example regarding

The processing model is about how to deal with a "copy/paste/cut operation" it is not about firing an event (that is mainly part of it).

..it happens to be *the* part of the processing this spec is all about :)..?

You can also invoke such actions from script via the execCommand() APIs apparently, but that does not appear to be described in detail.

It's mentioned in the #integration-with-other-scripts-and-events section (8). I'm not sure where else to mention it or what more detail is needed. execCommand() is presumably spec'ed in Aryeh's rich text editing work.

So first I think it would make sense to clearly distinguish between operations and events.

Can you give me an example of a specific change to the spec's outline or vocabulary that would help make this distinction?

Because there is a processing model that includes dispatching events the section on events can probably be removed. The requirements made therein are redundant.

Indeed. The spec evolved this way, section 4 with normal prose description of how things are expected to work predates section 5 and the processing model that give more exact implementation details. So we could drop all of section 4 and just keep the processing model. However, I think keeping the short prose description for each event in section 4 makes sense. It makes the spec more readable (and implementors are readers too) and makes it clear what behaviour the processing model intends to dictate.

You will still need a section that defines when the operations are invoked.

If section 4 were to be removed, or generally?

Alternatively, you could leave that out of scope for the HTML Editing APIs specification.

For execCommand() I'll do that, I think.

Apart from this I noticed a few other things:

* "the BODY element" should probably be defined as reference to what it is in HTML.

Added generic reference to HTML5 after both instances of "BODY element". Would it be better to refer to a specific section directly? I'd happily just link the text "the BODY element" directly to http://www.w3.org/TR/html5/sections.html#the-body-element but it seems like specs must be a bit more pedantic about things and list references at the bottom etc..?

* If you define an internal flag do not use <code> for it, but <var> or maybe <dfn>.

Fixed. I think I've once read a spec or recommendation dealing with best markup for a spec, but I can't find it now. If you know what document I'm likely thinking about please send me a link :)

* If you reference externally used terms mention that somehow. E.g. DataTransfer's mode flag is actually called "drag data store mode". DataTransfer in HTML is defined in terms of "drag data store" so it would make sense to talk about the same thing here. (Maybe get it renamed from drag to something more neutral?)

Changed instances of "mode" to "drag data store mode", "kind" to "drag data item kind" etc. Added a reference for the HTML5 DnD chapter, and some more referencing to this on first usage of DataTransfer. (IMO it becomes harder to read though - as long as we're dealing with properties of a precisely specified object it should be OK to refer to their property names like "item" and "type". "Mode" is a bit special in that it is AFAIK an internal flag and not visible to script authors.)

* "If the current clipboard part contains HTML- or XHTML-formatted text" seems really vague (how do you tell whether it contains that?) as are the steps that lead to creating some kind of tree. They probably need to reference something specific in HTML.

Slightly elaborated - better now?

* The "Fire the event" step should be more elaborated: http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#firing-events

"Firing an event" surely should be specified elaborately elsewhere. I added another reference to DOM2-Events (though "fire" probably is used without being precisely spec'ed there..).

* The "Process the default action" step should instead talk about whether or not the http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#canceled-flag of the event ended up being set and what to do when it is not.

Seems pretty readable and precise to me as-is.

* Since ClipboardEvent is new we do not need to introduce initClipboardEvent() and go solely for an event constructor.

Removed the init method.

* I think having section 7 is confusing. Cross-references would be better.

I'm not sure. IMHO the exact semantics of certain DataTransfer object properties when (re-)used for clipboard events should be noted somewhere. For example the fact that an implementation of clipboardData.items must enable "pasting multi-part or non-textual data" should be written down. If I remove section 7, where should this information go?

If you want to perform cross-references between HTML, DOM, and your specification it might be an idea to use https://bitbucket.org/ms2ger/anolis I can help out if needed.

Think I tried to get anolis running earlier, then I came across reSpec and just used that instead. It's very simple to just use JavaScript to manipulate the spec - it's in HTML after all ;-). I could perhaps use both though? Can you show me an example of how using anolis would help cross-referencing terms/definitions from another spec, HTML5 specifically?

--
Hallvord R. M. Steen
Core tester, Opera Software

Reply via email to