Example usage for org.antlr.v4.runtime.misc MultiMap map

List of usage examples for org.antlr.v4.runtime.misc MultiMap map

Introduction

In this page you can find the example usage for org.antlr.v4.runtime.misc MultiMap map.

Prototype

public void map(K key, V value) 

Source Link

Usage

From source file:com.github.drrb.rust.netbeans.structure.RustStructureScanner.java

License:Open Source License

@Override
public Map<String, List<OffsetRange>> folds(ParserResult info) {
    MultiMap<String, OffsetRange> folds = new MultiMap<>();

    NetbeansRustParserResult parseResult = (NetbeansRustParserResult) info;
    RustSourceIndex index = parseResult.getIndex();

    List<RustFunction> functions = index.getFunctions();
    for (RustFunction function : functions) {
        //TODO: this raises a NPE when typing a function. Insert millions of null checks?
        folds.map(CODEBLOCKS_FOLD_TYPE, function.getBody().getOffsetRange());
    }//from   ww  w .ja va 2  s . c o m

    List<RustStruct> structs = index.getStructs();
    for (RustStruct struct : structs) {
        folds.map(CODEBLOCKS_FOLD_TYPE, struct.getBody().getOffsetRange());
    }

    List<RustEnum> enums = index.getEnums();
    for (RustEnum rustEnum : enums) {
        folds.map(CODEBLOCKS_FOLD_TYPE, rustEnum.getBody().getOffsetRange());
    }

    List<RustImpl> impls = index.getImpls();
    for (RustImpl impl : impls) {
        folds.map(CODEBLOCKS_FOLD_TYPE, impl.getBody().getOffsetRange());
        List<RustImplMethod> implMethods = impl.getBody().getMethods();
        for (RustImplMethod implMethod : implMethods) {
            folds.map(CODEBLOCKS_FOLD_TYPE, implMethod.getBody().getOffsetRange());
        }
    }

    List<RustTrait> traits = index.getTraits();
    for (RustTrait trait : traits) {
        folds.map(CODEBLOCKS_FOLD_TYPE, trait.getBody().getOffsetRange());
    }

    List<RustTraitImpl> traitImpls = index.getTraitImpls();
    for (RustTraitImpl traitImpl : traitImpls) {
        folds.map(CODEBLOCKS_FOLD_TYPE, traitImpl.getBody().getOffsetRange());
        List<RustImplMethod> traitImplMethods = traitImpl.getBody().getMethods();
        for (RustImplMethod traitImplMethod : traitImplMethods) {
            folds.map(CODEBLOCKS_FOLD_TYPE, traitImplMethod.getBody().getOffsetRange());
        }
    }

    List<RustDocComment> rustdocs = index.getDocComments();
    for (RustDocComment docComment : rustdocs) {
        if (docComment.getText().contains("\n")) { //Don't fold single line comments
            folds.map(DOC_COMMENTS_FOLD_TYPE, docComment.getOffsetRange());
        }
    }

    return folds;
}