package mrmime
Mr. MIME
Install
Dune Dependency
Authors
Maintainers
Sources
mrmime-v0.3.0.tbz
sha256=d6dee0f8f5b2c49aaf283e8991686a2f902845bcbe84c50973636cbf8e818046
sha512=11308d7c974be265bba86ca7b54d2955dcc8fe1fd6a6fb593ecd502817692406ff5a57b0b4fa0b57ea00f53478d2981b22823149f7d6d2043a85d18af20087ad
doc/src/mrmime.prettym/prettym.ml.html
Source file prettym.ml
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
include Fancy let io_buffer_size = 65536 (* XXX(dinosaure): if [margin] is set to [io_buffer_size], we should never add an [FWS] token. *) let create = Pretty.create let is_empty = Pretty.is_empty let flush = Pretty.flush let kflush = Pretty.kflush let to_string ?(margin= 78) ?(new_line= "\r\n") gen value = let buf = Buffer.create 0x100 in let emitter = let write a x = let open Enclosure.IOVec in let open Enclosure.Buffer in match x with | { buffer= String x; off; len; } -> Buffer.add_substring buf x off len ; a + len | { buffer= Bytes x; off; len; } -> Buffer.add_subbytes buf x off len ; a + len | { buffer= Bigstring x; off; len; } -> let x = Bigstringaf.substring x ~off ~len in Buffer.add_string buf x ; a + len in List.fold_left write 0 in let encoder = Pretty.create ~emitter ~margin ~new_line 0x100 in let kend encoder = if Pretty.is_empty encoder then () else Fmt.failwith "Leave a non-empty encoder" in let encoder = eval encoder Fancy.[ !!gen; ] value in let () = Pretty.kflush kend encoder in Buffer.contents buf let to_stream ?(margin= 78) ?(new_line= "\r\n") gen value = let queue = Queue.create () in let line = Buffer.create 4096 in let emitter iovecs = let write a x = let open Enclosure.IOVec in let open Enclosure.Buffer in match x with | { buffer= String x; off; len; } -> Buffer.add_substring line x off len ; a + len | { buffer= Bytes x; off; len; } -> Buffer.add_subbytes line x off len ; a + len | { buffer= Bigstring x; off; len; } -> let x = Bigstringaf.substring x ~off ~len in Buffer.add_string line x ; a + len in let len = List.fold_left write 0 iovecs in let res = Buffer.contents line in if String.length res > 0 then Queue.add res queue ; Buffer.clear line ; len in let consumer () = match Queue.pop queue with | x -> Some x | exception Queue.Empty -> None in let encoder = Pretty.create ~emitter ~margin ~new_line 4096 in let kend encoder = if Pretty.is_empty encoder then () else Fmt.failwith "Leave with a non-empty encoder" in let () = keval (Pretty.kflush kend) encoder Fancy.[ !!gen ] value in consumer module IOVec = Enclosure.IOVec module Buffer = Enclosure.Buffer
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>