hydra-jvm 0.17.2 → 0.17.3
raw patch · 2 files changed
+16/−15 lines, 2 filesdep ~hydra-kernelPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: hydra-kernel
API changes (from Hackage documentation)
Files
- hydra-jvm.cabal +2/−2
- src/main/haskell/Hydra/Jvm/Serde.hs +14/−13
hydra-jvm.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack name: hydra-jvm-version: 0.17.2+version: 0.17.3 synopsis: Shared JVM support for Hydra's Java, Scala, and Clojure coders description: Hydra is an implementation of the LambdaGraph data model, which takes advantage of an isomorphism between labeled hypergraphs and typed lambda calculus: in Hydra, "graphs are programs, and programs are graphs". Common JVM support for Hydra (shared by hydra-java, hydra-scala, hydra-clojure) category: Data@@ -34,6 +34,6 @@ src/main/haskell build-depends: base >=4.19.0 && <4.22- , hydra-kernel ==0.17.2+ , hydra-kernel ==0.17.3 , scientific >=0.3.7 && <0.4 default-language: Haskell2010
src/main/haskell/Hydra/Jvm/Serde.hs view
@@ -19,6 +19,7 @@ import qualified Hydra.Overlay.Haskell.Lib.Logic as Logic import qualified Hydra.Overlay.Haskell.Lib.Math as Math import qualified Hydra.Overlay.Haskell.Lib.Optionals as Optionals+import qualified Hydra.Overlay.Haskell.Lib.Ordering as Ordering import qualified Hydra.Overlay.Haskell.Lib.Strings as Strings import qualified Hydra.Packaging as Packaging import qualified Hydra.Parsing as Parsing@@ -39,32 +40,32 @@ -- | Escape a single character for inclusion in a Java string or char literal escapeJavaChar :: Int -> String escapeJavaChar c =- Logic.ifElse (Equality.equal c 34) "\\\"" (Logic.ifElse (Equality.equal c 92) "\\\\" (Logic.ifElse (Equality.equal c 10) "\\n" (Logic.ifElse (Equality.equal c 13) "\\r" (Logic.ifElse (Equality.equal c 9) "\\t" (Logic.ifElse (Equality.equal c 8) "\\b" (Logic.ifElse (Equality.equal c 12) "\\f" (Logic.ifElse (Logic.and (Equality.gte c 32) (Equality.lt c 127)) (Strings.fromList [+ Logic.ifElse (Equality.equal c 34) "\\\"" (Logic.ifElse (Equality.equal c 92) "\\\\" (Logic.ifElse (Equality.equal c 10) "\\n" (Logic.ifElse (Equality.equal c 13) "\\r" (Logic.ifElse (Equality.equal c 9) "\\t" (Logic.ifElse (Equality.equal c 8) "\\b" (Logic.ifElse (Equality.equal c 12) "\\f" (Logic.ifElse (Logic.and (Ordering.gte c 32) (Ordering.lt c 127)) (Strings.fromList [ c]) (javaUnicodeEscape c)))))))) escapeJavaString :: String -> String-escapeJavaString s = Strings.cat (Lists.map (\c -> escapeJavaChar c) (Strings.toList s))+escapeJavaString s = Strings.concat (Lists.map (\c -> escapeJavaChar c) (Strings.toList s)) hexDigit :: Int -> Int-hexDigit n = Logic.ifElse (Equality.lt n 10) (Math.add n 48) (Math.add (Math.sub n 10) 65)+hexDigit n = Logic.ifElse (Ordering.lt n 10) (Math.add n 48) (Math.add (Math.sub n 10) 65) javaUnicodeEscape :: Int -> String javaUnicodeEscape n =- Logic.ifElse (Equality.gt n 65535) (+ Logic.ifElse (Ordering.gt n 65535) ( let n_ = Math.sub n 65536- hi = Math.add 55296 (Optionals.fromOptional 0 (Math.maybeDiv n_ 1024))- lo = Math.add 56320 (Optionals.fromOptional 0 (Math.maybeMod n_ 1024))- in (Strings.cat2 (Strings.cat2 "\\u" (padHex4 hi)) (Strings.cat2 "\\u" (padHex4 lo)))) (Strings.cat2 "\\u" (padHex4 n))+ hi = Math.add 55296 (Optionals.withDefault 0 (Math.div n_ 1024))+ lo = Math.add 56320 (Optionals.withDefault 0 (Math.mod n_ 1024))+ in (Strings.concat2 (Strings.concat2 "\\u" (padHex4 hi)) (Strings.concat2 "\\u" (padHex4 lo)))) (Strings.concat2 "\\u" (padHex4 n)) padHex4 :: Int -> String padHex4 n = - let d3 = Optionals.fromOptional 0 (Math.maybeDiv n 4096)- r3 = Optionals.fromOptional 0 (Math.maybeMod n 4096)- d2 = Optionals.fromOptional 0 (Math.maybeDiv r3 256)- r2 = Optionals.fromOptional 0 (Math.maybeMod r3 256)- d1 = Optionals.fromOptional 0 (Math.maybeDiv r2 16)- d0 = Optionals.fromOptional 0 (Math.maybeMod r2 16)+ let d3 = Optionals.withDefault 0 (Math.div n 4096)+ r3 = Optionals.withDefault 0 (Math.mod n 4096)+ d2 = Optionals.withDefault 0 (Math.div r3 256)+ r2 = Optionals.withDefault 0 (Math.mod r3 256)+ d1 = Optionals.withDefault 0 (Math.div r2 16)+ d0 = Optionals.withDefault 0 (Math.mod r2 16) in (Strings.fromList [ hexDigit d3, (hexDigit d2),