addon-sdk/source/lib/diffpatcher/rebase.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 "use strict";
     3 var nil = {}
     4 var owns = ({}).hasOwnProperty
     6 function rebase(result, parent, delta) {
     7   var key, current, previous, update
     8   for (key in parent) {
     9     if (owns.call(parent, key)) {
    10       previous = parent[key]
    11       update = owns.call(delta, key) ? delta[key] : nil
    12       if (previous === null) continue
    13       else if (previous === void(0)) continue
    14       else if (update === null) continue
    15       else if (update === void(0)) continue
    16       else result[key] = previous
    17     }
    18   }
    19   for (key in delta) {
    20     if (owns.call(delta, key)) {
    21       update = delta[key]
    22       current = owns.call(result, key) ? result[key] : nil
    23       if (current === update) continue
    24       else if (update === null) continue
    25       else if (update === void(0)) continue
    26       else if (current === nil) result[key] = update
    27       else if (typeof(update) !== "object") result[key] = update
    28       else if (typeof(current) !== "object") result[key] = update
    29       else result[key]= rebase({}, current, update)
    30     }
    31   }
    33   return result
    34 }
    36 module.exports = rebase

mercurial