Blame builtin/builtini_text.ml

Packit bd2e5d
let cCAMLtoTKtextMark  x =  TkToken x;;
Packit bd2e5d
let cTKtoCAMLtextMark x = x;;
Packit bd2e5d
Packit bd2e5d
let cCAMLtoTKtextTag  x =  TkToken x;;
Packit bd2e5d
let cTKtoCAMLtextTag x = x;;
Packit bd2e5d
Packit bd2e5d
##ifdef CAMLTK
Packit bd2e5d
Packit bd2e5d
(* TextModifiers are never returned by Tk *)
Packit bd2e5d
let ppTextModifier = function
Packit bd2e5d
   CharOffset n ->
Packit bd2e5d
      if n > 0 then "+" ^ (string_of_int n) ^ "chars"
Packit bd2e5d
      else if n = 0 then ""
Packit bd2e5d
      else (string_of_int n) ^ "chars"
Packit bd2e5d
 | LineOffset n ->
Packit bd2e5d
      if n > 0 then "+" ^ (string_of_int n) ^ "lines"
Packit bd2e5d
      else if n = 0 then ""
Packit bd2e5d
      else (string_of_int n) ^ "lines"
Packit bd2e5d
 | LineStart -> " linestart"
Packit bd2e5d
 | LineEnd -> " lineend"
Packit bd2e5d
 | WordStart -> " wordstart"
Packit bd2e5d
 | WordEnd -> " wordend"
Packit bd2e5d
;;
Packit bd2e5d
Packit bd2e5d
let ppTextIndex = function
Packit bd2e5d
 | TextIndexNone -> ""
Packit bd2e5d
 | TextIndex (base, ml) ->
Packit bd2e5d
     match cCAMLtoTKindex index_text_table base with
Packit bd2e5d
     | TkToken ppbase -> List.fold_left (^) ppbase (List.map ppTextModifier ml)
Packit bd2e5d
     | _ -> assert false
Packit bd2e5d
;;
Packit bd2e5d
Packit bd2e5d
let cCAMLtoTKtextIndex i =
Packit bd2e5d
  TkToken (ppTextIndex i)
Packit bd2e5d
;;
Packit bd2e5d
Packit bd2e5d
##else
Packit bd2e5d
Packit bd2e5d
(* TextModifiers are never returned by Tk *)
Packit bd2e5d
let cCAMLtoTKtextIndex (i : textIndex) =
Packit bd2e5d
  let ppTextModifier = function
Packit bd2e5d
    | `Char n ->
Packit bd2e5d
        if n > 0 then "+" ^ (string_of_int n) ^ "chars"
Packit bd2e5d
        else if n = 0 then ""
Packit bd2e5d
        else (string_of_int n) ^ "chars"
Packit bd2e5d
    | `Line n ->
Packit bd2e5d
        if n > 0 then "+" ^ (string_of_int n) ^ "lines"
Packit bd2e5d
        else if n = 0 then ""
Packit bd2e5d
        else (string_of_int n) ^ "lines"
Packit bd2e5d
    | `Linestart -> " linestart"
Packit bd2e5d
    | `Lineend -> " lineend"
Packit bd2e5d
    | `Wordstart -> " wordstart"
Packit bd2e5d
    | `Wordend -> " wordend"
Packit bd2e5d
  in
Packit bd2e5d
  let ppTextIndex (base, ml : textIndex) =
Packit bd2e5d
    match cCAMLtoTKtext_index base with
Packit bd2e5d
      TkToken ppbase ->
Packit bd2e5d
        String.concat ~sep:"" (ppbase :: List.map ~f:ppTextModifier ml)
Packit bd2e5d
    | _ -> assert false
Packit bd2e5d
  in
Packit bd2e5d
  TkToken (ppTextIndex i)
Packit bd2e5d
;;
Packit bd2e5d
Packit bd2e5d
##endif