public class TwigStructureScanner implements StructureScanner {
@Override
public List<? extends StructureItem> scan( ParserResult info ) {
TwigParserResult result = (TwigParserResult)info;
List<TwigParserResult.Block> blocks = new ArrayList<TwigParserResult.Block>();
List<TwigStructureItem> items = new ArrayList<TwigStructureItem>();
for ( TwigParserResult.Block item : result.getBlocks() ) {
if ( CharSequenceUtilities.equals( item.getDescription(), "block" ) || CharSequenceUtilities.equals( item.getDescription(), "*inline-block" ) ) {
blocks.add( item );
}
}
boolean isTopLevel = false;
for ( TwigParserResult.Block item : blocks ) {
isTopLevel = true;
for ( TwigParserResult.Block check : blocks ) {
if ( item.getOffset() > check.getOffset() &&
item.getOffset() + item.getLength() < check.getOffset() + check.getLength()
) {
isTopLevel = false;
break;
}
}
if ( isTopLevel ) {
items.add( new TwigStructureItem( result.getSnapshot(), item, blocks ) );
}
}
return items;