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 = ...@@ -34,165 +34,162 @@ let artify replace_pat s =
let y = i / w in let y = i / w in
let o ox oy = char_at (x + ox) (y + oy) in let o ox oy = char_at (x + ox) (y + oy) in
let m1 = -1 in let m1 = -1 in
[|o m1 m1; o 0 m1; o 1 m1; (o m1 m1, o 0 m1, o 1 m1,
o m1 0; o 0 0; o 1 0; o m1 0, o 0 0, o 1 0,
o m1 1; o 0 1; o 1 1|] o m1 1, o 0 1, o 1 1)
in in
UTF8.init (String.length s) (fun i -> replace_pat (make_pat i)) UTF8.init (String.length s) (fun i -> replace_pat (make_pat i))
let u s = UTF8.get s 0 let u s = UTF8.get s 0
let replace_pat_safe = function 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 "│" _ , _ , _ -> u "│"
| [| _ ; '|'|'+'; _ ; | _ , ('|'|'+'), _ ,
'=' ; '+' ; '=' ; '=' , '+' , '=' ,
_ ; '|'|'+'; _ |] -> u "╪" _ , ('|'|'+'), _ -> u "╪"
| [| _ ; _ ; _ ; | _ , _ , _ ,
'=' ; '+' ; '=' ; '=' , '+' , '=' ,
_ ; '|'|'+'; _ |] -> u "╤" _ , ('|'|'+'), _ -> u "╤"
| [| _ ; '|'|'+'; _ ; | _ , ('|'|'+'), _ ,
'=' ; '+' ; '=' ; '=' , '+' , '=' ,
_ ; _ ; _ |] -> u "╧" _ , _ , _ -> u "╧"
| [| _ ; '|'|'+'; _ ; | _ , ('|'|'+'), _ ,
_ ; '+' ; '=' ; _ , '+' , '=' ,
_ ; '|'|'+'; _ |] -> u "╞" _ , ('|'|'+'), _ -> u "╞"
| [| _ ; '|'|'+'; _ ; | _ , ('|'|'+'), _ ,
'=' ; '+' ; _ ; '=' , '+' , _ ,
_ ; '|'|'+'; _ |] -> u "╡" _ , ('|'|'+'), _ -> u "╡"
| [| _ ; _ ; _ ; | _ , _ , _ ,
_ ; '+' ; '=' ; _ , '+' , '=' ,
_ ; '|'|'+'; _ |] -> u "╒" _ , ('|'|'+'), _ -> u "╒"
| [| _ ; '|'|'+'; _ ; | _ , ('|'|'+'), _ ,
_ ; '+' ; '=' ; _ , '+' , '=' ,
_ ; _ ; _ |] -> u "╘" _ , _ , _ -> u "╘"
| [| _ ; _ ; _ ; | _ , _ , _ ,
'=' ; '+' ; _ ; '=' , '+' , _ ,
_ ; '|'|'+'; _ |] -> u "╕" _ , ('|'|'+'), _ -> u "╕"
| [| _ ; '|'|'+'; _ ; | _ , ('|'|'+'), _ ,
'=' ; '+' ; _ ; '=' , '+' , _ ,
_ ; _ ; _ |] -> u "╛" _ , _ , _ -> u "╛"
| [| _ ; _ ; _ ; | _ , _ , _ ,
_ ; '=' ; '='|'+'; _ , '=' , ('='|'+'),
_ ; _ ; _ |] _ , _ , _
| [| _ ; _ ; _ ; | _ , _ , _ ,
'='|'+'; '=' ; _ ; ('='|'+'), '=' , _ ,
_ ; _ ; _ |] -> u "═" _ , _ , _ -> u "═"
| [| _ ; _ ; _ ; | _ , _ , _ ,
_ ; c ; _ ; _ , c , _ ,
_ ; _ ; _ |] -> UChar.of_char c _ , _ , _ -> UChar.of_char c
| _ -> failwith "invalid pattern"
let replace_pat_unsafe = let replace_pat_unsafe =
let both_double x y = if x = y then x else '-' in 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 let pick_double x s = UTF8.get s (if x = '=' then 1 else 0) in
function function
| [| _ ; ' '; _ ; | _ , ' ', _ ,
' '; '+'; ' '; ' ', '+', ' ',
_ ; ' '; _ |] -> u "·" (* XXX: maybe just leave the '+' *) _ , ' ', _ -> u "·" (* XXX: maybe just leave the '+' *)
| [| _ ; ' '; _ ; | _ , ' ', _ ,
_ ; '+'; ' '; _ , '+', ' ',
_ ; ' '; _ |] -> u "╴" _ , ' ', _ -> u "╴"
| [| _ ; ' '; _ ; | _ , ' ', _ ,
' '; '+'; _ ; ' ', '+', _ ,
_ ; ' '; _ |] -> u "╶" _ , ' ', _ -> u "╶"
| [| _ ; ' '; _ ; | _ , ' ', _ ,
' '; '+'; ' '; ' ', '+', ' ',
_ ; _ ; _ |] -> u "╷" _ , _ , _ -> u "╷"
| [| _ ; _ ; _ ; | _ , _ , _ ,
' '; '+'; ' '; ' ', '+', ' ',
_ ; ' '; _ |] -> u "╵" _ , ' ', _ -> u "╵"
| [| _ ; ' '; _ ; | _ , ' ', _ ,
' '; '+'; x ; ' ', '+', x ,
_ ; _ ; _ |] -> pick_double x "┌╒" _ , _ , _ -> pick_double x "┌╒"
| [| _ ; _ ; _ ; | _ , _ , _ ,
' '; '+'; x ; ' ', '+', x ,
_ ; ' '; _ |] -> pick_double x "└╘" _ , ' ', _ -> pick_double x "└╘"
| [| _ ; ' '; _ ; | _ , ' ', _ ,
x ; '+'; ' '; x , '+', ' ',
_ ; _ ; _ |] -> pick_double x "┐╕" _ , _ , _ -> pick_double x "┐╕"
| [| _ ; _ ; _ ; | _ , _ , _ ,
x ; '+'; ' '; x , '+', ' ',
_ ; ' '; _ |] -> pick_double x "┘╛" _ , ' ', _ -> pick_double x "┘╛"
| [| _ ; ' '; _ ; | _ , ' ', _ ,
x ; '+'; y ; x , '+', y ,
_ ; _ ; _ |] -> pick_double (both_double x y) "┬╤" _ , _ , _ -> pick_double (both_double x y) "┬╤"
| [| _ ; _ ; _ ; | _ , _ , _ ,
x ; '+'; y ; x , '+', y ,
_ ; ' '; _ |] -> pick_double (both_double x y) "┴╧" _ , ' ', _ -> pick_double (both_double x y) "┴╧"
| [| _ ; _ ; _ ; | _ , _ , _ ,
' '; '+'; x ; ' ', '+', x ,
_ ; _ ; _ |] -> pick_double x "├╞" _ , _ , _ -> pick_double x "├╞"
| [| _ ; _ ; _ ; | _ , _ , _ ,
x ; '+'; ' '; x , '+', ' ',
_ ; _ ; _ |] -> pick_double x "┤╡" _ , _ , _ -> pick_double x "┤╡"
| [| _ ; _ ; _ ; | _ , _ , _ ,
x ; '+'; y ; x , '+', y ,
_ ; _ ; _ |] -> pick_double (both_double x y) "┼╪" _ , _ , _ -> pick_double (both_double x y) "┼╪"
| [| _ ; _ ; _ ; | _ , _ , _ ,
_ ; '-' ; '-'|'+'; _ , '-' , ('-'|'+'),
_ ; _ ; _ |] _ , _ , _
| [| _ ; _ ; _ ; | _ , _ , _ ,
'-'|'+'; '-' ; _ ; ('-'|'+'), '-' , _ ,
_ ; _ ; _ |] -> u "─" _ , _ , _ -> u "─"
| [| _ ; _ ; _ ; | _ , _ , _ ,
_ ; '|' ; _ ; _ , '|' , _ ,
_ ; '|'|'+'; _ |] _ , ('|'|'+'), _
| [| _ ; '|'|'+'; _ ; | _ , ('|'|'+'), _ ,
_ ; '|' ; _ ; _ , '|' , _ ,
_ ; _ ; _ |] -> u "│" _ , _ , _ -> u "│"
| [| _ ; _ ; _ ; | _ , _ , _ ,
'-'|'='|'+'; '='; _ ; ('-'|'='|'+'), '=', _ ,
_ ; _ ; _ |] _ , _ , _
| [|_ ; _ ; _ ; | _ , _ , _ ,
_ ; '='; '-'|'='|'+'; _ , '=', ('-'|'='|'+'),
_ ; _ ; _ |] -> u "═" _ , _ , _ -> u "═"
| [|_; _; _; | _, _, _,
_; c; _; _, c, _,
_; _; _|] -> UChar.of_char c _, _, _ -> UChar.of_char c
| _ -> failwith "invalid pattern"
let () = let () =
let args = List.tl (Array.to_list Sys.argv) in 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