Re: [Bug 15434] New: [IndexedDB] Detail steps for assigning a key to a value

On Tue, Jan 24, 2012 at 4:23 PM, Joshua Bell <jsbell@chromium.org> wrote:
>
>
> On Tue, Jan 24, 2012 at 4:16 PM, Israel Hilerio <israelh@microsoft.com>
> wrote:
>>
>> On Tuesday, January 24, 2012 11:38 AM, Jonas Sicking wrote:>
>> > Based on this (pending details from microsoft of course) I suggest the
>> > following set of steps:
>> >
>> > 1. If /keyPath/ is the empty string, skip the remaining steps and
>> > /value/ is not
>> > modified.
>> > 2. Let /remainingKeypath/ be /keyPath/ and /object/ be /value/.
>> > 3. if /object/ is not an Object object or an Array object (see
>> > structured clone
>> > algorithm), then throw a DOMException of type DataError.
>> > 4. If /remainingKeypath/ has a period in it, assign /remainingKeypath/
>> > to be
>> > everything after the first period and assign /attribute/ to be
>> > everything
>> > before that first period. Otherwise, go to step 8.
>> > 5. If /object/ does not have an attribute named /attribute/, then create
>> > the
>> > attribute and assign it an empty object.
>> > 6. Assign /object/ to be the value of the attribute named /attribute/ on
>> > /object/.
>> > 7. Go to step 3.
>> > 8. NOTE: The steps leading here ensure that /remainingKeyPath/ is a
>> > single
>> > attribute name (i.e. string without periods) by this step. They also
>> > ensure
>> > that /object/ is an Object or an Array, and not a Date, RegExp, Blob
>> > etc.
>> > 9. Let /attribute/ be /remainingKeyPath/ 10. Set an attribute named
>> > /attribute/ on /object/ with the value /key/.
>> >
>> > Note that the intent is that these steps are only executed if evaluating
>> > the
>> > keyPath did not yield a value. I.e. if we know that we need to modify
>> > the
>> > stored value. Because of this we know that at step
>> > 10 the object does not have an attribute with name /attribute/.
>> >
>> > Let me know if these steps sound ok?
>> >
>> > / Jonas
>> >
>>
>> The steps look good to me.
>>
>> Israel
>>
>
> Ditto.

Sweet! Though as I was copying these steps into the bug I realized
that step 1 is superfluous as I already pointed out earlier in this
thread (this is disregarding what we decide regarding empty-string as
valid keyPaths for objectStores and/or indexes).

I hope it was ok that I removed that step as I copied the steps into the bug.

/ Jonas

Received on Wednesday, 25 January 2012 01:16:52 UTC