Home
package
ANSI
to_str
style
color
parse_raw_stdin
input_to_str
symbol_to_str
upper_to_str
lower_to_str
parse_cursor
update_cursor
draw_screen
draw_box
draw_v_line
draw_h_line
draw_cursor
draw_text
Escape
is_eq
to_hash
Symbol
is_eq
to_hash
Ctrl
is_eq
to_hash
Action
is_eq
to_hash
Arrow
is_eq
to_hash
Number
is_eq
to_hash
Letter
is_eq
to_hash
Input
is_eq
to_hash
ScreenSize
CursorPosition
Pixel
DrawFn
C16
is_eq
to_hash
name_to_code
to_c256
Name
is_eq
to_hash
C256
to_rgb
Color
is_eq
to_hash
to_code
Control
is_eq
to_hash
to_code
Layout
squared_border
rounded_border
pretty_border
default_row_spacing
default_spacing
data_to_rows
data_to_columns
trunc_or_pad
draw_row
auto_sizes
draw_grid
draw_table
LineFill
RowSpacing
GridSpacing
PieceTable
insert
length
delete
to_list
Span
Entry
Rgb
from_hex
Spacing
is_eq
to_hash
xw
yw
padding
apply
Side
is_eq
to_hash
Style
is_eq
to_hash
to_code
ANSI
.
to_str
:
Escape
->
Str
ANSI
.
style
:
Str
,
List
(
Style
)
->
Str
ANSI
.
color
:
Str
, { fg :
Color
, bg :
Color
}
->
Str
ANSI
.
parse_raw_stdin
:
List
(
U8
)
->
Input
ANSI
.
input_to_str
:
Input
->
Str
ANSI
.
symbol_to_str
:
Symbol
->
Str
ANSI
.
upper_to_str
:
Letter
->
Str
ANSI
.
lower_to_str
:
Letter
->
Str
ANSI
.
parse_cursor
:
List
(
U8
)
->
CursorPosition
ANSI
.
update_cursor
: { cursor :
CursorPosition
, screen :
ScreenSize
},
Arrow
->
{ cursor :
CursorPosition
, screen :
ScreenSize
}
ANSI
.
draw_screen
: { cursor :
CursorPosition
, screen :
ScreenSize
},
List
(
DrawFn
)
->
Str
ANSI
.
draw_box
: { r :
U16
, c :
U16
, w :
U16
, h :
U16
, fg :
Color
, bg :
Color
, char :
Str
, styles :
List
(
Style
) }
->
DrawFn
ANSI
.
draw_v_line
: { r :
U16
, c :
U16
, len :
U16
, fg :
Color
, bg :
Color
, char :
Str
, styles :
List
(
Style
) }
->
DrawFn
ANSI
.
draw_h_line
: { r :
U16
, c :
U16
, len :
U16
, fg :
Color
, bg :
Color
, char :
Str
, styles :
List
(
Style
) }
->
DrawFn
ANSI
.
draw_cursor
: { fg :
Color
, bg :
Color
, char :
Str
, styles :
List
(
Style
) }
->
DrawFn
ANSI
.
draw_text
:
Str
, { r :
U16
, c :
U16
, fg :
Color
, bg :
Color
, styles :
List
(
Style
) }
->
DrawFn
ANSI
.
Escape
:= [
Reset
,
Control
(
Control
)]
ANSI.Escape
.
is_eq
: _
ANSI.Escape
.
to_hash
: _
ANSI
.
Symbol
:= [
ExclamationMark
,
QuotationMark
,
NumberSign
,
DollarSign
,
PercentSign
,
Ampersand
,
Apostrophe
,
RoundOpenBracket
,
RoundCloseBracket
,
Asterisk
,
PlusSign
,
Comma
,
Hyphen
,
FullStop
,
ForwardSlash
,
Colon
,
SemiColon
,
LessThanSign
,
EqualsSign
,
GreaterThanSign
,
QuestionMark
,
AtSign
,
SquareOpenBracket
,
Backslash
,
SquareCloseBracket
,
Caret
,
Underscore
,
GraveAccent
,
CurlyOpenBrace
,
VerticalBar
,
CurlyCloseBrace
,
Tilde
]
ANSI.Symbol
.
is_eq
: _
ANSI.Symbol
.
to_hash
: _
ANSI
.
Ctrl
:= [
Space
,
A
,
B
,
C
,
D
,
E
,
F
,
G
,
H
,
I
,
J
,
K
,
L
,
N
,
O
,
P
,
Q
,
R
,
S
,
T
,
U
,
V
,
W
,
X
,
Y
,
Z
,
BackSlash
,
SquareCloseBracket
,
Caret
,
Underscore
]
ANSI.Ctrl
.
is_eq
: _
ANSI.Ctrl
.
to_hash
: _
ANSI
.
Action
:= [
Escape
,
Enter
,
Space
,
Delete
]
ANSI.Action
.
is_eq
: _
ANSI.Action
.
to_hash
: _
ANSI
.
Arrow
:= [
Up
,
Down
,
Left
,
Right
]
ANSI.Arrow
.
is_eq
: _
ANSI.Arrow
.
to_hash
: _
ANSI
.
Number
:= [
N0
,
N1
,
N2
,
N3
,
N4
,
N5
,
N6
,
N7
,
N8
,
N9
]
ANSI.Number
.
is_eq
: _
ANSI.Number
.
to_hash
: _
ANSI
.
Letter
:= [
A
,
B
,
C
,
D
,
E
,
F
,
G
,
H
,
I
,
J
,
K
,
L
,
M
,
N
,
O
,
P
,
Q
,
R
,
S
,
T
,
U
,
V
,
W
,
X
,
Y
,
Z
]
ANSI.Letter
.
is_eq
: _
ANSI.Letter
.
to_hash
: _
ANSI
.
Input
:= [
Ctrl
(
Ctrl
),
Action
(
Action
),
Arrow
(
Arrow
),
Symbol
(
Symbol
),
Number
(
Number
),
Upper
(
Letter
),
Lower
(
Letter
),
Unsupported
(
List
(
U8
))]
ANSI.Input
.
is_eq
: _
ANSI.Input
.
to_hash
: _
ANSI
.
ScreenSize
: { width :
U16
, height :
U16
}
ANSI
.
CursorPosition
: { row :
U16
, col :
U16
}
ANSI
.
Pixel
: { char :
Str
, fg :
Color
, bg :
Color
, styles :
List
(
Style
) }
ANSI
.
DrawFn
:
CursorPosition
,
CursorPosition
->
Try
(
Pixel
, { })
C16
.
is_eq
: _
C16
.
to_hash
: _
C16
.
name_to_code
:
Name
->
U8
C16
.
to_c256
:
C16
->
U8
C16
.
Name
:= [
Black
,
Red
,
Green
,
Yellow
,
Blue
,
Magenta
,
Cyan
,
White
]
C16.Name
.
is_eq
: _
C16.Name
.
to_hash
: _
C256
.
to_rgb
:
U8
->
(
U8
,
U8
,
U8
)
Color
.
is_eq
: _
Color
.
to_hash
: _
Color
.
to_code
:
Color
,
U8
->
List
(
U8
)
Control
.
is_eq
: _
Control
.
to_hash
: _
Control
.
to_code
:
Control
->
Str
Layout
.
squared_border
:
LineFill
(
LineFill
(
Str
))
Layout
.
rounded_border
:
LineFill
(
LineFill
(
Str
))
Layout
.
pretty_border
:
LineFill
(
LineFill
(
Str
))
Layout
.
default_row_spacing
:
RowSpacing
Layout
.
default_spacing
:
GridSpacing
Layout
.
data_to_rows
:
List
(
a
), (
U64
,
U64
)
->
Try
(
List
(
List
(
a
)), [
OutOfBounds
])
Layout
.
data_to_columns
:
List
(
a
), (
U64
,
U64
)
->
Try
(
List
(
List
(
a
)), [
OutOfBounds
])
Layout
.
trunc_or_pad
:
Str
,
Str
->
Str
,
U64
->
Str
Layout
.
draw_row
:
List
(
Str
),
List
(
U64
),
LineFill
(
Str
),
RowSpacing
->
Str
Layout
.
auto_sizes
:
List
(
List
(
Str
))
->
List
(
U64
)
Layout
.
draw_grid
:
List
(
List
(
Str
)),
List
(
U64
),
LineFill
(
LineFill
(
Str
)),
GridSpacing
->
Str
Layout
.
draw_table
:
List
(
List
(
Str
)),
List
(
U64
),
LineFill
(
LineFill
(
Str
))
->
Str
Layout
.
LineFill
: { start :
a
, base :
a
, sep :
a
, end :
a
}
Layout
.
RowSpacing
: { mx : (
U64
,
U64
), px : (
U64
,
U64
) }
Layout
.
GridSpacing
: { mx : (
U64
,
U64
), my : (
U64
,
U64
), px : (
U64
,
U64
), py : (
U64
,
U64
) }
PieceTable
.
insert
:
PieceTable
(
a
), { values :
List
(
a
), index :
U64
}
->
PieceTable
(
a
)
PieceTable
.
length
:
List
(
Entry
)
->
U64
PieceTable
.
delete
:
PieceTable
(
a
), { index :
U64
}
->
PieceTable
(
a
)
PieceTable
.
to_list
:
PieceTable
(
a
)
->
List
(
a
)
PieceTable
.
Span
: { start :
U64
, len :
U64
}
PieceTable
.
Entry
:= [
Add
(
Span
),
Original
(
Span
)]
Rgb
.
from_hex
:
U32
->
(
U8
,
U8
,
U8
)
Spacing
.
is_eq
: _
Spacing
.
to_hash
: _
Spacing
.
xw
:
Str
Spacing
.
yw
:
Str
Spacing
.
padding
:
Side
,
U64
->
Spacing
Spacing
.
apply
:
Spacing
->
Str
->
Str
Spacing
.
Side
:= [
Top
,
Right
,
Bottom
,
Left
]
Spacing.Side
.
is_eq
: _
Spacing.Side
.
to_hash
: _
Style
.
is_eq
: _
Style
.
to_hash
: _
Style
.
to_code
:
Style
->
List
(
U8
)
Rgb
:= (
U8
,
U8
,
U8
)
from_hex
:
U32
->
(
U8
,
U8
,
U8
)