git.iko.soy/rowtype-yoga/purescript-yoga-tree
on master help sign in
Use more idiomatic record updating code to show developer intent better
commite0a3a4f946d061241f8effa35542f79a2945dbed authorJordan Martinez <jordanalex.martinez@gmail.com> dateSat 20 Apr 2019, 08:22 (7 years ago) parentfe7a358
1 file changed+12−21
src/Data/Tree/Zipper.purs+12−21
src/Data/Tree/Zipper.purs+12−21
@@ -164,19 +164,15 @@ modifyValue f l = setNode (modifyNodeValue f (node l)) l
164164
165165-- | Insert a node after the current position, and move cursor to the new node.
166166insertAfter :: forall a. Tree a -> Loc a -> Loc a
167−insertAfter n l = Loc { node: n
168− , after: after l
169− , before: (node l) : (before l)
170− , parents: parents l
171− }
167+insertAfter n (Loc r) = Loc r { node = n
168+ , before = r.node : r.before
169+ }
172170
173171-- | Insert a node before the current position, and move cursor to the new node.
174172insertBefore :: forall a. Tree a -> Loc a -> Loc a
175−insertBefore n l = Loc { node: n
176− , after: (node l) : (after l)
177− , before: before l
178− , parents: parents l
179− }
173+insertBefore n (Loc r) = Loc r { node = n
174+ , after = r.node : r.after
175+ }
180176
181177-- | Insert a node as a child to the current node, and move cursor to the new node.
182178insertChild :: forall a. Tree a -> Loc a -> Loc a
@@ -193,19 +189,14 @@ insertChild n l =
193189delete :: forall a. Loc a -> Loc a
194190delete l@(Loc r) =
195191 case r.after of
196− c:cs -> Loc { node: c
197− , before: r.before
198− , after: cs
199− , parents: r.parents
200− }
192+ c:cs -> Loc r { node = c
193+ , after = cs
194+ }
201195 Nil ->
202196 case r.before of
203− c:cs -> Loc { node: c
204− , before: cs
205− , after: r.after
206− , parents: r.parents
207− }
208−
197+ c:cs -> Loc r { node = c
198+ , before = cs
199+ }
209200 Nil ->
210201 case r.parents of
211202 Nil -> l