package mrmime
Mr. MIME
Install
Dune Dependency
Authors
Maintainers
Sources
mrmime-v0.2.0.tbz
sha256=f436ab329b78cb0d9a01d2e2b06f25f22c8bed8b0ea960824468089fcd9ff138
sha512=dc31a202ad2f3269e070722498d156cbc3b8ce621bbb2cc06dc554a23dffef2f1a2b05ef9ec870a91433142d8f7972f65cbf21a0f6ac415c4b32b77b97cfa185
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)"
>