/// Parses a JSON encoded number to find the integer part
/// @access private
/// @param {String} $source - JSON complete source
/// @param {Number} $pointer - current pointer
/// @throw Unexpected token $token.
/// @return {List} (new pointer, parsed number)
/// @require {function} _throw
@function _find-integer($source, $pointer) {
  $source: to-lower-case($source);
  $length: str-length($source);
  $numbers: '0' '1' '2' '3' '4' '5' '6' '7' '8' '9';
  $result: 0;

  @while $pointer <= $length {
    $token: str-slice($source, $pointer, $pointer);
    $index: index($numbers, $token);

    @if $token == '-' {
      // do nothing
    } @else if $index {
      $result: $result * 10 + ($index - 1);
    } @else {
      @if index('e' '.' ' ' ',' ']' '}', $token) {
        @return $pointer, $result;
      }

      @return _throw("Unexpected token `" + $token + "`.", $pointer);
    }

    $pointer: $pointer + 1;
  }

  @return $pointer, $result;
}
