Search in sources :

Example 11 with Link

use of org.ballerinalang.docgen.model.Link in project ballerina by ballerina-lang.

the class HtmlDocTest method testPrimitiveConstructsWithFunctions.

@Test(description = "Testing primitive constructs.")
public void testPrimitiveConstructsWithFunctions() {
    BLangPackage bLangPackage = createPackage("package ballerina.builtin;" + "public native function <blob b> data (string encoding) returns" + "(string);" + "public native function <blob b> sample () returns (string);");
    List<Link> packages = new ArrayList<>();
    packages.add(new Link(new PackageName((bLangPackage.symbol).pkgID.name.value, ""), "", false));
    packages.add(new Link(new StaticCaption(BallerinaDocConstants.PRIMITIVE_TYPES_PAGE_NAME), BallerinaDocConstants.PRIMITIVE_TYPES_PAGE_HREF, false));
    Page primitivesPage = Generator.generatePageForPrimitives(bLangPackage, packages);
    Assert.assertEquals(primitivesPage.constructs.size(), 1);
    Assert.assertEquals(primitivesPage.constructs.get(0).children.size(), 2);
}
Also used : BLangPackage(org.wso2.ballerinalang.compiler.tree.BLangPackage) PackageName(org.ballerinalang.docgen.model.PackageName) ArrayList(java.util.ArrayList) Page(org.ballerinalang.docgen.model.Page) Link(org.ballerinalang.docgen.model.Link) StaticCaption(org.ballerinalang.docgen.model.StaticCaption) Test(org.testng.annotations.Test)

Example 12 with Link

use of org.ballerinalang.docgen.model.Link in project ballerina by ballerina-lang.

the class Generator method generatePage.

/**
 * Generate the page when the bal package is passed.
 * @param balPackage The current package that is being viewed.
 * @param packages List of available packages.
 * @return A page model for the current package.
 */
public static Page generatePage(BLangPackage balPackage, List<Link> packages) {
    ArrayList<Documentable> documentables = new ArrayList<>();
    String currentPackageName = (balPackage.symbol).pkgID.name.value;
    // Check for structs in the package
    if (balPackage.getStructs().size() > 0) {
        for (BLangStruct struct : balPackage.getStructs()) {
            if (struct.getFlags().contains(Flag.PUBLIC)) {
                documentables.add(createDocForNode(struct));
            }
        }
    }
    // Check for functions in the package
    if (balPackage.getFunctions().size() > 0) {
        for (BLangFunction function : balPackage.getFunctions()) {
            if (function.getFlags().contains(Flag.PUBLIC)) {
                if (function.getReceiver() != null) {
                    if (documentables.size() > 0) {
                        for (Documentable parentDocumentable : documentables) {
                            TypeNode langType = function.getReceiver().getTypeNode();
                            String typeName = (langType instanceof BLangUserDefinedType ? ((BLangUserDefinedType) langType).typeName.value : langType.toString());
                            if (typeName.equals(parentDocumentable.name)) {
                                parentDocumentable.children.add(createDocForNode(function));
                            }
                        }
                    }
                } else {
                    // If there's no receiver type i.e. no struct binding to the function
                    documentables.add(createDocForNode(function));
                }
            }
        }
    }
    // Check for connectors in the package
    for (BLangConnector connector : balPackage.getConnectors()) {
        if (connector.getFlags().contains(Flag.PUBLIC)) {
            documentables.add(createDocForNode(connector));
        }
    }
    // Check for connectors in the package
    for (EnumNode enumNode : balPackage.getEnums()) {
        if (enumNode.getFlags().contains(Flag.PUBLIC)) {
            documentables.add(createDocForNode(enumNode));
        }
    }
    // Check for annotations
    for (BLangAnnotation annotation : balPackage.getAnnotations()) {
        if (annotation.getFlags().contains(Flag.PUBLIC)) {
            documentables.add(createDocForNode(annotation));
        }
    }
    // Check for global variables
    for (BLangVariable var : balPackage.getGlobalVariables()) {
        if (var.getFlags().contains(Flag.PUBLIC)) {
            documentables.add(createDocForNode(var));
        }
    }
    // Create the links to select which page or package is active
    List<Link> links = new ArrayList<>();
    PackageName packageNameHeading = null;
    for (Link pkgLink : packages) {
        if (pkgLink.caption.value.equals(currentPackageName)) {
            packageNameHeading = (PackageName) pkgLink.caption;
            links.add(new Link(pkgLink.caption, pkgLink.href, true));
        } else {
            links.add(new Link(pkgLink.caption, pkgLink.href, false));
        }
    }
    return new Page(packageNameHeading, documentables, links);
}
Also used : BLangFunction(org.wso2.ballerinalang.compiler.tree.BLangFunction) PackageName(org.ballerinalang.docgen.model.PackageName) ArrayList(java.util.ArrayList) EnumNode(org.ballerinalang.model.tree.EnumNode) BLangStruct(org.wso2.ballerinalang.compiler.tree.BLangStruct) Page(org.ballerinalang.docgen.model.Page) BLangVariable(org.wso2.ballerinalang.compiler.tree.BLangVariable) Documentable(org.ballerinalang.docgen.model.Documentable) BLangAnnotation(org.wso2.ballerinalang.compiler.tree.BLangAnnotation) TypeNode(org.ballerinalang.model.tree.types.TypeNode) BLangUserDefinedType(org.wso2.ballerinalang.compiler.tree.types.BLangUserDefinedType) BLangConnector(org.wso2.ballerinalang.compiler.tree.BLangConnector) Link(org.ballerinalang.docgen.model.Link)

