private void traverseList()

in doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java [795:876]


    private void traverseList() throws AptParseException {
        if (block == null) {
            return;
        }

        expectedBlock(LIST_ITEM);

        int listIndent = block.getIndent();

        sink.list();

        sink.listItem();

        block.traverse();

        nextBlock();

        loop:
        while (block != null) {
            int blockIndent = block.getIndent();

            switch (block.getType()) {
                case PARAGRAPH:
                    if (blockIndent < listIndent) {
                        break loop;
                    }
                    /*FALLTHROUGH*/
                case VERBATIM:
                case MACRO:
                case FIGURE:
                case TABLE:
                case HORIZONTAL_RULE:
                case PG_BREAK:
                    block.traverse();
                    nextBlock();
                    break;

                case LIST_ITEM:
                    if (blockIndent < listIndent) {
                        break loop;
                    }

                    if (blockIndent > listIndent) {
                        traverseList();
                    } else {
                        sink.listItem_();
                        sink.listItem();
                        block.traverse();
                        nextBlock();
                    }
                    break;

                case NUMBERED_LIST_ITEM:
                    if (blockIndent < listIndent) {
                        break loop;
                    }

                    traverseNumberedList();
                    break;

                case DEFINITION_LIST_ITEM:
                    if (blockIndent < listIndent) {
                        break loop;
                    }

                    traverseDefinitionList();
                    break;

                case LIST_BREAK:
                    if (blockIndent >= listIndent) {
                        nextBlock();
                    }
                    /*FALLTHROUGH*/
                default:
                    // A block which ends the list.
                    break loop;
            }
        }

        sink.listItem_();
        sink.list_();
    }