Skip to content

Commit

Permalink
remove Result from rowsXcolumns initialization
Browse files Browse the repository at this point in the history
  • Loading branch information
BrianHicks committed Jan 12, 2020
1 parent d906071 commit 2a21e42
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 107 deletions.
35 changes: 10 additions & 25 deletions src/Grid.elm
Expand Up @@ -37,37 +37,22 @@ If the sizes of the column arrays (the inner ones) don't match up, you'll get a
`MoreThanOneWidth` error back from this function.
-}
fromRowsAndColumns : List (List a) -> Result FromRowsAndColumnsProblem (Grid a)
fromRowsAndColumns : List (List a) -> Grid a
fromRowsAndColumns rowsAndColumns =
Array.fromList (List.map Array.fromList rowsAndColumns)
|> fromRowsAndColumnsArray


fromRowsAndColumnsArray : Array (Array a) -> Result FromRowsAndColumnsProblem (Grid a)
fromRowsAndColumnsArray : Array (Array a) -> Grid a
fromRowsAndColumnsArray rowsAndColumns =
let
widths =
rowsAndColumns
|> Array.foldl (\row soFar -> Set.insert (Array.length row) soFar) Set.empty
|> Set.toList
in
case widths of
[] ->
(Ok << Grid)
{ items = rowsAndColumns
, width = 0
, height = Array.length rowsAndColumns
}

[ width ] ->
(Ok << Grid)
{ items = rowsAndColumns
, width = width
, height = Array.length rowsAndColumns
}

a :: b :: _ ->
Err (MoreThanOneWidth widths)
Grid
{ items = rowsAndColumns
, width =
Array.get 0 rowsAndColumns
|> Maybe.map Array.length
|> Maybe.withDefault 0
, height = Array.length rowsAndColumns
}


toArrays : Grid a -> Array (Array a)
Expand Down
136 changes: 54 additions & 82 deletions src/Image.elm
Expand Up @@ -50,32 +50,25 @@ recurse =
k =
Color.fromRGBA { red = 43, green = 45, blue = 45, alpha = Color.opaque }
in
case
Grid.fromRowsAndColumns
[ List.repeat 14 t
, [ t, k, k, k, k, k, k, k, k, k, k, k, k, t ]
, [ t, k, w, w, w, w, w, w, w, w, w, w, k, t ]
, [ t, k, w, k, k, k, k, k, k, k, k, w, k, t ]
, [ t, k, w, g, k, g, k, g, k, k, k, w, k, t ]
, [ t, k, w, k, k, k, k, k, k, k, k, w, k, t ]
, [ t, k, w, k, g, g, k, g, g, k, k, w, k, t ]
, [ t, k, w, k, k, k, k, k, k, k, k, w, k, t ]
, [ t, k, w, k, k, k, k, k, k, k, k, w, k, t ]
, [ t, k, w, w, w, w, w, w, w, w, w, w, k, t ]
, [ t, k, k, k, k, k, k, k, k, k, k, k, k, t ]
, [ t, t, t, t, t, k, k, k, k, t, t, t, t, t ]
, [ t, t, k, k, k, k, k, k, k, k, k, k, t, t ]
, [ t, k, k, k, w, k, w, k, w, k, w, k, k, t ]
, [ t, k, k, w, k, w, k, w, k, w, k, k, k, t ]
, [ t, k, k, k, k, k, k, k, k, k, k, k, k, t ]
, List.repeat 14 t
]
of
Ok grid ->
grid

Err problem ->
Debug.todo (Debug.toString problem)
Grid.fromRowsAndColumns
[ List.repeat 14 t
, [ t, k, k, k, k, k, k, k, k, k, k, k, k, t ]
, [ t, k, w, w, w, w, w, w, w, w, w, w, k, t ]
, [ t, k, w, k, k, k, k, k, k, k, k, w, k, t ]
, [ t, k, w, g, k, g, k, g, k, k, k, w, k, t ]
, [ t, k, w, k, k, k, k, k, k, k, k, w, k, t ]
, [ t, k, w, k, g, g, k, g, g, k, k, w, k, t ]
, [ t, k, w, k, k, k, k, k, k, k, k, w, k, t ]
, [ t, k, w, k, k, k, k, k, k, k, k, w, k, t ]
, [ t, k, w, w, w, w, w, w, w, w, w, w, k, t ]
, [ t, k, k, k, k, k, k, k, k, k, k, k, k, t ]
, [ t, t, t, t, t, k, k, k, k, t, t, t, t, t ]
, [ t, t, k, k, k, k, k, k, k, k, k, k, t, t ]
, [ t, k, k, k, w, k, w, k, w, k, w, k, k, t ]
, [ t, k, k, w, k, w, k, w, k, w, k, k, k, t ]
, [ t, k, k, k, k, k, k, k, k, k, k, k, k, t ]
, List.repeat 14 t
]


bars : Image
Expand All @@ -87,20 +80,13 @@ bars =
k =
Color.fromRGBA { red = 45, green = 45, blue = 45, alpha = Color.opaque }
in
case
Grid.fromRowsAndColumns
[ [ k, b, k, k, k ]
, [ b, b, b, b, b ]
, [ k, b, k, k, k ]
, [ k, b, k, k, k ]
, [ k, b, k, k, k ]
]
of
Ok grid ->
grid

