private void writeFaqs()

in doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java [441:551]


    private void writeFaqs(Sink sink) throws ParseException {
        FmlContentParser xdocParser = new FmlContentParser();

        sink.head();
        sink.title();
        sink.text(faqs.getTitle());
        sink.title_();
        sink.head_();

        sink.body();
        sink.section1();
        sink.anchor("top");
        sink.anchor_();
        sink.sectionTitle1();
        sink.text(faqs.getTitle());
        sink.sectionTitle1_();

        // ----------------------------------------------------------------------
        // Write summary
        // ----------------------------------------------------------------------

        for (Part part : faqs.getParts()) {
            if (StringUtils.isNotEmpty(part.getTitle())) {
                sink.paragraph();
                sink.inline(SinkEventAttributeSet.Semantics.BOLD);
                xdocParser.parse(part.getTitle(), sink);
                sink.inline_();
                sink.paragraph_();
            }

            sink.numberedList(Sink.NUMBERING_DECIMAL);

            for (Faq faq : part.getFaqs()) {
                sink.numberedListItem();
                sink.link("#" + faq.getId());

                if (StringUtils.isNotEmpty(faq.getQuestion())) {
                    xdocParser.parse(faq.getQuestion(), sink);
                } else {
                    throw new ParseException("Missing <question> for FAQ '" + faq.getId() + "'");
                }

                sink.link_();
                sink.numberedListItem_();
            }

            sink.numberedList_();
        }

        sink.section1_();

        // ----------------------------------------------------------------------
        // Write content
        // ----------------------------------------------------------------------

        for (Part part : faqs.getParts()) {
            if (StringUtils.isNotEmpty(part.getTitle())) {
                sink.section1();
                sink.anchor(part.getId());
                sink.anchor_();
                sink.sectionTitle1();
                xdocParser.parse(part.getTitle(), sink);
                sink.sectionTitle1_();
            }

            sink.definitionList();

            for (Iterator<Faq> faqIterator = part.getFaqs().iterator(); faqIterator.hasNext(); ) {
                Faq faq = faqIterator.next();

                sink.anchor(faq.getId());
                sink.anchor_();

                sink.definedTerm();

                if (StringUtils.isNotEmpty(faq.getQuestion())) {
                    xdocParser.parse(faq.getQuestion(), sink);
                } else {
                    throw new ParseException("Missing <question> for FAQ '" + faq.getId() + "'");
                }

                sink.definedTerm_();

                sink.definition();

                if (StringUtils.isNotEmpty(faq.getAnswer())) {
                    xdocParser.parse(faq.getAnswer(), sink);
                } else {
                    throw new ParseException("Missing <answer> for FAQ '" + faq.getId() + "'");
                }

                if (faqs.isToplink()) {
                    writeTopLink(sink);
                }

                if (faqIterator.hasNext()) {
                    sink.horizontalRule();
                }

                sink.definition_();
            }

            sink.definitionList_();

            if (StringUtils.isNotEmpty(part.getTitle())) {
                sink.section1_();
            }
        }

        sink.body_();
    }