aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/mammoth/styles/parsing/StyleMapParser.java
blob: ab453cddb1550b3e7341e4f3387f9703ad095fb7 (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
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) {
        return parse(asList(input.split("\\r?\\n")));
    }

    public static StyleMap parse(List<String> lines) {
        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);
    }
}