aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/styles/parsing/StyleMapParser.java
blob: 595eab163f8f8099a48799e677ad9f5e75e510b0 (plain)
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
34
35
36
package org.zwobble.mammoth.styles.parsing;

import org.parboiled.support.Var;
import org.zwobble.mammoth.styles.StyleMap;
import org.zwobble.mammoth.styles.StyleMapBuilder;

import java.util.List;

import static java.util.Arrays.asList;

public class StyleMapParser {
    public static StyleMap parse(String input) {
        List<String> lines = asList(input.split("\\r?\\n"));

        Var<StyleMapBuilder> styleMap = new Var<>(StyleMap.builder());
        for (String line : lines) {
            handleLine(styleMap, line);
        }
        return styleMap.get().build();
    }

    private static void handleLine(Var<StyleMapBuilder> styleMap, String line) {
        if (line.startsWith("#")) {
            return;
        }
        line = line.trim();
        if (line.isEmpty()) {
            return;
        }
        Parsing.parse(StyleMappingParser.class, parser -> parser.StyleMapping(styleMap), line);
    }

    private static boolean isSignificantLine(String line) {
        return !line.startsWith("#") && !line.trim().isEmpty();
    }
}