/src/php/strings/chr.js

http://github.com/kvz/phpjs · JavaScript · 18 lines · 7 code · 1 blank · 10 comment · 1 complexity · 570a733472d226dc62cab482462e4f9b MD5 · raw file

  1. module.exports = function chr (codePt) {
  2. // discuss at: https://locutus.io/php/chr/
  3. // original by: Kevin van Zonneveld (https://kvz.io)
  4. // improved by: Brett Zamir (https://brett-zamir.me)
  5. // example 1: chr(75) === 'K'
  6. // example 1: chr(65536) === '\uD800\uDC00'
  7. // returns 1: true
  8. // returns 1: true
  9. if (codePt > 0xFFFF) { // Create a four-byte string (length 2) since this code point is high
  10. // enough for the UTF-16 encoding (JavaScript internal use), to
  11. // require representation with two surrogates (reserved non-characters
  12. // used for building other characters; the first is "high" and the next "low")
  13. codePt -= 0x10000
  14. return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF))
  15. }
  16. return String.fromCharCode(codePt)
  17. }