Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source
Page
Library
Module
Module type
Parameter
Class
Class type
Source
edn_writer.ml1 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 73 74 75 76 77 78 79 80 81 82 83 84 85let rec write buf (edn : Edn_common.value) = match edn with | `Assoc xs -> write_assoc buf xs | `Vector xs -> write_vector buf xs | `List xs -> write_list buf xs | `Set xs -> write_set buf xs | `Int v -> write_int buf v | `Float v -> write_float buf v | `String v -> write_string buf v | `Char s -> write_char buf s | `Keyword v -> write_keyword buf v | `Symbol v -> write_symbol buf v | `Decimal v -> write_decimal buf v | `BigInt v -> write_big_int buf v | `Bool v -> write_bool buf v | `Null -> write_nil buf | `Tag v -> write_tag buf v and write_whitespaced buf xs = let n = List.length xs - 1 in List.iteri (fun i x -> write buf x; if i < n then Buffer.add_char buf ' ') xs; and write_assoc buf xs = Buffer.add_char buf '{'; let n = List.length xs - 1 in List.iteri (fun i (k, v) -> write buf k; Buffer.add_char buf ' '; write buf v; if i < n then Buffer.add_char buf ' ';) xs; Buffer.add_char buf '}'; and write_list buf xs = Buffer.add_char buf '('; write_whitespaced buf xs; Buffer.add_char buf ')' and write_vector buf xs = Buffer.add_char buf '['; write_whitespaced buf xs; Buffer.add_char buf ']' and write_set buf xs = Buffer.add_char buf '#'; Buffer.add_char buf '{'; write_whitespaced buf xs; Buffer.add_char buf '}' and write_int buf v = Buffer.add_string buf (string_of_int v) and write_float buf v = Buffer.add_string buf (string_of_float v) and write_nil buf = Buffer.add_string buf "nil" and write_big_int buf v = Buffer.add_string buf (v ^ "N") and write_decimal buf v = Buffer.add_string buf (v ^ "M") and write_symbol buf = function | (Some prefix), v -> Buffer.add_string buf prefix; Buffer.add_char buf '/'; Buffer.add_string buf v | None, v -> Buffer.add_string buf v and write_keyword buf v = Buffer.add_char buf ':'; write_symbol buf v and write_bool buf = function | true -> Buffer.add_string buf "true" | false -> Buffer.add_string buf "false" and write_tag buf (prefix, v, form) = Buffer.add_char buf '#'; write_symbol buf (prefix, v); Buffer.add_char buf ' '; write buf form and write_string buf v = Buffer.add_char buf '"'; Buffer.add_string buf (String.escaped v); Buffer.add_char buf '"'; and write_char buf v = Buffer.add_string buf v let to_string edn = let buf = Buffer.create 256 in write buf edn; Buffer.contents buf