Initial Contribution
This commit is contained in:
161
tools/droiddoc/src/SampleCode.java
Normal file
161
tools/droiddoc/src/SampleCode.java
Normal file
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
* 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 org.clearsilver.HDF;
|
||||
import org.clearsilver.CS;
|
||||
import java.util.*;
|
||||
import java.io.*;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
|
||||
public class SampleCode {
|
||||
String mSource;
|
||||
String mDest;
|
||||
String mTitle;
|
||||
|
||||
public SampleCode(String source, String dest, String title) {
|
||||
mSource = source;
|
||||
mTitle = title;
|
||||
int len = dest.length();
|
||||
if (len > 1 && dest.charAt(len-1) != '/') {
|
||||
mDest = dest + '/';
|
||||
} else {
|
||||
mDest = dest;
|
||||
}
|
||||
}
|
||||
|
||||
public void write() {
|
||||
File f = new File(mSource);
|
||||
if (!f.isDirectory()) {
|
||||
System.out.println("-samplecode not a directory: " + mSource);
|
||||
return;
|
||||
}
|
||||
writeDirectory(f, mDest);
|
||||
}
|
||||
|
||||
public static String convertExtension(String s, String ext) {
|
||||
return s.substring(0, s.lastIndexOf('.')) + ext;
|
||||
}
|
||||
|
||||
public static String[] IMAGES = { ".png", ".jpg", ".gif" };
|
||||
public static String[] TEMPLATED = { ".java", ".xml" };
|
||||
|
||||
public static boolean inList(String s, String[] list) {
|
||||
for (String t: list) {
|
||||
if (s.endsWith(t)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public void writeDirectory(File dir, String relative) {
|
||||
TreeSet<String> dirs = new TreeSet<String>();
|
||||
TreeSet<String> files = new TreeSet<String>();
|
||||
|
||||
String subdir = relative; //.substring(mDest.length());
|
||||
|
||||
for (File f: dir.listFiles()) {
|
||||
String name = f.getName();
|
||||
if (name.startsWith(".") || name.startsWith("_")) {
|
||||
continue;
|
||||
}
|
||||
if (f.isFile()) {
|
||||
String out = relative + name;
|
||||
|
||||
if (inList(out, IMAGES)) {
|
||||
// copied directly
|
||||
ClearPage.copyFile(f, out);
|
||||
writeImagePage(f, convertExtension(out, DroidDoc.htmlExtension), subdir);
|
||||
files.add(name);
|
||||
}
|
||||
if (inList(out, TEMPLATED)) {
|
||||
// copied and goes through the template
|
||||
ClearPage.copyFile(f, out);
|
||||
writePage(f, convertExtension(out, DroidDoc.htmlExtension), subdir);
|
||||
files.add(name);
|
||||
}
|
||||
// else ignored
|
||||
}
|
||||
else if (f.isDirectory()) {
|
||||
writeDirectory(f, relative + name + "/");
|
||||
dirs.add(name);
|
||||
}
|
||||
}
|
||||
|
||||
// write the index page
|
||||
int i;
|
||||
HDF hdf = DroidDoc.makeHDF();
|
||||
|
||||
hdf.setValue("page.title", dir.getName() + " - " + mTitle);
|
||||
hdf.setValue("projectTitle", mTitle);
|
||||
hdf.setValue("subdir", subdir);
|
||||
i=0;
|
||||
for (String d: dirs) {
|
||||
hdf.setValue("subdirs." + i + ".name", d);
|
||||
i++;
|
||||
}
|
||||
i=0;
|
||||
for (String f: files) {
|
||||
hdf.setValue("files." + i + ".name", f);
|
||||
hdf.setValue("files." + i + ".href", convertExtension(f, ".html"));
|
||||
i++;
|
||||
}
|
||||
String filename = dir.getPath() + "/_index.html";
|
||||
String summary = SampleTagInfo.readFile(new SourcePositionInfo(filename, -1,-1), filename,
|
||||
"sample code", true, false, true);
|
||||
if (summary == null) {
|
||||
summary = "";
|
||||
}
|
||||
hdf.setValue("summary", summary);
|
||||
|
||||
ClearPage.write(hdf, "sampleindex.cs", relative + "/index" + DroidDoc.htmlExtension);
|
||||
}
|
||||
|
||||
public void writePage(File f, String out, String subdir) {
|
||||
String name = f.getName();
|
||||
|
||||
String filename = f.getPath();
|
||||
String data = SampleTagInfo.readFile(new SourcePositionInfo(filename, -1,-1), filename,
|
||||
"sample code", true, true, true);
|
||||
data = DroidDoc.escape(data);
|
||||
|
||||
HDF hdf = DroidDoc.makeHDF();
|
||||
|
||||
hdf.setValue("page.title", name);
|
||||
hdf.setValue("subdir", subdir);
|
||||
hdf.setValue("realFile", name);
|
||||
hdf.setValue("fileContents", data);
|
||||
|
||||
ClearPage.write(hdf, "sample.cs", out);
|
||||
}
|
||||
|
||||
public void writeImagePage(File f, String out, String subdir) {
|
||||
String name = f.getName();
|
||||
|
||||
String data = "<img src=\"" + name + "\" title=\"" + name + "\" />";
|
||||
|
||||
HDF hdf = DroidDoc.makeHDF();
|
||||
|
||||
hdf.setValue("page.title", name);
|
||||
hdf.setValue("subdir", subdir);
|
||||
hdf.setValue("realFile", name);
|
||||
hdf.setValue("fileContents", data);
|
||||
|
||||
ClearPage.write(hdf, "sample.cs", out);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user