179 lines
4.5 KiB
Java
179 lines
4.5 KiB
Java
/*
|
|
* Copyright (C) 2008 The Android Open Source Project
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import java.io.IOException;
|
|
import java.io.FileWriter;
|
|
import java.util.regex.Pattern;
|
|
import java.util.regex.Matcher;
|
|
|
|
public class Proofread
|
|
{
|
|
static FileWriter out = null;
|
|
static final Pattern WHITESPACE = Pattern.compile("\\r?\\n");
|
|
static final String INDENT = " ";
|
|
static final String NEWLINE = "\n" + INDENT;
|
|
|
|
public static void initProofread(String filename)
|
|
{
|
|
try {
|
|
out = new FileWriter(filename);
|
|
out.write("javadoc proofread file: " + filename + "\n");
|
|
}
|
|
catch (IOException e) {
|
|
if (out != null) {
|
|
try {
|
|
out.close();
|
|
}
|
|
catch (IOException ex) {
|
|
}
|
|
out = null;
|
|
}
|
|
System.err.println("error opening file: " + filename);
|
|
}
|
|
}
|
|
|
|
public static void finishProofread(String filename)
|
|
{
|
|
if (out == null) {
|
|
return;
|
|
}
|
|
|
|
try {
|
|
out.close();
|
|
}
|
|
catch (IOException e) {
|
|
}
|
|
}
|
|
|
|
public static void write(String s)
|
|
{
|
|
if (out == null) {
|
|
return ;
|
|
}
|
|
try {
|
|
out.write(s);
|
|
}
|
|
catch (IOException e) {
|
|
}
|
|
}
|
|
|
|
public static void writeIndented(String s)
|
|
{
|
|
s = s.trim();
|
|
Matcher m = WHITESPACE.matcher(s);
|
|
s = m.replaceAll(NEWLINE);
|
|
write(INDENT);
|
|
write(s);
|
|
write("\n");
|
|
}
|
|
|
|
public static void writeFileHeader(String filename)
|
|
{
|
|
write("\n\n=== ");
|
|
write(filename);
|
|
write(" ===\n");
|
|
}
|
|
|
|
public static void writeTagList(TagInfo[] tags)
|
|
{
|
|
if (out == null) {
|
|
return;
|
|
}
|
|
|
|
for (TagInfo t: tags) {
|
|
String k = t.kind();
|
|
if ("Text".equals(t.name())) {
|
|
writeIndented(t.text());
|
|
}
|
|
else if ("@more".equals(k)) {
|
|
writeIndented("");
|
|
}
|
|
else if ("@see".equals(k)) {
|
|
SeeTagInfo see = (SeeTagInfo)t;
|
|
String label = see.label();
|
|
if (label == null) {
|
|
label = "";
|
|
}
|
|
writeIndented("{" + see.name() + " ... " + label + "}");
|
|
}
|
|
else if ("@code".equals(k)) {
|
|
writeIndented(t.text());
|
|
}
|
|
else if ("@samplecode".equals(k)) {
|
|
writeIndented(t.text());
|
|
}
|
|
else {
|
|
writeIndented("{" + (t.name() != null ? t.name() : "") + "/" +
|
|
t.text() + "}");
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void writePackages(String filename, TagInfo[] tags)
|
|
{
|
|
if (out == null) {
|
|
return;
|
|
}
|
|
|
|
writeFileHeader(filename);
|
|
writeTagList(tags);
|
|
}
|
|
|
|
public static void writePackage(String filename, TagInfo[] tags)
|
|
{
|
|
if (out == null) {
|
|
return;
|
|
}
|
|
|
|
writeFileHeader(filename);
|
|
writeTagList(tags);
|
|
}
|
|
|
|
public static void writeClass(String filename, ClassInfo cl)
|
|
{
|
|
if (out == null) {
|
|
return;
|
|
}
|
|
|
|
writeFileHeader(filename);
|
|
writeTagList(cl.inlineTags());
|
|
|
|
// enum constants
|
|
for (FieldInfo f: cl.enumConstants()) {
|
|
write("ENUM: " + f.name() + "\n");
|
|
writeTagList(f.inlineTags());
|
|
}
|
|
|
|
// fields
|
|
for (FieldInfo f: cl.selfFields()) {
|
|
write("FIELD: " + f.name() + "\n");
|
|
writeTagList(f.inlineTags());
|
|
}
|
|
|
|
// constructors
|
|
for (MethodInfo m: cl.constructors()) {
|
|
write("CONSTRUCTOR: " + m.name() + "\n");
|
|
writeTagList(m.inlineTags().tags());
|
|
}
|
|
|
|
// methods
|
|
for (MethodInfo m: cl.selfMethods()) {
|
|
write("METHOD: " + m.name() + "\n");
|
|
writeTagList(m.inlineTags().tags());
|
|
}
|
|
}
|
|
}
|