diff --git a/comby-kernel.opam b/comby-kernel.opam index f03b176..d6cd0bc 100644 --- a/comby-kernel.opam +++ b/comby-kernel.opam @@ -26,6 +26,9 @@ depends: [ "ppx_deriving" "ppx_deriving_yojson" {>= "3.6.0"} "pcre" + # vendored dependencies + "bigstringaf" + # testing "bisect_ppx" {with-test & dev & >= "2.5.0"} ] synopsis: "A match engine for structural code search and replace that supports ~every language" diff --git a/lib/kernel/matchers/dune b/lib/kernel/matchers/dune index 068e826..12ed326 100644 --- a/lib/kernel/matchers/dune +++ b/lib/kernel/matchers/dune @@ -3,4 +3,4 @@ (public_name comby-kernel.matchers) (instrumentation (backend bisect_ppx)) (preprocess (pps ppx_here ppx_sexp_conv ppx_sexp_message ppx_deriving_yojson)) - (libraries comby-kernel.replacement comby-kernel.parsers comby-kernel.match comby.vangstrom core_kernel mparser mparser-pcre re yojson ppx_deriving_yojson)) + (libraries comby-kernel.replacement comby-kernel.parsers comby-kernel.match comby-kernel.vangstrom core_kernel mparser mparser-pcre re yojson ppx_deriving_yojson)) diff --git a/lib/kernel/parsers/dune b/lib/kernel/parsers/dune index 2db29a6..28b020c 100644 --- a/lib/kernel/parsers/dune +++ b/lib/kernel/parsers/dune @@ -3,4 +3,4 @@ (public_name comby-kernel.parsers) (instrumentation (backend bisect_ppx)) (preprocess (pps ppx_sexp_conv)) - (libraries core_kernel comby.vangstrom mparser)) + (libraries core_kernel comby-kernel.vangstrom mparser)) diff --git a/lib/vendored/dune b/lib/kernel/vendored/dune similarity index 100% rename from lib/vendored/dune rename to lib/kernel/vendored/dune diff --git a/lib/vendored/vangstrom/LICENSE b/lib/kernel/vendored/vangstrom/LICENSE similarity index 100% rename from lib/vendored/vangstrom/LICENSE rename to lib/kernel/vendored/vangstrom/LICENSE diff --git a/lib/vendored/vangstrom/dune b/lib/kernel/vendored/vangstrom/dune similarity index 100% rename from lib/vendored/vangstrom/dune rename to lib/kernel/vendored/vangstrom/dune diff --git a/lib/vendored/vangstrom/lib/buffering.ml b/lib/kernel/vendored/vangstrom/lib/buffering.ml similarity index 100% rename from lib/vendored/vangstrom/lib/buffering.ml rename to lib/kernel/vendored/vangstrom/lib/buffering.ml diff --git a/lib/vendored/vangstrom/lib/buffering.mli b/lib/kernel/vendored/vangstrom/lib/buffering.mli similarity index 100% rename from lib/vendored/vangstrom/lib/buffering.mli rename to lib/kernel/vendored/vangstrom/lib/buffering.mli diff --git a/lib/vendored/vangstrom/lib/dune b/lib/kernel/vendored/vangstrom/lib/dune similarity index 74% rename from lib/vendored/vangstrom/lib/dune rename to lib/kernel/vendored/vangstrom/lib/dune index d0dbb03..c09499a 100644 --- a/lib/vendored/vangstrom/lib/dune +++ b/lib/kernel/vendored/vangstrom/lib/dune @@ -1,6 +1,6 @@ (library (name vangstrom) - (public_name comby.vangstrom) + (public_name comby-kernel.vangstrom) (libraries bigstringaf) (flags :standard -safe-string) (preprocess future_syntax)) diff --git a/lib/vendored/vangstrom/lib/exported_state.ml b/lib/kernel/vendored/vangstrom/lib/exported_state.ml similarity index 100% rename from lib/vendored/vangstrom/lib/exported_state.ml rename to lib/kernel/vendored/vangstrom/lib/exported_state.ml diff --git a/lib/vendored/vangstrom/lib/input.ml b/lib/kernel/vendored/vangstrom/lib/input.ml similarity index 100% rename from lib/vendored/vangstrom/lib/input.ml rename to lib/kernel/vendored/vangstrom/lib/input.ml diff --git a/lib/vendored/vangstrom/lib/input.mli b/lib/kernel/vendored/vangstrom/lib/input.mli similarity index 100% rename from lib/vendored/vangstrom/lib/input.mli rename to lib/kernel/vendored/vangstrom/lib/input.mli diff --git a/lib/vendored/vangstrom/lib/more.ml b/lib/kernel/vendored/vangstrom/lib/more.ml similarity index 100% rename from lib/vendored/vangstrom/lib/more.ml rename to lib/kernel/vendored/vangstrom/lib/more.ml diff --git a/lib/vendored/vangstrom/lib/more.mli b/lib/kernel/vendored/vangstrom/lib/more.mli similarity index 100% rename from lib/vendored/vangstrom/lib/more.mli rename to lib/kernel/vendored/vangstrom/lib/more.mli diff --git a/lib/vendored/vangstrom/lib/parser.ml b/lib/kernel/vendored/vangstrom/lib/parser.ml similarity index 100% rename from lib/vendored/vangstrom/lib/parser.ml rename to lib/kernel/vendored/vangstrom/lib/parser.ml diff --git a/lib/vendored/vangstrom/lib/vangstrom.ml b/lib/kernel/vendored/vangstrom/lib/vangstrom.ml similarity index 100% rename from lib/vendored/vangstrom/lib/vangstrom.ml rename to lib/kernel/vendored/vangstrom/lib/vangstrom.ml diff --git a/lib/vendored/vangstrom/lib/vangstrom.mli b/lib/kernel/vendored/vangstrom/lib/vangstrom.mli similarity index 100% rename from lib/vendored/vangstrom/lib/vangstrom.mli rename to lib/kernel/vendored/vangstrom/lib/vangstrom.mli diff --git a/lib/vendored/vangstrom/unix/dune b/lib/kernel/vendored/vangstrom/unix/dune similarity index 58% rename from lib/vendored/vangstrom/unix/dune rename to lib/kernel/vendored/vangstrom/unix/dune index 80967ac..8b43e65 100644 --- a/lib/vendored/vangstrom/unix/dune +++ b/lib/kernel/vendored/vangstrom/unix/dune @@ -1,4 +1,4 @@ (library (name vangstrom_unix) - (public_name comby.vangstrom-unix) + (public_name comby-kernel.vangstrom-unix) (libraries vangstrom unix)) diff --git a/lib/vendored/vangstrom/unix/vangstrom_unix.ml b/lib/kernel/vendored/vangstrom/unix/vangstrom_unix.ml similarity index 100% rename from lib/vendored/vangstrom/unix/vangstrom_unix.ml rename to lib/kernel/vendored/vangstrom/unix/vangstrom_unix.ml diff --git a/lib/vendored/vangstrom/unix/vangstrom_unix.mli b/lib/kernel/vendored/vangstrom/unix/vangstrom_unix.mli similarity index 100% rename from lib/vendored/vangstrom/unix/vangstrom_unix.mli rename to lib/kernel/vendored/vangstrom/unix/vangstrom_unix.mli diff --git a/lib/vendored/vangstrom/lwt/dune b/lib/vendored/vangstrom/lwt/dune deleted file mode 100644 index 60d2e0e..0000000 --- a/lib/vendored/vangstrom/lwt/dune +++ /dev/null @@ -1,5 +0,0 @@ -(library - (name vangstrom_lwt_unix) - (public_name comby.vangstrom-lwt-unix) - (flags :standard -safe-string) - (libraries vangstrom lwt.unix)) diff --git a/lib/vendored/vangstrom/lwt/vangstrom_lwt_unix.ml b/lib/vendored/vangstrom/lwt/vangstrom_lwt_unix.ml deleted file mode 100644 index 15a70d2..0000000 --- a/lib/vendored/vangstrom/lwt/vangstrom_lwt_unix.ml +++ /dev/null @@ -1,81 +0,0 @@ -(*---------------------------------------------------------------------------- - Copyright (c) 2016 Inhabited Type LLC. - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of the author nor the names of his contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ----------------------------------------------------------------------------*) - -open Vangstrom.Buffered -open Lwt - -let default_pushback () = return_unit - -let rec buffered_state_loop pushback state in_chan bytes = - let size = Bytes.length bytes in - match state with - | Partial k -> - Lwt_io.read_into in_chan bytes 0 size - >|= begin function - | 0 -> k `Eof - | len -> - assert (len > 0); - k (`String (Bytes.(unsafe_to_string (sub bytes 0 len)))) - end - >>= fun state' -> pushback () - >>= fun () -> buffered_state_loop pushback state' in_chan bytes - | state -> return state - -let handle_parse_result state = - match state_to_unconsumed state with - | None -> assert false - | Some us -> us, state_to_result state - -let parse ?(pushback=default_pushback) p in_chan = - let size = Lwt_io.buffer_size in_chan in - let bytes = Bytes.create size in - buffered_state_loop pushback (parse ~initial_buffer_size:size p) in_chan bytes - >|= handle_parse_result - -let with_buffered_parse_state ?(pushback=default_pushback) state in_chan = - let size = Lwt_io.buffer_size in_chan in - let bytes = Bytes.create size in - begin match state with - | Partial _ -> buffered_state_loop pushback state in_chan bytes - | _ -> return state - end - >|= handle_parse_result - -let async_many e k = - Vangstrom.(skip_many (e <* commit >>| k) "async_many") - -let parse_many p write in_chan = - let wait = ref (default_pushback ()) in - let k x = wait := write x in - let pushback () = !wait in - parse ~pushback (async_many p k) in_chan diff --git a/lib/vendored/vangstrom/lwt/vangstrom_lwt_unix.mli b/lib/vendored/vangstrom/lwt/vangstrom_lwt_unix.mli deleted file mode 100644 index e9333d3..0000000 --- a/lib/vendored/vangstrom/lwt/vangstrom_lwt_unix.mli +++ /dev/null @@ -1,72 +0,0 @@ -(*--------------------------------------------------------------------------- - Copyright (c) 2016 Inhabited Type LLC. - - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - - 3. Neither the name of the author nor the names of his contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS - OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR - ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. - ----------------------------------------------------------------------------*) - -open Vangstrom - - -val parse - : ?pushback:(unit -> unit Lwt.t) - -> 'a t - -> Lwt_io.input_channel - -> (Buffered.unconsumed * ('a, string) result) Lwt.t - -val parse_many - : 'a t - -> ('a -> unit Lwt.t) - -> Lwt_io.input_channel - -> (Buffered.unconsumed * (unit, string) result) Lwt.t - -(** Useful for resuming a {!parse} that returns unconsumed data. Construct a - [Buffered.state] by using [Buffered.parse] and provide it into this - function. This is essentially what {!parse_many} does, so consider using - that if you don't require fine-grained control over how many times you want - the parser to succeed. - - Usage example: - - {[ - parse parser in_channel >>= fun (unconsumed, result) -> - match result with - | Ok a -> - let { buf; off; len } = unconsumed in - let state = Buffered.parse parser in - let state = Buffered.feed state (`Bigstring (Bigstringaf.sub ~off ~len buf)) in - with_buffered_parse_state state in_channel - | Error err -> failwith err - ]} *) -val with_buffered_parse_state - : ?pushback:(unit -> unit Lwt.t) - -> 'a Buffered.state - -> Lwt_io.input_channel - -> (Buffered.unconsumed * ('a, string) result) Lwt.t -