| 'use strict'; |
| |
| var GetIntrinsic = require('get-intrinsic'); |
| |
| var $TypeError = GetIntrinsic('%TypeError%'); |
| |
| var isPrefixOf = require('../helpers/isPrefixOf'); |
| |
| // var callBound = require('call-bind/callBound'); |
| |
| // var $charAt = callBound('String.prototype.charAt'); |
| |
| var Type = require('./Type'); |
| |
| // https://262.ecma-international.org/9.0/#sec-isstringprefix |
| |
| module.exports = function IsStringPrefix(p, q) { |
| if (Type(p) !== 'String') { |
| throw new $TypeError('Assertion failed: "p" must be a String'); |
| } |
| |
| if (Type(q) !== 'String') { |
| throw new $TypeError('Assertion failed: "q" must be a String'); |
| } |
| |
| return isPrefixOf(p, q); |
| /* |
| if (p === q || p === '') { |
| return true; |
| } |
| |
| var pLength = p.length; |
| var qLength = q.length; |
| if (pLength >= qLength) { |
| return false; |
| } |
| |
| // assert: pLength < qLength |
| |
| for (var i = 0; i < pLength; i += 1) { |
| if ($charAt(p, i) !== $charAt(q, i)) { |
| return false; |
| } |
| } |
| return true; |
| */ |
| }; |