summaryrefslogtreecommitdiff
path: root/src/bin/transcriptor.ml
blob: feb24dbb5636ab690da27946cee13dc29320fed7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module T = Translator

let process (optional_line : string option) =
  match optional_line with
  | None -> ()
  | Some line ->

    let result = T.Reader.process line in

    let res1 = Result.map
        (fun t-> Sounds.repr (module Repr.Default) t)
        result in
    let () = match res1 with
      | Ok response -> print_endline response
      | Error err -> print_endline err in
    let res2 = Result.map
        (fun t-> Sounds.repr (module Repr.Tengwar) t)
        result in
    let () = match res2 with
      | Ok response -> print_endline response
      | Error err -> print_endline err in
    ()

let rec repeat channel =
  (* Attempt to read one line. *)
  let optional_line, continue = T.Lexer.line channel in
  process optional_line;
  if continue then
    repeat channel

let () =
  repeat (Lexing.from_channel stdin)