1module Snapshot.HalogenVDomST01 where
5import Control.Monad.ST.Class (liftST)
6import Data.Array as Array
7import Data.Array.ST as STArray
8import Effect (forE, foreachE)
9import Effect.Uncurried (EffectFn2, EffectFn3, EffectFn4, EffectFn5, EffectFn6, mkEffectFn5, mkEffectFn6, runEffectFn2, runEffectFn3, runEffectFn4)
10import Foreign.Object (Object)
11import Foreign.Object as Object
12import Foreign.Object.ST as STObject
13import Foreign.Object.ST.Unsafe as STObject.Unsafe
14import Foreign.Object.Unsafe as Object.Unsafe
15import Partial.Unsafe as Partial
23 (EffectFn2 Int b Unit)
26diffWithIxE = mkEffectFn5 \a1 a2 f1 f2 f3 -> do
27 a3 <- liftST $ STArray.new
28 let l1 = Array.length a1
29 let l2 = Array.length a2
30 let l3 = if l1 < l2 then l2 else l1
34 let v1 = Partial.unsafePartial Array.unsafeIndex a1 i
35 let v2 = Partial.unsafePartial Array.unsafeIndex a2 i
36 v3 <- runEffectFn3 f1 i v1 v2
37 void $ liftST $ STArray.push v3 a3
39 let v1 = Partial.unsafePartial Array.unsafeIndex a1 i
41 else if i < l2 then do
42 let v2 = Partial.unsafePartial Array.unsafeIndex a2 i
43 v3 <- runEffectFn2 f3 i v2
44 void $ liftST $ STArray.push v3 a3
47 liftST $ STArray.unsafeFreeze a3
55 (EffectFn4 String Int a b c)
56 (EffectFn2 String a d)
57 (EffectFn3 String Int b c)
59diffWithKeyAndIxE = mkEffectFn6 \o1 as fk f1 f2 f3 -> do
60 o2 <- liftST STObject.new
61 forE 0 (Array.length as) \i -> do
62 let a = Partial.unsafePartial Array.unsafeIndex as i
64 if Object.member k o1 then do
65 let v1 = Object.Unsafe.unsafeIndex o1 k
66 v2 <- runEffectFn4 f1 k i v1 a
67 void $ liftST $ STObject.poke k v2 o2
69 v2 <- runEffectFn3 f3 k i a
70 void $ liftST $ STObject.poke k v2 o2
71 o3 <- liftST $ STObject.Unsafe.unsafeFreeze o2
72 foreachE (Object.keys o1) \k ->
73 if Object.member k o3 then
76 void $ runEffectFn2 f2 k (Object.Unsafe.unsafeIndex o1 k)
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list