summaryrefslogtreecommitdiffstats
path: root/tools/droiddoc/src/SampleCode.java
diff options
context:
space:
mode:
Diffstat (limited to 'tools/droiddoc/src/SampleCode.java')
-rw-r--r--tools/droiddoc/src/SampleCode.java161
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);
+ }
+}