162 lines
5.1 KiB
Java
162 lines
5.1 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 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);
|
|
}
|
|
}
|