function nextCasing()

in public/dexie.js [3484:3513]


      function nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {
        var length = Math.min(key.length, lowerNeedle.length);
        var llp = -1;
        for (var i = 0; i < length; ++i) {
          var lwrKeyChar = lowerKey[i];
          if (lwrKeyChar !== lowerNeedle[i]) {
            if (cmp(key[i], upperNeedle[i]) < 0)
              return (
                key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1)
              );
            if (cmp(key[i], lowerNeedle[i]) < 0)
              return (
                key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1)
              );
            if (llp >= 0)
              return (
                key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1)
              );
            return null;
          }
          if (cmp(key[i], lwrKeyChar) < 0) llp = i;
        }
        if (length < lowerNeedle.length && dir === "next")
          return key + upperNeedle.substr(key.length);
        if (length < key.length && dir === "prev")
          return key.substr(0, upperNeedle.length);
        return llp < 0
          ? null
          : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1);
      }