/* ******************************************************************* * 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 v 2.0 * which accompanies this distribution and is available at * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt * * 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(""); } 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("