summary refs log tree commit diff
diff options
context:
space:
mode:
authorQuentin Carbonneaux <quentin@c9x.me>2017-04-14 12:57:17 -0400
committerQuentin Carbonneaux <quentin@c9x.me>2017-04-14 12:57:17 -0400
commitb9c8724ea50e92ee7215fca6edadcb5755b2a578 (patch)
tree6bd1190fa16a9706a0f6ef1f8aab698e86fe1cdf
parent1883ab1e01e8078ce2e6206482ec50e446fdce34 (diff)
downloadroux-b9c8724ea50e92ee7215fca6edadcb5755b2a578.tar.gz
remove html converter
-rw-r--r--doc/.gitignore1
-rw-r--r--doc/Makefile17
-rw-r--r--doc/txt/txt.ml322
3 files changed, 0 insertions, 340 deletions
diff --git a/doc/.gitignore b/doc/.gitignore
deleted file mode 100644
index 5ccff1a..0000000
--- a/doc/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-html/
diff --git a/doc/Makefile b/doc/Makefile
deleted file mode 100644
index e1b93eb..0000000
--- a/doc/Makefile
+++ /dev/null
@@ -1,17 +0,0 @@
-DOCS = abi il llvm
-
-all: $(DOCS:%=html/%.html)
-
-clean:
-	rm -fr html
-
-html/%.html: %.txt
-	mkdir html 2> /dev/null || true
-	( sed -ne '2{s,.*,<title>&</title>,;p;q}' $<; \
-	  echo '<div class="container">'; \
-	  sed -ne '2{s,.*,<h2>&</h2>,;p;q}' $<; \
-	  sed -e '1,3d' $< | ocaml txt/txt.ml; \
-	  echo '</div>'; \
-	) > $@
-
-.PHONY: all clean
diff --git a/doc/txt/txt.ml b/doc/txt/txt.ml
deleted file mode 100644
index 35b797a..0000000
--- a/doc/txt/txt.ml
+++ /dev/null
@@ -1,322 +0,0 @@
-let dent = 4
-
-type doc = item list
-and item =
-  | Verb of string * string
-  | Par of (string * bool)
-  | Ulist of doc list
-  | Olist of doc list
-  | Title of int * string * string
-
-let (|>) x f = f x
-
-let isspace = String.contains " \n\t"
-
-module String = struct
-  include String
-
-  let suff s n =
-    let l = String.length s in
-    if n >= l then "" else
-    String.sub s n (l-n)
-
-  let haspref p s =
-    let lp = String.length p in
-    String.length s >= lp &&
-    p = String.sub s 0 lp
-
-  let trim s =
-    let l = String.length s in
-    let i = ref 0 and j = ref (l-1) in
-    while !i<l && isspace s.[!i]
-      do incr i done;
-    while !j>=0 && isspace s.[!j]
-      do decr j done;
-    if !j = -1 then s else sub s !i (!j- !i+1)
-end
-
-let idify s =
-  let rec f i cs =
-    if i >= String.length s then cs else
-    match s.[i] with
-    | ' ' -> f (i+1) ("-" :: cs)
-    | c   -> f (i+1) (String.make 1 c :: cs) in
-  f 0 [] |> List.rev |> String.concat ""
-
-let warn = Printf.eprintf
-
-let getdent s =
-  let rec f n =
-    if n >= String.length s then 0 else
-    if s.[n] = ' ' then f (n+1) else
-    if s.[n] = '\t' then f (n+8) else
-    n/dent in
-  f 0
-
-let dedent s i =
-  let rec f i j =
-    if i <= 0 then (-i, j) else
-    if j >= String.length s then (0, j) else
-    if s.[j] = ' ' then f (i-1) (j+1) else
-    if s.[j] = '\t' then f (i-8) (j+1) else
-    (0, j) in
-  let (p, j) = f (i*dent) 0 in
-  String.make p ' ' ^ String.suff s j
-
-let rec getlines acc n =
-  match try Some (read_line ()) with End_of_file -> None with
-  | Some s ->
-    getlines ((n, getdent s, s) :: acc) (n+1)
-  | None -> List.rev acc
-
-let matchs skip fin s =
-  let rec f n =
-    if n >= String.length s then 0 else
-    if s.[n] = fin then (n+1) else
-    if String.contains skip s.[n] then f (n+1) else
-    0 in
-  f 0
-
-let endnum = matchs " 0123456789" '.'
-let endbul = matchs " " '*'
-let skipnum s = String.suff s (endnum s)
-let skipbul s = String.suff s (endbul s)
-
-let gettitles lines =
-  let titles = Hashtbl.create 100 in
-  let insert lvl n t =
-    let t = String.trim (skipnum (String.suff t 2)) in
-    if Hashtbl.mem titles t then
-      warn "line %d: title has multiple definitions\n" n;
-    Hashtbl.add titles t (lvl, idify t) in
-  lines |> List.iter begin fun (n, lvl, t) ->
-    if lvl <> 0 then () else
-    if String.haspref "- " t then insert 0 n t else
-    if String.haspref "~ " t then insert 1 n t else
-    ()
-  end;
-  titles
-
-let top lines =
-  match !lines with
-  | [] -> None
-  | l :: _ -> Some l
-
-let pop lines =
-  lines := List.tl !lines
-let push lines l =
-  lines := l :: !lines
-
-let isolist l = endnum l <> 0
-let isulist l = endbul l <> 0
-
-let getverb lines idnt =
-  let rec skip = function
-    | s :: l when String.trim s = "" -> skip l
-    | l -> l in
-  let rec f ls =
-    match top lines with
-    | Some (n, i, l)
-      when i >= idnt
-        || String.trim l = "" ->
-      pop lines;
-      f (dedent l idnt :: ls)
-    | _ ->
-      skip ls |> List.rev |>
-      String.concat "\n" in
-  f []
-
-let getpar lines idnt =
-  let empty = function
-    | Some (_, _, l) -> String.trim l = ""
-    | _ -> false in
-  let rec f ls =
-    match top lines with
-    | Some (n, i, l)
-      when i = idnt
-        && l <> ""
-        && not (isolist l)
-        && not (isulist l) ->
-      pop lines;
-      f (l :: ls)
-    | t ->
-      String.concat "\n" (List.rev ls),
-      empty t in
-  f []
-
-let mergedoc =
-  let rec aggreg f = function
-    | (i :: is) as is'->
-      begin match f i with
-      | Some l ->
-        let l', is = aggreg f is in
-        List.append l l', is
-      | None -> [], is'
-      end
-    | is -> [], is in
-  let ul = function Ulist l -> Some l | _ -> None in
-  let ol = function Olist l -> Some l | _ -> None in
-  let rec f d = match d with
-    | Ulist _ :: _ ->
-      let l, d = aggreg ul d in
-      Ulist l :: f d
-    | Olist _ :: _ ->
-      let l, d = aggreg ol d in
-      Olist l :: f d
-    | i :: d -> i :: f d
-    | [] -> [] in
-  f
-
-let rec getdoc lines si acc =
-  match top lines with
-  | Some (n, i, l) ->
-    if i = si && isolist l then begin             (* Olist item *)
-      pop lines;
-      push lines (n, i+1, skipnum l);
-      let li = getdoc lines (si+1) [] in
-      getdoc lines si (Olist [li] :: acc);
-    end else
-    if i = si && isulist l then begin             (* Ulist item *)
-      pop lines;
-      push lines (n, i+1, skipbul l);
-      let li = getdoc lines (si+1) [] in
-      getdoc lines si (Ulist [li] :: acc);
-    end else
-    if i > si then begin                          (* Verb item *)
-      let ty =
-        let l = dedent l i in
-        if l.[0] <> '`' then "" else begin
-          pop lines;
-          String.suff l 1
-        end in
-      let verb = getverb lines (si+1) in
-      getdoc lines si (Verb (ty, verb) :: acc);
-    end else
-    if si = 0 && String.haspref "~ " l
-    || si = 0 && String.haspref "- " l then begin (* Titles *)
-      pop lines;
-      let lvl = if l.[0] = '-' then 0 else 1 in
-      let tit = String.suff l 2 in
-      let id = idify (String.trim (skipnum tit)) in
-      getdoc lines si (Title (lvl, id, tit) :: acc);
-    end else
-    if String.haspref "---" l
-    || String.haspref "~~~" l
-    || l = "" then begin                          (* Decorations *)
-      pop lines;
-      getdoc lines si acc;
-    end else
-    if i = si then begin                          (* Par item *)
-      let par = getpar lines si in
-      getdoc lines si (Par par :: acc);
-    end else
-      List.rev acc |> mergedoc
-  | None -> List.rev acc |> mergedoc
-
-type printer =
-  { pchar: char -> unit
-  ; plink: string -> unit
-  ; pcode: string -> unit
-  }
-
-let print pp s =
-  let l = String.length s in
-  let rec getlink j spc =
-    if j >= l || s.[j] = '>' then j+1, "" else
-    if isspace s.[j] then
-      getlink (j+1) true
-    else
-      let j', t = getlink (j+1) false in
-      if spc then
-        j', Printf.sprintf " %c%s" s.[j] t
-      else
-        j', Printf.sprintf  "%c%s" s.[j] t in
-  let getlink j =
-    let j', s = getlink j false in
-    j', String.trim s in
-  let rec getdlim j d =
-    if j >= l || s.[j] = d then j+1, "" else
-    let j', t = getdlim (j+1) d in
-    j', Printf.sprintf "%c%s" s.[j] t in
-  let rec f i =
-    if i >= l then () else
-    match s.[i] with
-    | '<' when i < l-1 && s.[i+1] = '@' ->
-      let i, t = getlink (i+2) in
-      pp.plink t;
-      f i
-    | '`' ->
-      let i, t = getdlim (i+1) '`' in
-      pp.pcode t;
-      f i
-    | c ->
-      pp.pchar c;
-      f (i+1)
-  in f 0
-
-let rec dochtml titles d =
-  let open Printf in
-  let pchar = function
-    | '<' -> printf "&lt;"
-    | '>' -> printf "&gt;"
-    | '&' -> printf "&amp;"
-    | c   -> printf "%c" c in
-  let escape = String.iter pchar in
-  let plink l =
-    try
-      let (_, id) = Hashtbl.find titles l in
-      printf "<a href=\"#%s\">%s</a>" id l
-    with Not_found ->
-      warn "warning: unresolved link '%s'\n" l;
-      printf "<a href=\"#\">%s</a>" l in
-  let pcode s =
-    printf "<code>";
-    escape s;
-    printf "</code>"; in
-  let pp = {pchar; plink; pcode} in
-  let rec plist =
-    List.iter begin fun d ->
-      match d with
-      | Par (p, nl) :: d when
-        not nl || d = [] ->
-        printf "<li>";
-        print pp p;
-        printf "\n";
-        dochtml titles d;
-      | d ->
-        printf "<li>";
-        dochtml titles d;
-    end in
-  let itemhtml = function
-    | Title (0, id, t) ->
-      printf "<h3><a id='%s'>" id;
-      escape t;
-      printf "</a></h3>\n";
-    | Title (_, id, t) ->
-      printf "<h4><a id='%s'>" id;
-      escape t;
-      printf "</a></h4>\n";
-    | Olist l ->
-      printf "<ol>\n";
-      plist l;
-      printf "</ol>\n";
-    | Ulist l ->
-      printf "<ul>\n";
-      plist l;
-      printf "</ul>\n";
-    | Verb (cls, v) ->
-      if cls <> ""
-      then printf "<pre class=\"%s\">" cls
-      else printf "<pre>\n";
-      escape v;
-      printf "\n</pre>\n";
-    | Par (p, _) ->
-      printf "<p>\n";
-      print pp p;
-      printf "\n</p>\n"; in
-  List.iter itemhtml d
-
-let _ =
-  let lines = getlines [] 1 in
-  let titles = gettitles lines in
-  getdoc (ref lines) 0 [] |> dochtml titles