Commit
+16 -38 +/-3 browse
1 | diff --git a/lib/cmd.ml b/lib/cmd.ml |
2 | index 6bd614b..ad06508 100644 |
3 | --- a/lib/cmd.ml |
4 | +++ b/lib/cmd.ml |
5 | @@ -72,9 +72,9 @@ note cat -encoding json |
6 | ~f:(fun note -> |
7 | print_endline |
8 | ( match encoding with |
9 | - | Json -> Ezjsonm.to_string (Note.to_json note) |
10 | - | Yaml -> Yaml.to_string_exn (Note.to_json note) |
11 | - | Raw -> In_channel.read_all (Note.get_path note) )) |
12 | + | Json -> Note.Encoding.to_string ~style:`Json note |
13 | + | Yaml -> Note.Encoding.to_string ~style: `Yaml note |
14 | + | Raw -> Note.Encoding.to_string ~style: `Raw note )) |
15 | notes] |
16 | |
17 | let config_show = |
18 | diff --git a/lib/note.ml b/lib/note.ml |
19 | index 7abefc9..edb619f 100644 |
20 | --- a/lib/note.ml |
21 | +++ b/lib/note.ml |
22 | @@ -159,6 +159,14 @@ let of_string ~data slug = |
23 | let markdown = Omd.of_string data in |
24 | { frontmatter; markdown; slug } |
25 | |
26 | + module Encoding = struct |
27 | + let to_string ~style t = |
28 | + match style with |
29 | + | `Raw -> In_channel.read_all (get_path t) |
30 | + | `Json -> Ezjsonm.to_string (to_json t) |
31 | + | `Yaml -> Yaml.to_string_exn (to_json t) |
32 | + end |
33 | + |
34 | module Filter = struct |
35 | type strategy = Keys | Fulltext |
36 | |
37 | @@ -269,8 +277,7 @@ module Display = struct |
38 | List.iter |
39 | ~f:(fun cell -> print_endline (fst (List.nth_exn cell 0))) |
40 | cells |
41 | - | `Fixed -> |
42 | - List.iter ~f:print_endline (apply (fixed_spacing cells) cells) |
43 | + | `Fixed -> List.iter ~f:print_endline (apply (fixed_spacing cells) cells) |
44 | | `Wide -> |
45 | List.iter ~f:print_endline |
46 | (apply (fix_right (fixed_spacing cells)) cells) |
47 | diff --git a/lib/note.mli b/lib/note.mli |
48 | index 0d5e4d0..ddf0aa2 100644 |
49 | --- a/lib/note.mli |
50 | +++ b/lib/note.mli |
51 | @@ -6,47 +6,18 @@ val build : ?tags:string list -> ?content:string -> title:string -> Slug.t -> t |
52 | val get_title : t -> string |
53 | (** access the title of a note *) |
54 | |
55 | - val get_tags : t -> string list |
56 | - (** access tags in the frontmatter of a note *) |
57 | - |
58 | val get_path : t -> string |
59 | (** access the absolute path of a note *) |
60 | |
61 | - val tokenize : t -> string list |
62 | - (** split each word from the note into a list of string tokens *) |
63 | - |
64 | - val get_data : t -> Ezjsonm.t |
65 | - (** Extract arbitrarily nested data in the note's markdown document. |
66 | - Currently this will only support code blocks of json or ymal but it may |
67 | - be expanded. For example a markdown document such as: |
68 | - |
69 | - # Title |
70 | - foo bar |
71 | - |
72 | - ## Code Examples |
73 | - |
74 | - ```json |
75 | - {"fuu": [{"bar": ["baz", "qux"]}]} |
76 | - ``` |
77 | - ```yaml |
78 | - hello: world |
79 | - ``` |
80 | - |
81 | - will return an Ezjsonm.value list in the order they are declared, e.g. |
82 | - |
83 | - [ |
84 | - {"fuu": [{"bar": ["baz", "qux"]}]}, |
85 | - {"hello": "world"}, |
86 | - ] |
87 | - *) |
88 | - |
89 | val to_string : t -> string |
90 | (** convert a note into a string *) |
91 | |
92 | val of_string : data:string -> Slug.t -> t |
93 | (** decode a note from a string *) |
94 | |
95 | - val to_json : t -> [> Ezjsonm.t ] |
96 | + module Encoding : sig |
97 | + val to_string : style:[< `Raw | `Json | `Yaml ] -> t -> string |
98 | + end |
99 | |
100 | module Filter : sig |
101 | type strategy = Keys | Fulltext |
102 | @@ -61,5 +32,5 @@ module Display : sig |
103 | |
104 | type row = cell list |
105 | |
106 | - val to_stdout : style:[<`Fixed | `Simple | `Wide] -> t list -> unit |
107 | + val to_stdout : style:[< `Fixed | `Simple | `Wide ] -> t list -> unit |
108 | end |