Commit a2db9fe6 authored by Taddeüs Kroes's avatar Taddeüs Kroes

Now using tuples for patterns instead of arrays

parent 97dfaabb
......@@ -34,165 +34,162 @@ let artify replace_pat s =
let y = i / w in
let o ox oy = char_at (x + ox) (y + oy) in
let m1 = -1 in
[|o m1 m1; o 0 m1; o 1 m1;
o m1 0; o 0 0; o 1 0;
o m1 1; o 0 1; o 1 1|]
(o m1 m1, o 0 m1, o 1 m1,
o m1 0, o 0 0, o 1 0,
o m1 1, o 0 1, o 1 1)
in
UTF8.init (String.length s) (fun i -> replace_pat (make_pat i))
let u s = UTF8.get s 0
let replace_pat_safe = function
| [| _ ; '|'|'+'; _ ;
'-'|'+'; '+' ; '-'|'+';
_ ; '|'|'+'; _ |] -> u "┼"
| [| _ ; _ ; _ ;
'-'|'+'; '+' ; '-'|'+';
_ ; '|'|'+'; _ |] -> u "┬"
| [| _ ; '|'|'+'; _ ;
'-'|'+'; '+' ; '-'|'+';
_ ; _ ; _ |] -> u "┴"
| [| _ ; '|'|'+'; _ ;
_ ; '+' ; '-'|'+';
_ ; '|'|'+'; _ |] -> u "├"
| [| _ ; '|'|'+'; _ ;
'-'|'+'; '+' ; _ ;
_ ; '|'|'+'; _ |] -> u "┤"
| [| _ ; _ ; _ ;
_ ; '+' ; '-'|'+';
_ ; '|'|'+'; _ |] -> u "┌"
| [| _ ; '|'|'+'; _ ;
_ ; '+' ; '-'|'+';
_ ; _ ; _ |] -> u "└"
| [| _ ; _ ; _ ;
'-'|'+'; '+' ; _ ;
_ ; '|'|'+'; _ |] -> u "┐"
| [| _ ; '|'|'+'; _ ;
'-'|'+'; '+' ; _ ;
_ ; _ ; _ |] -> u "┘"
| [| _ ; _ ; _ ;
_ ; '-' ; '-'|'+';
_ ; _ ; _ |]
| [| _ ; _ ; _ ;
'-'|'+'; '-' ; _ ;
_ ; _ ; _ |] -> u "─"
| [| _ ; _ ; _ ;
_ ; '|' ; _ ;
_ ; '|'|'+'; _ |]
| [| _ ; '|'|'+'; _ ;
_ ; '|' ; _ ;
_ ; _ ; _ |] -> u "│"
| [| _ ; '|'|'+'; _ ;
'=' ; '+' ; '=' ;
_ ; '|'|'+'; _ |] -> u "╪"
| [| _ ; _ ; _ ;
'=' ; '+' ; '=' ;
_ ; '|'|'+'; _ |] -> u "╤"
| [| _ ; '|'|'+'; _ ;
'=' ; '+' ; '=' ;
_ ; _ ; _ |] -> u "╧"
| [| _ ; '|'|'+'; _ ;
_ ; '+' ; '=' ;
_ ; '|'|'+'; _ |] -> u "╞"
| [| _ ; '|'|'+'; _ ;
'=' ; '+' ; _ ;
_ ; '|'|'+'; _ |] -> u "╡"
| [| _ ; _ ; _ ;
_ ; '+' ; '=' ;
_ ; '|'|'+'; _ |] -> u "╒"
| [| _ ; '|'|'+'; _ ;
_ ; '+' ; '=' ;
_ ; _ ; _ |] -> u "╘"
| [| _ ; _ ; _ ;
'=' ; '+' ; _ ;
_ ; '|'|'+'; _ |] -> u "╕"
| [| _ ; '|'|'+'; _ ;
'=' ; '+' ; _ ;
_ ; _ ; _ |] -> u "╛"
| [| _ ; _ ; _ ;
_ ; '=' ; '='|'+';
_ ; _ ; _ |]
| [| _ ; _ ; _ ;
'='|'+'; '=' ; _ ;
_ ; _ ; _ |] -> u "═"
| [| _ ; _ ; _ ;
_ ; c ; _ ;
_ ; _ ; _ |] -> UChar.of_char c
| _ -> failwith "invalid pattern"
| _ , ('|'|'+'), _ ,
('-'|'+'), '+' , ('-'|'+'),
_ , ('|'|'+'), _ -> u "┼"
| _ , _ , _ ,
('-'|'+'), '+' , ('-'|'+'),
_ , ('|'|'+'), _ -> u "┬"
| _ , ('|'|'+'), _ ,
('-'|'+'), '+' , ('-'|'+'),
_ , _ , _ -> u "┴"
| _ , ('|'|'+'), _ ,
_ , '+' , ('-'|'+'),
_ , ('|'|'+'), _ -> u "├"
| _ , ('|'|'+'), _ ,
('-'|'+'), '+' , _ ,
_ , ('|'|'+'), _ -> u "┤"
| _ , _ , _ ,
_ , '+' , ('-'|'+'),
_ , ('|'|'+'), _ -> u "┌"
| _ , ('|'|'+'), _ ,
_ , '+' , ('-'|'+'),
_ , _ , _ -> u "└"
| _ , _ , _ ,
('-'|'+'), '+' , _ ,
_ , ('|'|'+'), _ -> u "┐"
| _ , ('|'|'+'), _ ,
('-'|'+'), '+' , _ ,
_ , _ , _ -> u "┘"
| _ , _ , _ ,
_ , '-' , ('-'|'+'),
_ , _ , _
| _ , _ , _ ,
('-'|'+'), '-' , _ ,
_ , _ , _ -> u "─"
| _ , _ , _ ,
_ , '|' , _ ,
_ , ('|'|'+'), _
| _ , ('|'|'+'), _ ,
_ , '|' , _ ,
_ , _ , _ -> u "│"
| _ , ('|'|'+'), _ ,
'=' , '+' , '=' ,
_ , ('|'|'+'), _ -> u "╪"
| _ , _ , _ ,
'=' , '+' , '=' ,
_ , ('|'|'+'), _ -> u "╤"
| _ , ('|'|'+'), _ ,
'=' , '+' , '=' ,
_ , _ , _ -> u "╧"
| _ , ('|'|'+'), _ ,
_ , '+' , '=' ,
_ , ('|'|'+'), _ -> u "╞"
| _ , ('|'|'+'), _ ,
'=' , '+' , _ ,
_ , ('|'|'+'), _ -> u "╡"
| _ , _ , _ ,
_ , '+' , '=' ,
_ , ('|'|'+'), _ -> u "╒"
| _ , ('|'|'+'), _ ,
_ , '+' , '=' ,
_ , _ , _ -> u "╘"
| _ , _ , _ ,
'=' , '+' , _ ,
_ , ('|'|'+'), _ -> u "╕"
| _ , ('|'|'+'), _ ,
'=' , '+' , _ ,
_ , _ , _ -> u "╛"
| _ , _ , _ ,
_ , '=' , ('='|'+'),
_ , _ , _
| _ , _ , _ ,
('='|'+'), '=' , _ ,
_ , _ , _ -> u "═"
| _ , _ , _ ,
_ , c , _ ,
_ , _ , _ -> UChar.of_char c
let replace_pat_unsafe =
let both_double x y = if x = y then x else '-' in
let pick_double x s = UTF8.get s (if x = '=' then 1 else 0) in
function
| [| _ ; ' '; _ ;
' '; '+'; ' ';
_ ; ' '; _ |] -> u "·" (* XXX: maybe just leave the '+' *)
| [| _ ; ' '; _ ;
_ ; '+'; ' ';
_ ; ' '; _ |] -> u "╴"
| [| _ ; ' '; _ ;
' '; '+'; _ ;
_ ; ' '; _ |] -> u "╶"
| [| _ ; ' '; _ ;
' '; '+'; ' ';
_ ; _ ; _ |] -> u "╷"
| [| _ ; _ ; _ ;
' '; '+'; ' ';
_ ; ' '; _ |] -> u "╵"
| [| _ ; ' '; _ ;
' '; '+'; x ;
_ ; _ ; _ |] -> pick_double x "┌╒"
| [| _ ; _ ; _ ;
' '; '+'; x ;
_ ; ' '; _ |] -> pick_double x "└╘"
| [| _ ; ' '; _ ;
x ; '+'; ' ';
_ ; _ ; _ |] -> pick_double x "┐╕"
| [| _ ; _ ; _ ;
x ; '+'; ' ';
_ ; ' '; _ |] -> pick_double x "┘╛"
| [| _ ; ' '; _ ;
x ; '+'; y ;
_ ; _ ; _ |] -> pick_double (both_double x y) "┬╤"
| [| _ ; _ ; _ ;
x ; '+'; y ;
_ ; ' '; _ |] -> pick_double (both_double x y) "┴╧"
| [| _ ; _ ; _ ;
' '; '+'; x ;
_ ; _ ; _ |] -> pick_double x "├╞"
| [| _ ; _ ; _ ;
x ; '+'; ' ';
_ ; _ ; _ |] -> pick_double x "┤╡"
| [| _ ; _ ; _ ;
x ; '+'; y ;
_ ; _ ; _ |] -> pick_double (both_double x y) "┼╪"
| _ , ' ', _ ,
' ', '+', ' ',
_ , ' ', _ -> u "·" (* XXX: maybe just leave the '+' *)
| _ , ' ', _ ,
_ , '+', ' ',
_ , ' ', _ -> u "╴"
| _ , ' ', _ ,
' ', '+', _ ,
_ , ' ', _ -> u "╶"
| _ , ' ', _ ,
' ', '+', ' ',
_ , _ , _ -> u "╷"
| _ , _ , _ ,
' ', '+', ' ',
_ , ' ', _ -> u "╵"
| _ , ' ', _ ,
' ', '+', x ,
_ , _ , _ -> pick_double x "┌╒"
| _ , _ , _ ,
' ', '+', x ,
_ , ' ', _ -> pick_double x "└╘"
| _ , ' ', _ ,
x , '+', ' ',
_ , _ , _ -> pick_double x "┐╕"
| _ , _ , _ ,
x , '+', ' ',
_ , ' ', _ -> pick_double x "┘╛"
| _ , ' ', _ ,
x , '+', y ,
_ , _ , _ -> pick_double (both_double x y) "┬╤"
| _ , _ , _ ,
x , '+', y ,
_ , ' ', _ -> pick_double (both_double x y) "┴╧"
| _ , _ , _ ,
' ', '+', x ,
_ , _ , _ -> pick_double x "├╞"
| _ , _ , _ ,
x , '+', ' ',
_ , _ , _ -> pick_double x "┤╡"
| _ , _ , _ ,
x , '+', y ,
_ , _ , _ -> pick_double (both_double x y) "┼╪"
| [| _ ; _ ; _ ;
_ ; '-' ; '-'|'+';
_ ; _ ; _ |]
| [| _ ; _ ; _ ;
'-'|'+'; '-' ; _ ;
_ ; _ ; _ |] -> u "─"
| _ , _ , _ ,
_ , '-' , ('-'|'+'),
_ , _ , _
| _ , _ , _ ,
('-'|'+'), '-' , _ ,
_ , _ , _ -> u "─"
| [| _ ; _ ; _ ;
_ ; '|' ; _ ;
_ ; '|'|'+'; _ |]
| [| _ ; '|'|'+'; _ ;
_ ; '|' ; _ ;
_ ; _ ; _ |] -> u "│"
| _ , _ , _ ,
_ , '|' , _ ,
_ , ('|'|'+'), _
| _ , ('|'|'+'), _ ,
_ , '|' , _ ,
_ , _ , _ -> u "│"
| [| _ ; _ ; _ ;
'-'|'='|'+'; '='; _ ;
_ ; _ ; _ |]
| [|_ ; _ ; _ ;
_ ; '='; '-'|'='|'+';
_ ; _ ; _ |] -> u "═"
| _ , _ , _ ,
('-'|'='|'+'), '=', _ ,
_ , _ , _
| _ , _ , _ ,
_ , '=', ('-'|'='|'+'),
_ , _ , _ -> u "═"
| [|_; _; _;
_; c; _;
_; _; _|] -> UChar.of_char c
| _ -> failwith "invalid pattern"
| _, _, _,
_, c, _,
_, _, _ -> UChar.of_char c
let () =
let args = List.tl (Array.to_list Sys.argv) in
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment