Search in sources :

Example 1 with SubSection

use of us.parr.bookish.model.SubSection in project bookish by parrt.

the class Translator method visitSection.

@Override
public OutputModelObject visitSection(BookishParser.SectionContext ctx) {
    String title = ctx.sec.getText();
    title = title.substring(title.indexOf(' ') + 1).trim();
    Pair<String, String> results = splitSectionTitle(title);
    title = results.a;
    String anchor = results.b;
    EntityDef def = null;
    if (anchor != null) {
        def = document.getEntity(anchor);
        if (def == null) {
            System.err.printf("line %d: Unknown label '%s'\n", ctx.start.getLine(), anchor);
            return null;
        }
    }
    List<ContainerWithTitle> subsections = new ArrayList<>();
    for (ParseTree el : ctx.subsection()) {
        subsections.add((SubSection) visit(el));
    }
    Join sec = (Join) visitSection_content(ctx.section_content());
    return new Section(def, title, anchor, sec.elements, subsections);
}
Also used : ContainerWithTitle(us.parr.bookish.model.ContainerWithTitle) ArrayList(java.util.ArrayList) Join(us.parr.bookish.model.Join) SubSubSection(us.parr.bookish.model.SubSubSection) SubSection(us.parr.bookish.model.SubSection) Section(us.parr.bookish.model.Section) ParseTree(org.antlr.v4.runtime.tree.ParseTree) EntityDef(us.parr.bookish.model.entity.EntityDef)

Example 2 with SubSection

use of us.parr.bookish.model.SubSection in project bookish by parrt.

the class Translator method visitSubsection.

@Override
public OutputModelObject visitSubsection(BookishParser.SubsectionContext ctx) {
    String title = ctx.sec.getText();
    title = title.substring(title.indexOf(' ') + 1).trim();
    Pair<String, String> results = splitSectionTitle(title);
    title = results.a;
    String anchor = results.b;
    EntityDef def = null;
    if (anchor != null) {
        def = document.getEntity(anchor);
        if (def == null) {
            System.err.printf("line %d: Unknown label '%s'\n", ctx.start.getLine(), anchor);
            return null;
        }
    }
    List<ContainerWithTitle> subsubsections = new ArrayList<>();
    for (ParseTree el : ctx.subsubsection()) {
        subsubsections.add((SubSection) visit(el));
    }
    Join sec = (Join) visitSection_content(ctx.section_content());
    return new SubSection(def, title, anchor, sec != null ? sec.elements : null, subsubsections);
}
Also used : ContainerWithTitle(us.parr.bookish.model.ContainerWithTitle) SubSubSection(us.parr.bookish.model.SubSubSection) SubSection(us.parr.bookish.model.SubSection) ArrayList(java.util.ArrayList) Join(us.parr.bookish.model.Join) ParseTree(org.antlr.v4.runtime.tree.ParseTree) EntityDef(us.parr.bookish.model.entity.EntityDef)

Aggregations

ArrayList (java.util.ArrayList)2 ParseTree (org.antlr.v4.runtime.tree.ParseTree)2 ContainerWithTitle (us.parr.bookish.model.ContainerWithTitle)2 Join (us.parr.bookish.model.Join)2 SubSection (us.parr.bookish.model.SubSection)2 SubSubSection (us.parr.bookish.model.SubSubSection)2 EntityDef (us.parr.bookish.model.entity.EntityDef)2 Section (us.parr.bookish.model.Section)1