Err problem ->
Debug.todo (Debug.toString problem)
Grid.fromRowsAndColumns
[ [ k, b, k, k, k ]
, [ b, b, b, b, b ]
, [ k, b, k, k, k ]
, [ k, b, k, k, k ]
, [ k, b, k, k, k ]
]


waves : Image
Expand All @@ -112,23 +98,16 @@ waves =
d =
Color.fromColor Color.opaque Tango.skyBlue3
in
case
Grid.fromRowsAndColumns
[ [ d, d, d, d, d, d, d, l ]
, [ l, d, d, d, d, d, d, d ]
, [ d, l, l, l, d, d, d, d ]
, [ d, d, d, d, l, l, d, d ]
, [ d, d, d, d, d, d, l, l ]
, [ l, l, l, d, d, d, d, d ]
, [ d, d, d, l, l, d, d, d ]
, [ d, d, d, d, d, l, l, d ]
]
of
Ok grid ->
grid

Err problem ->
Debug.todo (Debug.toString problem)
Grid.fromRowsAndColumns
[ [ d, d, d, d, d, d, d, l ]
, [ l, d, d, d, d, d, d, d ]
, [ d, l, l, l, d, d, d, d ]
, [ d, d, d, d, l, l, d, d ]
, [ d, d, d, d, d, d, l, l ]
, [ l, l, l, d, d, d, d, d ]
, [ d, d, d, l, l, d, d, d ]
, [ d, d, d, d, d, l, l, d ]
]


nyan : Image
Expand All @@ -154,28 +133,21 @@ nyan =
k =
Color.fromRGBA { red = 43, green = 45, blue = 45, alpha = Color.opaque }
in
case
Grid.fromRowsAndColumns
[ List.repeat 18 t
, [ t, t, k, k, t, t, t, t, t, t, t, t, t, k, k, t, t, t ]
, [ t, t, k, g, k, t, t, t, t, t, t, t, k, g, g, k, t, t ]
, [ t, t, k, g, g, k, t, t, t, t, t, k, g, g, g, k, t, t ]
, [ t, t, k, g, g, g, k, k, k, k, k, g, g, g, g, k, t, t ]
, [ t, k, g, g, g, g, g, g, g, g, g, g, g, g, g, k, t, t ]
, [ t, k, g, g, g, g, g, g, g, g, g, g, g, g, g, k, t, t ]
, [ t, k, g, g, g, g, g, g, g, g, g, g, g, g, g, g, k, t ]
, [ t, k, g, g, g, w, k, g, g, g, g, g, w, k, g, g, k, t ]
, [ t, k, g, g, g, k, k, g, g, g, k, g, k, k, g, g, k, t ]
, [ t, k, g, p, p, g, g, g, g, g, g, g, g, g, p, p, k, t ]
, [ t, k, g, p, p, g, k, g, g, k, g, g, k, g, p, p, k, t ]
, [ t, t, k, g, g, g, k, k, k, k, k, k, k, g, g, k, t, t ]
, [ t, t, t, k, g, g, g, g, g, g, g, g, g, g, k, t, t, t ]
, [ t, t, t, t, k, k, k, k, k, k, k, k, k, k, t, t, t, t ]
, List.repeat 18 t
]
of
Ok grid ->
grid

Err problem ->
Debug.todo (Debug.toString problem)
Grid.fromRowsAndColumns
[ List.repeat 18 t
, [ t, t, k, k, t, t, t, t, t, t, t, t, t, k, k, t, t, t ]
, [ t, t, k, g, k, t, t, t, t, t, t, t, k, g, g, k, t, t ]
, [ t, t, k, g, g, k, t, t, t, t, t, k, g, g, g, k, t, t ]
, [ t, t, k, g, g, g, k, k, k, k, k, g, g, g, g, k, t, t ]
, [ t, k, g, g, g, g, g, g, g, g, g, g, g, g, g, k, t, t ]
, [ t, k, g, g, g, g, g, g, g, g, g, g, g, g, g, k, t, t ]
, [ t, k, g, g, g, g, g, g, g, g, g, g, g, g, g, g, k, t ]
, [ t, k, g, g, g, w, k, g, g, g, g, g, w, k, g, g, k, t ]
, [ t, k, g, g, g, k, k, g, g, g, k, g, k, k, g, g, k, t ]
, [ t, k, g, p, p, g, g, g, g, g, g, g, g, g, p, p, k, t ]
, [ t, k, g, p, p, g, k, g, g, k, g, g, k, g, p, p, k, t ]
, [ t, t, k, g, g, g, k, k, k, k, k, k, k, g, g, k, t, t ]
, [ t, t, t, k, g, g, g, g, g, g, g, g, g, g, k, t, t, t ]
, [ t, t, t, t, k, k, k, k, k, k, k, k, k, k, t, t, t, t ]
, List.repeat 18 t
]

0 comments on commit 2a21e42

Please sign in to comment.