diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:28:42 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 19:28:42 -0800 |
commit | 88b607994a148f4af5bffee163e39ce8296750c6 (patch) | |
tree | fa249ff843e976cf034f2029437d3362a8396321 /tools/droiddoc/src/SampleCode.java | |
parent | 05806d7af62e07c6225b2e7103a1b115ecf6c9ad (diff) | |
download | build-88b607994a148f4af5bffee163e39ce8296750c6.zip build-88b607994a148f4af5bffee163e39ce8296750c6.tar.gz build-88b607994a148f4af5bffee163e39ce8296750c6.tar.bz2 |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'tools/droiddoc/src/SampleCode.java')
-rw-r--r-- | tools/droiddoc/src/SampleCode.java | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/tools/droiddoc/src/SampleCode.java b/tools/droiddoc/src/SampleCode.java new file mode 100644 index 0000000..e2283bd --- /dev/null +++ b/tools/droiddoc/src/SampleCode.java @@ -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); + } +} |