src.org.python.indexer.demos.HtmlOutline Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jython-standalone Show documentation
Show all versions of jython-standalone Show documentation
Jython is an implementation of the high-level, dynamic, object-oriented
language Python written in 100% Pure Java, and seamlessly integrated with
the Java platform. It thus allows you to run Python on any Java platform.
/**
* Copyright 2009, Google Inc. All rights reserved.
* Licensed to PSF under a Contributor Agreement.
*/
package org.python.indexer.demos;
import org.python.indexer.Indexer;
import org.python.indexer.Outliner;
import java.util.List;
/**
* Generates a static-html outline for a file.
*/
class HtmlOutline {
private Indexer indexer;
private StringBuilder buffer;
public HtmlOutline(Indexer idx) {
this.indexer = idx;
}
/**
* Generates HTML outline for {@code path}.
* @return the html as an {@code UL} element
*/
public String generate(String path) throws Exception {
buffer = new StringBuilder(1024);
List entries = indexer.generateOutline(path);
addOutline(entries);
String html = buffer.toString();
buffer = null;
return html;
}
private void addOutline(List entries) {
add("\n");
for (Outliner.Entry e : entries) {
addEntry(e);
}
add("
\n");
}
private void addEntry(Outliner.Entry e) {
add("");
String style = null;
switch (e.getKind()) {
case FUNCTION:
case METHOD:
case CONSTRUCTOR:
style = "function";
break;
case CLASS:
style = "type-name";
break;
case PARAMETER:
style = "parameter";
break;
case VARIABLE:
case SCOPE:
style = "identifier";
break;
}
add("");
if (style != null) {
add("");
}
add(e.getName());
if (style != null) {
add("");
}
add("");
if (e.isBranch()) {
addOutline(e.getChildren());
}
add(" ");
}
private void add(String text) {
buffer.append(text);
}
}