src/Tools/Setup/isabelle/setup/Library.java
author wenzelm
Sun, 11 Jul 2021 16:57:30 +0200
changeset 73963 59b6f0462086
child 73984 c606a8ff5ccc
permissions -rw-r--r--
clarified modules; clarified messages; clarified return code;

/*  Title:      Tools/Setup/isabelle/setup/Library.java
    Author:     Makarius

Basic library.
*/

package isabelle.setup;


import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;


public class Library
{
    public static String cat_lines(Iterable<? extends CharSequence> lines)
    {
        return String.join("\n", lines);
    }

    public static List<String> split_lines(String str)
    {
        if (str.isEmpty()) { return List.of(); }
        else {
            List<String> result = new LinkedList<String>();
            result.addAll(Arrays.asList(str.split("\\n")));
            return List.copyOf(result);
        }
    }

    public static String prefix_lines(String prfx, String str)
    {
        if (str.isEmpty()) { return str; }
        else {
            StringBuilder result = new StringBuilder();
            for (String s : split_lines(str)) {
                result.append(prfx);
                result.append(s);
            }
            return result.toString();
        }
    }

    public static String trim_line(String s)
    {
        if (s.endsWith("\r\n")) { return s.substring(0, s.length() - 2); }
        else if (s.endsWith("\r") || s.endsWith("\n")) { return s.substring(0, s.length() - 1); }
        else { return s; }
    }
}