Skip to content
Snippets Groups Projects
Commit a2db9fe6 authored by Taddeüs Kroes's avatar Taddeüs Kroes
Browse files

Now using tuples for patterns instead of arrays

parent 97dfaabb
No related branches found
No related tags found
No related merge requests found
...@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment