src/Tools/Setup/src/Library.java
author paulson <lp15@cam.ac.uk>
Sun, 03 Aug 2025 20:34:24 +0100
changeset 82913 7c870287f04f
parent 74031 09821ca262d3
permissions -rw-r--r--
New lemmas about improper integrals and other things
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
74031
09821ca262d3 clarified directories;
wenzelm
parents: 74029
diff changeset
     1
/*  Title:      Tools/Setup/src/Library.java
73963
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
     3
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
     4
Basic library.
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
     5
*/
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
     6
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
     7
package isabelle.setup;
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
     8
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
     9
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    10
import java.util.Arrays;
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    11
import java.util.LinkedList;
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    12
import java.util.List;
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    13
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    14
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    15
public class Library
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    16
{
74029
0701ff55780d clarified build_props: empty module means no build;
wenzelm
parents: 74009
diff changeset
    17
    public static String quote(String s)
0701ff55780d clarified build_props: empty module means no build;
wenzelm
parents: 74009
diff changeset
    18
    {
0701ff55780d clarified build_props: empty module means no build;
wenzelm
parents: 74009
diff changeset
    19
        return "\"" + s + "\"";
0701ff55780d clarified build_props: empty module means no build;
wenzelm
parents: 74009
diff changeset
    20
    }
0701ff55780d clarified build_props: empty module means no build;
wenzelm
parents: 74009
diff changeset
    21
73963
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    22
    public static String cat_lines(Iterable<? extends CharSequence> lines)
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    23
    {
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    24
        return String.join("\n", lines);
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    25
    }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    26
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    27
    public static List<String> split_lines(String str)
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    28
    {
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    29
        if (str.isEmpty()) { return List.of(); }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    30
        else {
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    31
            List<String> result = new LinkedList<String>();
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    32
            result.addAll(Arrays.asList(str.split("\\n")));
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    33
            return List.copyOf(result);
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    34
        }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    35
    }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    36
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    37
    public static String prefix_lines(String prfx, String str)
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    38
    {
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    39
        if (str.isEmpty()) { return str; }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    40
        else {
74009
10abe3049bec proper cat_lines: avoid last "\n";
wenzelm
parents: 73984
diff changeset
    41
            List<String> lines = new LinkedList<String>();
10abe3049bec proper cat_lines: avoid last "\n";
wenzelm
parents: 73984
diff changeset
    42
            for (String line : split_lines(str)) { lines.add(prfx + line); }
10abe3049bec proper cat_lines: avoid last "\n";
wenzelm
parents: 73984
diff changeset
    43
            return cat_lines(lines);
73963
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    44
        }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    45
    }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    46
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    47
    public static String trim_line(String s)
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    48
    {
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    49
        if (s.endsWith("\r\n")) { return s.substring(0, s.length() - 2); }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    50
        else if (s.endsWith("\r") || s.endsWith("\n")) { return s.substring(0, s.length() - 1); }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    51
        else { return s; }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    52
    }
59b6f0462086 clarified modules;
wenzelm
parents:
diff changeset
    53
}