use of org.ballerinalang.docgen.model.PrimitiveTypeDoc in project ballerina by ballerina-lang.
the class Generator method generatePageForPrimitives.
/**
* Generate the page for primitive types.
* @param balPackage The ballerina.builtin package.
* @param packages List of available packages.
* @return A page model for the primitive types.
*/
public static Page generatePageForPrimitives(BLangPackage balPackage, List<Link> packages) {
ArrayList<Documentable> primitiveTypes = new ArrayList<>();
// Check for functions in the package
if (balPackage.getFunctions().size() > 0) {
for (BLangFunction function : balPackage.getFunctions()) {
if (function.getFlags().contains(Flag.PUBLIC) && function.getReceiver() != null) {
TypeNode langType = function.getReceiver().getTypeNode();
if (!(langType instanceof BLangUserDefinedType)) {
// Check for primitives in ballerina.builtin
Optional<PrimitiveTypeDoc> existingPrimitiveType = primitiveTypes.stream().filter((doc) -> doc instanceof PrimitiveTypeDoc && (((PrimitiveTypeDoc) doc)).name.equals(langType.toString())).map(doc -> (PrimitiveTypeDoc) doc).findFirst();
PrimitiveTypeDoc primitiveTypeDoc;
if (existingPrimitiveType.isPresent()) {
primitiveTypeDoc = existingPrimitiveType.get();
} else {
primitiveTypeDoc = new PrimitiveTypeDoc(langType.toString(), new ArrayList<>());
primitiveTypes.add(primitiveTypeDoc);
}
primitiveTypeDoc.children.add(createDocForNode(function));
}
}
}
}
// Create the links to select which page or package is active
List<Link> links = new ArrayList<>();
for (Link pkgLink : packages) {
if (BallerinaDocConstants.PRIMITIVE_TYPES_PAGE_NAME.equals(pkgLink.caption.value)) {
links.add(new Link(pkgLink.caption, pkgLink.href, true));
} else {
links.add(new Link(pkgLink.caption, pkgLink.href, false));
}
}
StaticCaption primitivesPageHeading = new StaticCaption(BallerinaDocConstants.PRIMITIVE_TYPES_PAGE_NAME);
return new Page(primitivesPageHeading, primitiveTypes, links);
}
Aggregations