silly little doodles
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

case msg { case model {}} -> case msg, model {}

nnuuvv 29cb3db5 cc0e51d4

+42 -48
+42 -48
src/doodler.gleam
··· 57 57 } 58 58 59 59 fn update(model: Model, msg: Msg) { 60 - case msg { 61 - // no point selected yet 62 - UserClickedPoint(clicked_point) -> { 63 - case model { 64 - // no point selected, select the clicked one 65 - Model(points: _, edges:, selected: None, mirroring:) -> { 66 - let points = 67 - edges 68 - |> update_points 69 - |> add_point_neighbors(clicked_point) 60 + case msg, model { 61 + // no point selected, select the clicked one 62 + UserClickedPoint(clicked_point), 63 + Model(points: _, edges:, selected: None, mirroring:) 64 + -> { 65 + let points = 66 + edges 67 + |> update_points 68 + |> add_point_neighbors(clicked_point) 70 69 71 - Model(points:, edges:, selected: Some(clicked_point), mirroring:) 72 - } 73 - // same point clicked again, deselect it 74 - Model(points: _, edges:, selected: Some(first_point), mirroring:) 75 - if clicked_point == first_point 76 - -> { 77 - let points = update_points(edges) 78 - Model(points, edges, selected: None, mirroring:) 79 - } 80 - 81 - // different point selected, add / remove that edge 82 - Model(_, _, Some(first_point), mirroring:) -> { 83 - let filtered_edges = 84 - model.edges 85 - |> list.partition(filter_edge( 86 - _, 87 - first_point, 88 - clicked_point, 89 - mirroring, 90 - )) 70 + Model(points:, edges:, selected: Some(clicked_point), mirroring:) 71 + } 72 + // same point clicked again, deselect it 73 + UserClickedPoint(clicked_point), 74 + Model(points: _, edges:, selected: Some(first_point), mirroring:) 75 + if clicked_point == first_point 76 + -> { 77 + let points = update_points(edges) 78 + Model(points, edges, selected: None, mirroring:) 79 + } 91 80 92 - let edges = case filtered_edges { 93 - // the new edge wasnt found in the existing ones, add it 94 - #([], edges) -> 95 - add_new_edge(first_point, clicked_point, edges, mirroring) 96 - // the new edge was found in the existing ones, remove it 97 - #([_, ..], edges) -> edges 98 - } 99 - let points = update_points(edges) 100 - // let points = model.points 81 + // different point selected, add / remove that edge 82 + UserClickedPoint(clicked_point), Model(_, _, Some(first_point), mirroring:) -> { 83 + let filtered_edges = 84 + model.edges 85 + |> list.partition(filter_edge(_, first_point, clicked_point, mirroring)) 101 86 102 - Model(points:, edges:, selected: None, mirroring:) 103 - } 87 + let edges = case filtered_edges { 88 + // the new edge wasnt found in the existing ones, add it 89 + #([], edges) -> 90 + add_new_edge(first_point, clicked_point, edges, mirroring) 91 + // the new edge was found in the existing ones, remove it 92 + #([_, ..], edges) -> edges 104 93 } 94 + let points = update_points(edges) 95 + // let points = model.points 96 + 97 + Model(points:, edges:, selected: None, mirroring:) 105 98 } 106 99 // cycle mirroring 107 - UserClickedToggleMirror -> 108 - case model { 109 - Model(_, _, _, Off) -> Model(..model, mirroring: Vertical) 110 - Model(_, _, _, Vertical) -> Model(..model, mirroring: Horizontal) 111 - Model(_, _, _, Horizontal) -> Model(..model, mirroring: Both) 112 - Model(_, _, _, Both) -> Model(..model, mirroring: Off) 113 - } 100 + UserClickedToggleMirror, Model(_, _, _, Off) -> 101 + Model(..model, mirroring: Vertical) 102 + UserClickedToggleMirror, Model(_, _, _, Vertical) -> 103 + Model(..model, mirroring: Horizontal) 104 + UserClickedToggleMirror, Model(_, _, _, Horizontal) -> 105 + Model(..model, mirroring: Both) 106 + UserClickedToggleMirror, Model(_, _, _, Both) -> 107 + Model(..model, mirroring: Off) 114 108 } 115 109 } 116 110