You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by xa...@apache.org on 2008/01/03 17:16:51 UTC

svn commit: r608542 - in /ant/ivy/site/xooki: antlib.xml xooki.js

Author: xavier
Date: Thu Jan  3 08:16:50 2008
New Revision: 608542

URL: http://svn.apache.org/viewvc?rev=608542&view=rev
Log:
add batch mode printer friendly support

Modified:
    ant/ivy/site/xooki/antlib.xml
    ant/ivy/site/xooki/xooki.js

Modified: ant/ivy/site/xooki/antlib.xml
URL: http://svn.apache.org/viewvc/ant/ivy/site/xooki/antlib.xml?rev=608542&r1=608541&r2=608542&view=diff
==============================================================================
--- ant/ivy/site/xooki/antlib.xml (original)
+++ ant/ivy/site/xooki/antlib.xml Thu Jan  3 08:16:50 2008
@@ -4,6 +4,7 @@
         <element name="fileset" type="fileset"/>
         <attribute name="destDir"/>
         <attribute name="checkUpToDate"/>
+        <attribute name="printerFriendly"/>
         <![CDATA[
              importClass(java.io.File);
             
@@ -44,8 +45,51 @@
     	        exec.createArg().setValue(srcDir+"/xooki/xooki.js");
     	        exec.createArg().setValue(filename);
     	        exec.createArg().setValue(attributes.get("destdir")+"/"+filepath);
+    	        if (attributes.get("printerfriendly") == "true") {
+    	        	exec.createArg().setValue("print");
+    	        }
     	        exec.perform();
     		  }
+        ]]>
+    </scriptdef>
+    <scriptdef name="print" language="javascript">
+        <attribute name="src"/>
+        <attribute name="dest"/>
+        <attribute name="checkUpToDate"/>
+        <![CDATA[
+            importClass(java.io.File);
+    	
+	        var file = new File(attributes.get("src"));
+	        var destFile = new File(attributes.get("dest"));
+	        
+			var basedir = file.getParent();
+			var filename = file.getName();
+			
+			var perform = true;
+            
+            if (attributes.get("checkuptodate") == "true") {
+                p = "xooki."+file.getAbsolutePath().replace(' ','_')+".uptodate";
+                upToDate = project.createTask("uptodate");
+                upToDate.setProperty(p);
+                upToDate.setSrcfile(file);
+                upToDate.setTargetFile(destFile);
+                upToDate.perform();
+                if (project.getProperty(p) != null) {
+                    self.log(file+" is up to date", 3);
+                    perform = false;
+                }
+            }
+        
+            if (perform) {
+		        exec = project.createTask("exec");
+		        exec.setDir(new File(basedir));
+		        exec.setExecutable("jrunscript");
+		        exec.createArg().setValue(project.getProperty("basedir")+"/xooki/xooki.js");
+		        exec.createArg().setValue(filename);
+		        exec.createArg().setValue(destFile);
+		        exec.createArg().setValue("print");
+		        exec.perform();
+	        }
         ]]>
     </scriptdef>
 </antlib>

Modified: ant/ivy/site/xooki/xooki.js
URL: http://svn.apache.org/viewvc/ant/ivy/site/xooki/xooki.js?rev=608542&r1=608541&r2=608542&view=diff
==============================================================================
--- ant/ivy/site/xooki/xooki.js (original)
+++ ant/ivy/site/xooki/xooki.js Thu Jan  3 08:16:50 2008
@@ -565,11 +565,8 @@
     	xooki.url.asyncLoadURL(pu(nextPage.id), xooki.render.printerFriendlyAsyncLoader, [root, nextPage]);
    	}
 };
-xooki.render.printerFriendly = function() {
-    for (var k in xooki.component) {
-        xooki.c[k] = xooki.component[k]();
-    }
-    
+
+xooki.render.printerFriendlyAsync = function() {
 	xooki.c.body = xooki.c.messages
 	+ "<div id='xooki-printerFriendly'></div>" // div where printer friendly content will be put
     + xooki.c.debugPanel;
@@ -580,6 +577,43 @@
     xooki.url.asyncLoadURL(pu(xooki.page.id), xooki.render.printerFriendlyAsyncLoader, [xooki.page, xooki.page]);
 };
 
+xooki.render.printerFriendlySync = function() {
+	xooki.c.body = xooki.c.messages
+    + (function (page, level) {
+        var source = xooki.url.loadURL(pu(page.id));
+        if (source == null) {
+            return "";
+        }
+        var beginIndex = source.indexOf('<textarea id="xooki-source">');
+        beginIndex += '<textarea id="xooki-source">'.length;
+        var endIndex = source.lastIndexOf('</textarea>');
+        source = source.substring(beginIndex, endIndex);
+        
+        var printerFriendly = "<div class='toc-title toc-title-"+level+"'>"+page.title+"</div>";
+        printerFriendly += xooki.input.format.main(source);
+        for (var i=0; i <page.children.length; i++) {
+            printerFriendly += "<hr/>";
+            printerFriendly += arguments.callee(page.children[i], level+1);
+        }
+        return printerFriendly;
+    })(xooki.page, 1);
+    
+    xooki.html.setBody(xooki.string.processTemplate(xooki.template.body, xooki.c));
+};
+
+xooki.render.printerFriendly = function() {
+    for (var k in xooki.component) {
+        xooki.c[k] = xooki.component[k]();
+    }
+    
+	if (batchMode) {
+		xooki.render.printerFriendlySync();
+	} else {
+		xooki.render.printerFriendlyAsync();
+	}
+};
+
+
 xooki.render.page = function() {
     // realize all components available
     for (var k in xooki.component) {
@@ -937,6 +971,7 @@
 	    };
     
 	    // action
+	    if (! xooki.c.action) xooki.c.action = 'render';
 	    // TODO: better handle action extraction
 		xooki.c.action = window.location.search == '?action=print'?'print':xooki.c.action;
 	}
@@ -1195,9 +1230,14 @@
 		file = arguments[i];
 		i++;
 	}
-	var generateToDir = "gen";
+	var generateTo = "gen";
+	if (arguments.length > i) {
+		generateTo = arguments[i];
+		i++;
+	}
+	xooki.c.action = 'render';
 	if (arguments.length > i) {
-		generateToDir = arguments[i];
+		xooki.c.action = arguments[i];
 		i++;
 	}
 
@@ -1218,10 +1258,11 @@
         
     	xooki.pageContent = xooki.pageContent.replace(/<script type="text\/javascript" src="[^"]*xooki.js"><\/script>/g, '');
     	
-    	xooki.render.page();
+    	xooki.render.main();
 
-    	print('generating to '+generateToDir+'/'+file);
-    	xooki.io.saveFile(generateToDir+'/'+file, xooki.pageContent);
+		var dest = generateTo.endsWith(".html") ? generateTo : generateTo+'/'+file;
+    	print('generating to '+dest);
+    	xooki.io.saveFile(dest, xooki.pageContent);
     }
 } else {
 	xooki.pageURL = window.location.toString();