diff options
author | Luca Casonato <lucacasonato@yahoo.com> | 2021-04-08 01:23:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-08 01:23:26 +0200 |
commit | ee07ef2962e5fe52e5f40b7516cdd813109e6104 (patch) | |
tree | 15ce73d5f6a1546ef50e8eaf42f3979252bb8186 /op_crates/webidl/00_webidl.js | |
parent | fd65e6de3dc1ff909a1419c3b8f0c76daf1a69ed (diff) |
chore: update deno_file to use deno_webidl (#10042)
This changes the custom input converters in deno_file to use deno_webidl
converters.
Diffstat (limited to 'op_crates/webidl/00_webidl.js')
-rw-r--r-- | op_crates/webidl/00_webidl.js | 77 |
1 files changed, 44 insertions, 33 deletions
diff --git a/op_crates/webidl/00_webidl.js b/op_crates/webidl/00_webidl.js index c00c605e8..843fd329e 100644 --- a/op_crates/webidl/00_webidl.js +++ b/op_crates/webidl/00_webidl.js @@ -615,6 +615,19 @@ } function createDictionaryConverter(name, ...dictionaries) { + const allMembers = []; + for (const members of dictionaries) { + for (const member of members) { + allMembers.push(member); + } + } + allMembers.sort((a, b) => { + if (a.key == b.key) { + return 0; + } + return a.key < b.key ? -1 : 1; + }); + return function (V, opts = {}) { const typeV = type(V); switch (typeV) { @@ -633,39 +646,37 @@ const idlDict = {}; - for (const members of dictionaries) { - for (const member of members) { - const key = member.key; - - let esMemberValue; - if (typeV === "Undefined" || typeV === "Null") { - esMemberValue = undefined; - } else { - esMemberValue = esDict[key]; - } - - const context = `'${key}' of '${name}'${ - opts.context ? ` (${opts.context})` : "" - }`; - - if (esMemberValue !== undefined) { - const converter = member.converter; - const idlMemberValue = converter(esMemberValue, { - ...opts, - context, - }); - idlDict[key] = idlMemberValue; - } else if ("defaultValue" in member) { - const defaultValue = member.defaultValue; - const idlMemberValue = defaultValue; - idlDict[key] = idlMemberValue; - } else if (member.required) { - throw makeException( - TypeError, - `can not be converted to '${name}' because '${key}' is required in '${name}'.`, - { ...opts }, - ); - } + for (const member of allMembers) { + const key = member.key; + + let esMemberValue; + if (typeV === "Undefined" || typeV === "Null") { + esMemberValue = undefined; + } else { + esMemberValue = esDict[key]; + } + + const context = `'${key}' of '${name}'${ + opts.context ? ` (${opts.context})` : "" + }`; + + if (esMemberValue !== undefined) { + const converter = member.converter; + const idlMemberValue = converter(esMemberValue, { + ...opts, + context, + }); + idlDict[key] = idlMemberValue; + } else if ("defaultValue" in member) { + const defaultValue = member.defaultValue; + const idlMemberValue = defaultValue; + idlDict[key] = idlMemberValue; + } else if (member.required) { + throw makeException( + TypeError, + `can not be converted to '${name}' because '${key}' is required in '${name}'.`, + { ...opts }, + ); } } |