package comby

  1. Overview
  2. Docs
A tool for structural code search and replace that supports ~every language

Install

Dune Dependency

Authors

Maintainers

Sources

comby-kernel.1.7.0.tar.gz
md5=ee6556d8bd9b25ed0445ebe23862e48a
sha512=e6386c8ce5ef14bbcab2b0ead5b1edc39375438f56330d5f02e81e467afe6623a7e299f97f26008d77bbc62850c6dc63a7cbe5b81671b5183ff3adeee5946bb3

doc/src/comby.patdiff_kernel/should_keep_whitespace.ml.html

Source file should_keep_whitespace.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
open! Core_kernel
open! Import

let looks_like_python_filename = String.is_suffix ~suffix:".py"

let looks_like_python_first_line first_line =
  String.is_prefix first_line ~prefix:"#!"
  && String.is_substring first_line ~substring:"python"
;;

let looks_like_python input ~get_name ~get_first_line =
  looks_like_python_filename (get_name input)
  || looks_like_python_first_line (get_first_line input)
;;

let for_diff_internal ~prev ~next ~get_name ~get_first_line =
  looks_like_python prev ~get_name ~get_first_line
  || looks_like_python next ~get_name ~get_first_line
;;

let for_diff =
  for_diff_internal
    ~get_name:Diff_input.name
    ~get_first_line:(fun (input : Diff_input.t) ->
      match String.lsplit2 input.text ~on:'\n' with
      | Some (first_line, _) -> first_line
      | None -> input.text)
;;

let for_diff_array =
  for_diff_internal ~get_name:fst ~get_first_line:(fun (_, lines) ->
    if Array.is_empty lines then "" else lines.(0))
;;
OCaml

Innovation. Community. Security.