com.redhat.ceylon.ceylondoc.IndexApiDoc Maven / Gradle / Ivy
/*
* Copyright Red Hat Inc. and/or its affiliates and other contributors
* as indicated by the authors tag. All rights reserved.
*
* This copyrighted material is made available to anyone wishing to use,
* modify, copy, or redistribute it subject to the terms and conditions
* of the GNU General Public License version 2.
*
* This particular file is subject to the "Classpath" exception as provided in the
* LICENSE file that accompanied this code.
*
* This program is distributed in the hope that it will be useful, but WITHOUT A
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
* You should have received a copy of the GNU General Public License,
* along with this distribution; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
* MA 02110-1301, USA.
*/
package com.redhat.ceylon.ceylondoc;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import com.redhat.ceylon.ceylondoc.Util.ReferenceableComparatorByName;
import com.redhat.ceylon.model.typechecker.model.Declaration;
import com.redhat.ceylon.model.typechecker.model.Module;
import com.redhat.ceylon.model.typechecker.model.Package;
import com.redhat.ceylon.model.typechecker.model.Value;
public class IndexApiDoc extends CeylonDoc {
private final Module module;
public IndexApiDoc(CeylonDocTool tool, Writer writer, Module module) throws IOException {
super(module, tool, writer);
this.module = module;
}
public void generate() throws IOException {
List declarations = collectDeclarations();
writeHeader("Index");
writeNavBar();
open("div class='container-fluid'");
write("Index
");
writeIndexTable(declarations);
close("div");
writeFooter();
}
private void writeIndexTable(List declarations) throws IOException {
open("table id='api-index' class='table table-hover'");
open("tbody");
for (Declaration declaration : declarations) {
writeIndexRow(declaration);
}
close("tbody");
close("table");
}
private void writeIndexRow(Declaration declaration) throws IOException {
open("tr");
open("td id='" + declaration.getQualifiedNameString() + "'");
writeIcon(declaration);
open("code");
linkRenderer().to(declaration).printAbbreviated(false).printTypeParameters(false).write();
close("code");
close("td");
open("td");
write(Util.getDocFirstLine(declaration, linkRenderer()));
writeTagged(declaration);
close("td");
close("tr");
}
private List collectDeclarations() {
List declarations = new ArrayList();
for (Package pkg : tool.getPackages(module)) {
if (tool.shouldInclude(pkg)) {
List members = pkg.getMembers();
for (Declaration member : members) {
if (tool.shouldInclude(member)) {
if (member instanceof Value && ((Value) member).getTypeDeclaration().isAnonymous()) {
continue;
}
declarations.add(member);
}
}
}
}
Collections.sort(declarations, ReferenceableComparatorByName.INSTANCE);
return declarations;
}
@Override
protected void writeNavBarExpandAllCollapseAll() throws IOException {
// noop
}
@Override
protected void writeNavBarIndexMenu() throws IOException {
// noop
}
@Override
protected Object getFromObject() {
return module;
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy