Java Разбор css на вложенные s css с использованием Vaadin и sac - PullRequest
0 голосов
/ 01 мая 2020

Мне нужно преобразовать css String во вложенную s css String. Например, мой ввод css это

.asset {height: 100%;} .asset img {position :lative;}

Я хочу вывод как

.asset {высота: 100%; & img {position :lative;}}

Это код, который я пытаюсь получить,

String css = ".asset {\n" +
            "  height: 100%;\n" +
            "}\n" +
            "\n" +
            ".asset img {\n" +
            "  position: relative;\n" +
            "}";

    SCSSDocumentHandlerImpl scssDocumentHandlerImpl = new SCSSDocumentHandlerImpl();
    ScssStylesheet stylesheet = scssDocumentHandlerImpl.getStyleSheet();
    stylesheet.traverse(new ScssContext());

    Parser parser = new Parser();
    parser.setErrorHandler(new ErrorHandler() {
        @Override
        public void warning(CSSParseException exception) throws CSSException {

        }

        @Override
        public void error(CSSParseException exception) throws CSSException {

        }

        @Override
        public void fatalError(CSSParseException exception) throws CSSException {

        }
    });

    parser.setDocumentHandler(scssDocumentHandlerImpl);


    Reader isr = new InputStreamReader(IOUtils.toInputStream(css));
    InputSource source = new InputSource(isr);

    parser.parseStyleSheet(source);

    stylesheet.compile();

    StringBuilder string = new StringBuilder("");
    String delimeter = "\n\n";
    List<Node> children = stylesheet.getChildren();
    if (children.size() > 0) {
        string.append(ScssStylesheet.PRINT_STRATEGY.build(children.get(0)));
    }
    if (children.size() > 1) {
        for (int i = 1; i < children.size(); i++) {
            String childString = ScssStylesheet.PRINT_STRATEGY.build(children.get(i));
            if (childString != null) {
                string.append(delimeter).append(childString);
            }
        }
    }

    String content = string.toString();

Но он печатает входную строку. Любая помощь в получении вложенного вывода s css

...