// Generated by purs version 0.13.6 "use strict"; var $foreign = require("./foreign.js"); var Data_Array = require("../Data.Array/index.js"); var Data_Bounded = require("../Data.Bounded/index.js"); var Data_Enum = require("../Data.Enum/index.js"); var Data_Eq = require("../Data.Eq/index.js"); var Data_EuclideanRing = require("../Data.EuclideanRing/index.js"); var Data_Functor = require("../Data.Functor/index.js"); var Data_Maybe = require("../Data.Maybe/index.js"); var Data_Ord = require("../Data.Ord/index.js"); var Data_String_CodeUnits = require("../Data.String.CodeUnits/index.js"); var Data_String_Unsafe = require("../Data.String.Unsafe/index.js"); var Data_Tuple = require("../Data.Tuple/index.js"); var Data_Unfoldable = require("../Data.Unfoldable/index.js"); var CodePoint = function (x) { return x; }; var unsurrogate = function (lead) { return function (trail) { return (((lead - 55296 | 0) * 1024 | 0) + (trail - 56320 | 0) | 0) + 65536 | 0; }; }; var isTrail = function (cu) { return 56320 <= cu && cu <= 57343; }; var isLead = function (cu) { return 55296 <= cu && cu <= 56319; }; var uncons = function (s) { var v = Data_String_CodeUnits.length(s); if (v === 0) { return Data_Maybe.Nothing.value; }; if (v === 1) { return new Data_Maybe.Just({ head: Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s)), tail: "" }); }; var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s)); var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s)); var $264 = isLead(cu0) && isTrail(cu1); if ($264) { return new Data_Maybe.Just({ head: unsurrogate(cu0)(cu1), tail: Data_String_CodeUnits.drop(2)(s) }); }; return new Data_Maybe.Just({ head: cu0, tail: Data_String_CodeUnits.drop(1)(s) }); }; var unconsButWithTuple = function (s) { return Data_Functor.map(Data_Maybe.functorMaybe)(function (v) { return new Data_Tuple.Tuple(v.head, v.tail); })(uncons(s)); }; var toCodePointArrayFallback = function (s) { return Data_Unfoldable.unfoldr(Data_Unfoldable.unfoldableArray)(unconsButWithTuple)(s); }; var unsafeCodePointAt0Fallback = function (s) { var cu0 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(0)(s)); var $268 = isLead(cu0) && Data_String_CodeUnits.length(s) > 1; if ($268) { var cu1 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar)(Data_String_Unsafe.charAt(1)(s)); var $269 = isTrail(cu1); if ($269) { return unsurrogate(cu0)(cu1); }; return cu0; }; return cu0; }; var unsafeCodePointAt0 = $foreign["_unsafeCodePointAt0"](unsafeCodePointAt0Fallback); var toCodePointArray = $foreign["_toCodePointArray"](toCodePointArrayFallback)(unsafeCodePointAt0); var length = function ($281) { return Data_Array.length(toCodePointArray($281)); }; var fromCharCode = (function () { var $282 = Data_Enum.toEnumWithDefaults(Data_Enum.boundedEnumChar)(Data_Bounded.bottom(Data_Bounded.boundedChar))(Data_Bounded.top(Data_Bounded.boundedChar)); return function ($283) { return Data_String_CodeUnits.singleton($282($283)); }; })(); var singletonFallback = function (v) { if (v <= 65535) { return fromCharCode(v); }; var lead = Data_EuclideanRing.div(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 55296 | 0; var trail = Data_EuclideanRing.mod(Data_EuclideanRing.euclideanRingInt)(v - 65536 | 0)(1024) + 56320 | 0; return fromCharCode(lead) + fromCharCode(trail); }; var singleton = $foreign["_singleton"](singletonFallback); var takeFallback = function (n) { return function (v) { if (n < 1) { return ""; }; var v1 = uncons(v); if (v1 instanceof Data_Maybe.Just) { return singleton(v1.value0.head) + takeFallback(n - 1 | 0)(v1.value0.tail); }; return v; }; }; var take = $foreign["_take"](takeFallback); var eqCodePoint = new Data_Eq.Eq(function (x) { return function (y) { return x === y; }; }); var ordCodePoint = new Data_Ord.Ord(function ($dollar__unused) { return eqCodePoint; }, function (x) { return function (y) { return Data_Ord.compare(Data_Ord.ordInt)(x)(y); }; }); var codePointFromChar = (function () { var $284 = Data_Enum.fromEnum(Data_Enum.boundedEnumChar); return function ($285) { return CodePoint($284($285)); }; })(); module.exports = { codePointFromChar: codePointFromChar, singleton: singleton, toCodePointArray: toCodePointArray, uncons: uncons, length: length, take: take, eqCodePoint: eqCodePoint, ordCodePoint: ordCodePoint };