diff --git a/spec/stdlib/text-utils-spec.coffee b/spec/stdlib/text-utils-spec.coffee index 907c5b297..f1edb223f 100644 --- a/spec/stdlib/text-utils-spec.coffee +++ b/spec/stdlib/text-utils-spec.coffee @@ -6,12 +6,16 @@ describe 'text utilities', -> expect(textUtils.getCharacterCount('abc')).toBe 3 expect(textUtils.getCharacterCount('a\uD835\uDF97b\uD835\uDF97c')).toBe 5 expect(textUtils.getCharacterCount('\uD835\uDF97')).toBe 1 + expect(textUtils.getCharacterCount('\uD835')).toBe 1 + expect(textUtils.getCharacterCount('\uDF97')).toBe 1 describe '.hasSurrogatePair(string)', -> it 'returns true when the string contains a surrogate pair', -> expect(textUtils.hasSurrogatePair('abc')).toBe false expect(textUtils.hasSurrogatePair('a\uD835\uDF97b\uD835\uDF97c')).toBe true expect(textUtils.hasSurrogatePair('\uD835\uDF97')).toBe true + expect(textUtils.hasSurrogatePair('\uD835')).toBe false + expect(textUtils.hasSurrogatePair('\uDF97')).toBe false describe '.isSurrogatePair(string, index)', -> it 'returns true when the index is the start of a high/low surrogate pair', -> @@ -22,3 +26,5 @@ describe 'text utilities', -> expect(textUtils.isSurrogatePair('a\uD835\uDF97b\uD835\uDF97c', 4)).toBe true expect(textUtils.isSurrogatePair('a\uD835\uDF97b\uD835\uDF97c', 5)).toBe false expect(textUtils.isSurrogatePair('a\uD835\uDF97b\uD835\uDF97c', 6)).toBe false + expect(textUtils.isSurrogatePair('\uD835')).toBe false + expect(textUtils.isSurrogatePair('\uDF97')).toBe false diff --git a/src/stdlib/text-utils.coffee b/src/stdlib/text-utils.coffee index 5f1800f61..e7c69e1f1 100644 --- a/src/stdlib/text-utils.coffee +++ b/src/stdlib/text-utils.coffee @@ -15,7 +15,7 @@ isLowSurrogate = (string, index) -> # index - The {Number} index to look for a surrogate pair at. # # Return a {Boolean}. -isSurrogatePair = (string, index) -> +isSurrogatePair = (string, index=0) -> isHighSurrogate(string, index) and isLowSurrogate(string, index + 1) # Get the number of characters in the string accounting for surrogate pairs.