aboutsummaryrefslogtreecommitdiffstats
path: root/build/src/main/java./aspectj/internal/tools/ant/taskdefs/CopyAndInlineStylesheet.java
diff options
context:
space:
mode:
Diffstat (limited to 'build/src/main/java./aspectj/internal/tools/ant/taskdefs/CopyAndInlineStylesheet.java')
-rw-r--r--build/src/main/java./aspectj/internal/tools/ant/taskdefs/CopyAndInlineStylesheet.java120
1 files changed, 120 insertions, 0 deletions
diff --git a/build/src/main/java./aspectj/internal/tools/ant/taskdefs/CopyAndInlineStylesheet.java b/build/src/main/java./aspectj/internal/tools/ant/taskdefs/CopyAndInlineStylesheet.java
new file mode 100644
index 000000000..664616c07
--- /dev/null
+++ b/build/src/main/java./aspectj/internal/tools/ant/taskdefs/CopyAndInlineStylesheet.java
@@ -0,0 +1,120 @@
+/* *******************************************************************
+ * Copyright (c) 1999-2001 Xerox Corporation,
+ * 2002 Palo Alto Research Center, Incorporated (PARC).
+ * All rights reserved.
+ * This program and the accompanying materials are made available
+ * under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Xerox/PARC initial implementation
+ * ******************************************************************/
+
+package org.aspectj.internal.tools.ant.taskdefs;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintStream;
+
+import org.apache.tools.ant.BuildException;
+import org.apache.tools.ant.Task;
+import org.apache.tools.ant.taskdefs.Mkdir;
+
+public class CopyAndInlineStylesheet extends Task {
+
+ private File file;
+ public void setFile(String file) {
+ this.file = project.resolveFile(file);
+ }
+
+ private File todir;
+ public void setTodir(String todir) {
+ this.todir = project.resolveFile(todir);
+ }
+
+
+ public void execute() throws BuildException {
+ try {
+ if (todir == null) {
+ throw new BuildException("must set 'todir' attribute");
+ }
+ if (file == null) {
+ throw new BuildException("must set 'file' attribute");
+ }
+ log("copying html from" + file + " to " + todir.getAbsolutePath());
+
+ File toFile = new File(todir, file.getName());
+
+ Mkdir mkdir = (Mkdir) project.createTask("mkdir");
+ mkdir.setDir(todir);
+ mkdir.execute();
+
+ BufferedReader in = new BufferedReader(new FileReader(file));
+ PrintStream out = new PrintStream(new FileOutputStream(toFile));
+
+ outer:
+ while (true) {
+ String line = in.readLine();
+ if (line == null) break;
+ if (isStyleSheet(line)) {
+ doStyleSheet(line, out, file);
+ while (true) {
+ String line2 = in.readLine();
+ if (line2 == null) break outer;
+ out.println(line2);
+ }
+ } else {
+ out.println(line);
+ }
+ }
+
+ in.close();
+ out.close();
+ } catch (IOException e) {
+ throw new BuildException(e.getMessage());
+ }
+ }
+
+ private static void doStyleSheet(String line, PrintStream out, File file) throws IOException {
+ int srcIndex = line.indexOf("href");
+ int startQuotIndex = line.indexOf('"', srcIndex);
+ int endQuotIndex = line.indexOf('"', startQuotIndex + 1);
+
+ String stylesheetLocation = line.substring(startQuotIndex + 1, endQuotIndex);
+
+ File styleSheetFile = new File(file.getParent(), stylesheetLocation);
+
+ out.println("<style type=\"text/css\">");
+ out.println("<!--");
+
+ BufferedReader inStyle = new BufferedReader(new FileReader(styleSheetFile));
+
+ while (true) {
+ String line2 = inStyle.readLine();
+ if (line2 == null) break;
+ out.println(line2);
+ }
+ inStyle.close();
+
+ out.println("-->");
+ out.println("</style>");
+ }
+
+
+ private static boolean isStyleSheet(String line) throws IOException {
+ line = line.toLowerCase();
+ int len = line.length();
+ int i = 0;
+
+ while (true) {
+ if (i == len) return false;
+ if (! Character.isWhitespace(line.charAt(i))) break;
+ }
+
+ return line.startsWith("<link", i);
+ }
+}