Example 13 with Link

use of org.ballerinalang.docgen.model.Link in project ballerina by ballerina-lang.

the class BallerinaPackageNameDocGenTest method singlePackageLevelPrefixTest.

@Test
public void singlePackageLevelPrefixTest() {
    List<String> packageNames = new ArrayList<>();
    packageNames.add("a");
    packageNames.add("b");
    packageNames.add("c");
    packageNames.add("d");
    List<Link> packageNameList = PackageName.convertList(packageNames);
    for (Link pkgLink : packageNameList) {
        Assert.assertEquals(((PackageName) pkgLink.caption).prefix, "", "Prefix found.");
    }
    Assert.assertEquals(((PackageName) packageNameList.get(0).caption).suffix, "a", "Invalid suffix name.");
    Assert.assertEquals(((PackageName) packageNameList.get(1).caption).suffix, "b", "Invalid suffix name.");
    Assert.assertEquals(((PackageName) packageNameList.get(2).caption).suffix, "c", "Invalid suffix name.");
    Assert.assertEquals(((PackageName) packageNameList.get(3).caption).suffix, "d", "Invalid suffix name.");
}
Also used : ArrayList(java.util.ArrayList) Link(org.ballerinalang.docgen.model.Link) Test(org.testng.annotations.Test)

Example 14 with Link

use of org.ballerinalang.docgen.model.Link in project ballerina by ballerina-lang.

the class BallerinaPackageNameDocGenTest method multiplePackagePrefixReorderedTest.

@Test
public void multiplePackagePrefixReorderedTest() {
    List<String> packageNames = new ArrayList<>();
    packageNames.add("org.eclipse.core.expressions");
    packageNames.add("org.eclipse.core.expressions.tests");
    packageNames.add("org.eclipse.core.expressions.samples");
    List<Link> packageNameList = PackageName.convertList(packageNames);
    for (Link pkgLink : packageNameList) {
        Assert.assertEquals(((PackageName) pkgLink.caption).prefix, "org.eclipse.core.", "Prefix was not org.eclipse.core for: " + pkgLink);
    }
    Assert.assertEquals(((PackageName) packageNameList.get(0).caption).suffix, "expressions", "Invalid suffix name.");
    Assert.assertEquals(((PackageName) packageNameList.get(1).caption).suffix, "expressions.tests", "Invalid suffix name.");
    Assert.assertEquals(((PackageName) packageNameList.get(2).caption).suffix, "expressions.samples", "Invalid suffix name.");
}
Also used : ArrayList(java.util.ArrayList) Link(org.ballerinalang.docgen.model.Link) Test(org.testng.annotations.Test)

Example 15 with Link

use of org.ballerinalang.docgen.model.Link in project ballerina by ballerina-lang.

the class BallerinaPackageNameDocGenTest method multipleCommonPackagePrefixTest.

@Test
public void multipleCommonPackagePrefixTest() {
    List<String> packageNames = new ArrayList<>();
    packageNames.add("org.eclipse.core.expressions.tests");
    packageNames.add("org.eclipse.core.expressions.samples");
    packageNames.add("org.eclipse.core.expressions.client");
    List<Link> packageNameList = PackageName.convertList(packageNames);
    for (Link pkgLink : packageNameList) {
        Assert.assertEquals(((PackageName) pkgLink.caption).prefix, "org.eclipse.core.expressions.", "Prefix was not org.eclipse.core.expressions for: " + pkgLink);
    }
    Assert.assertEquals(((PackageName) packageNameList.get(0).caption).suffix, "tests", "Invalid suffix name.");
    Assert.assertEquals(((PackageName) packageNameList.get(1).caption).suffix, "samples", "Invalid suffix name.");
    Assert.assertEquals(((PackageName) packageNameList.get(2).caption).suffix, "client", "Invalid suffix name.");
}
Also used : ArrayList(java.util.ArrayList) Link(org.ballerinalang.docgen.model.Link) Test(org.testng.annotations.Test)

Aggregations

ArrayList (java.util.ArrayList)16 Link (org.ballerinalang.docgen.model.Link)16 Test (org.testng.annotations.Test)12 PackageName (org.ballerinalang.docgen.model.PackageName)6 Page (org.ballerinalang.docgen.model.Page)5 BLangPackage (org.wso2.ballerinalang.compiler.tree.BLangPackage)4 StaticCaption (org.ballerinalang.docgen.model.StaticCaption)3 List (java.util.List)2 Documentable (org.ballerinalang.docgen.model.Documentable)2 EnumNode (org.ballerinalang.model.tree.EnumNode)2 TypeNode (org.ballerinalang.model.tree.types.TypeNode)2 BLangAnnotation (org.wso2.ballerinalang.compiler.tree.BLangAnnotation)2 BLangConnector (org.wso2.ballerinalang.compiler.tree.BLangConnector)2 BLangFunction (org.wso2.ballerinalang.compiler.tree.BLangFunction)2 BLangStruct (org.wso2.ballerinalang.compiler.tree.BLangStruct)2 BLangVariable (org.wso2.ballerinalang.compiler.tree.BLangVariable)2 BLangUserDefinedType (org.wso2.ballerinalang.compiler.tree.types.BLangUserDefinedType)2 File (java.io.File)1 IOException (java.io.IOException)1 PrintStream (java.io.PrintStream)1