[Laszlo-checkins] r6952 - in openlaszlo/branches/paperpie/docs/src: . xsl

ben@openlaszlo.org ben at openlaszlo.org
Mon Oct 22 13:41:14 PDT 2007


Author: ben
Date: 2007-10-22 13:41:08 -0700 (Mon, 22 Oct 2007)
New Revision: 6952

Modified:
   openlaszlo/branches/paperpie/docs/src/build.xml
   openlaszlo/branches/paperpie/docs/src/xsl/common-html.xsl
   openlaszlo/branches/paperpie/docs/src/xsl/simple-driver.xsl
Log:
Change 20071019-ben-b by ben at slim.local on 2007-10-19 21:30:38 PDT
    in /Users/ben/src/svn/openlaszlo/branches/paperpie/docs
    for http://svn.openlaszlo.org/openlaszlo/branches/paperpie/docs

Summary: Live examples links for developer's guide and reference

New Features: 

Bugs Fixed:
LPP-4794  	 Editor for live code examples in dguide (Introduction to Components chapter) isn't working 
LPP-4696  	 Edit buttons missing from dguide code examples
LPP-4024  	 Clicking "edit" on doc example causes Firefox launch inappropriate inquiry
LPP-4683  	 Parameterize path to source in live-editor for examples in dev guide

Technical Reviewer: none
QA Reviewer: (pending)
Doc Reviewer: sundman (pending)

Documentation:

Live examples and links to edit live examples should all work, in reference,
developers guide, and tutorials. 

Release Notes:

Details:
docs/src/build.xml - Rearranged paths for building the reference guide so that
    the directory paths make sense. Everything goes from docs/src/developers to
    docs/build to docs/developers. I think this is how it was *designed* to work, 
    but it's not quite how it *was* working. 
    
    1) The code examples go from the developers.input.dir
        to the developers.build.dir in the developers.preprocess target. 
    2) In the developers.examples.preprocess target, the examples come from the
            docs.build.dir and are transcluded in the developer's guide index.dbk. 
    3) In developers.html.generate target, the input comes from developers.build.dir
        and is written out to docs/ 
    
    Also, don't build the contributor's guide. It takes a long time, and we're
    not using it right now. 
    
docs/src/xsl/common-html.xsl - Added templates and variables to keep track of 
    where the current output is relative to $LPS_HOME. Various things (like the link
    to the editor.jsp) need to refer to $LPS_HOME, and other things need to know
    how far nested they are down from $LPS_HOME/docs. Rather than being incredibly
    clever and figuring it out by regexp analysis of the current path, we just
    check which part of the book we're building now, and map that directly
    to the relative path information we need. 
    Using this information, I rearranged the hrefs in the live examples button 
    and link so that it works for both the developers guide, the reference guide, 
    and the tutorials. 
    For the purposes of development, I have inserted some debugging information 
    immediately after each live example. This will be removed before we ship. 
    
docs/src/xsl/simple-driver.xsl - Changed to test out techniques for analyzing
    local variables and directories. 
    

Tests:



Modified: openlaszlo/branches/paperpie/docs/src/build.xml
===================================================================
--- openlaszlo/branches/paperpie/docs/src/build.xml	2007-10-22 20:40:00 UTC (rev 6951)
+++ openlaszlo/branches/paperpie/docs/src/build.xml	2007-10-22 20:41:08 UTC (rev 6952)
@@ -1053,35 +1053,39 @@
   <target name="developers.resources" depends="developers.preprocess">
     <foreach target="book.resources.generate" list="developers" param="dir"
              inheritall="true">
-      <param name="local.input.dir" value="${developers.build.dir}"/>
+      <param name="local.input.dir" value="${developers.input.dir}"/>
       <param name="local.output.dir" value="${developers.output.dir}"/>
       <param name="local.build.dir" value="${developers.build.dir}"/>
     </foreach>
     <foreach target="book.resources.generate" list="tutorials" param="dir"
              inheritall="true">
-      <param name="local.input.dir" value="${developers.build.dir}/tutorials"/>
+      <param name="local.input.dir" value="${developers.input.dir}/tutorials"/>
       <param name="local.output.dir" value="${developers.output.dir}/tutorials"/>
       <param name="local.build.dir" value="${developers.build.dir}/tutorials"/>
     </foreach>
   </target>
   
+  <!-- This target seems to pull the example program's code into the docbook file, 
+    and format it for pretty printing. Earlier, in developers.preprocess, 
+    we copied the example code files into $LPS_HOME/docs/developers/programs.
+    [bshine 10.19.2007] --> 
   <target name="developers.examples.preprocess" depends="developers.preprocess">
     <antcall target="dbk.examples.preprocess" inheritAll="true">
-      <param name="local.input.dir" value="${docs.build.dir}"/>
+      <param name="local.input.dir" value="${docs.build.dir}"/> <!-- $LPS_HOME/docs/src/build --> 
       <param name="local.input.index" value="developers/${developers.input.index}"/>
-      <param name="local.output.dir" value="${docs.output.dir}"/>
-      <param name="local.output.index" value="developers/${developers.dbk.index}"/>
+      <param name="local.output.dir" value="${developers.output.dir}"/> <!-- $LPS_HOME/docs/developers -->
+      <param name="local.output.index" value="${developers.dbk.index}"/>
       <param name="local.worksheet" value="xsl/dbkpreprocessexamples.xsl"/>
     </antcall>
   </target>
   
   <target name="developers.html.generate" depends="developers.examples.preprocess">
     <antcall target="book.html.generate" inheritAll="true">
-      <param name="local.input.dir" value="${docs.output.dir}"/>
-      <param name="local.input.index" value="developers/${developers.dbk.index}"/>
+      <param name="local.input.dir" value="${developers.build.dir}"/>
+      <param name="local.input.index" value="${developers.dbk.index}"/>
       <param name="local.output.dir" value="${docs.output.dir}"/>
-      <param name="local.output.index" value="developers/${developers.html.index}"/>
-      <param name="local.output.depends.dir" value="${developers.output.dir}"/>
+      <param name="local.output.index" value="${developers.html.index}"/>
+      <param name="local.output.depends.dir" value="${docs.output.dir}"/>
       <param name="local.output.depends.set" value="*"/>
       <param name="local.worksheet" value="xsl/dguide.xsl"/>
     </antcall>
@@ -1314,8 +1318,9 @@
     targets relating to both ref and tutorial docs:
   -->
 
+  <!-- don't build the contributor's guide, because I don't want to and it takes too long [bshine 10.17.2007] -->
   <target name="build" description="Make the documentation"
-          depends="users,contributors,reference.frameset.generate"
+          depends="users,reference.frameset.generate" 
           unless="skip.doc"/> 
 
   <target name="clean" description="clean up generated files"

Modified: openlaszlo/branches/paperpie/docs/src/xsl/common-html.xsl
===================================================================
--- openlaszlo/branches/paperpie/docs/src/xsl/common-html.xsl	2007-10-22 20:40:00 UTC (rev 6951)
+++ openlaszlo/branches/paperpie/docs/src/xsl/common-html.xsl	2007-10-22 20:41:08 UTC (rev 6952)
@@ -26,6 +26,7 @@
 
   <!-- Path to base directory on local disk of output files -->
   <xsl:param name="base.dir" />
+  
 
   <!-- Address of the servlet relative to the generated file -->
   <xsl:param name="root.relative.lps.includes" select="'../lps/includes/'"/>
@@ -44,32 +45,59 @@
   
   <xsl:param name="warn.no.programlisting.canvas.width" select="false()"/>
   
+  <xsl:template name="base.book.name">
+    <xsl:choose>
+      <xsl:when test="contains(ancestor::part/@id, 'developers.tutorials')">developers/tutorials</xsl:when>
+      <xsl:when test="contains(ancestor::part/@id, '.ref')">reference</xsl:when>
+      <xsl:when test="contains(ancestor::part/@id, 'deployers')">deployers</xsl:when>
+      <xsl:when test="contains(ancestor::part/@id, 'contributors')">contributors</xsl:when>
+      <xsl:when test="contains(ancestor::part/@id, 'contribref')">contribref</xsl:when>
+      <xsl:when test="contains(ancestor::part/@id, 'users')">users</xsl:when>
+      <xsl:when test="contains(ancestor::part/@id, 'developers')">developers</xsl:when>      
+      <xsl:otherwise>unknownbook <!-- This is an error -->
+        <xsl:message>ERROR: could not identify book from part/@id, for <xsl:value-of select="ancestor::part/@id"/></xsl:message>
+      </xsl:otherwise> 
+    </xsl:choose>    
+  </xsl:template>
+
+
+  <xsl:variable name="root.relative">
+    <xsl:call-template name="dbhtml-dir"/>
+  </xsl:variable>
+  
+  <xsl:variable name="depth.from.lpshome">
+    <xsl:value-of select="number(2)"/>  
+  </xsl:variable>
+  
+  <xsl:variable name="relative.path.to.lpshome">
+    <xsl:call-template name="copy-string">
+      <xsl:with-param name="string" select="'../'"/>
+      <xsl:with-param name="count" select="$depth.from.lpshome"/>
+    </xsl:call-template>
+  </xsl:variable>
+  
   <xsl:template name="local.lps.path">
-    
-    <xsl:variable name="root.relative">
-      <xsl:call-template name="dbhtml-dir"/>
-    </xsl:variable>
-
     <xsl:variable name="depth">
-      <xsl:call-template name="count.uri.path.depth">
-        <xsl:with-param name="filename" select="$root.relative"/>
-      </xsl:call-template>
+      <xsl:choose>
+        <xsl:when test="contains(ancestor-or-self::part/@id, 'developers.tutorials')">
+          <xsl:value-of select="number(3)"/>
+        </xsl:when>
+        <xsl:otherwise>
+          <xsl:value-of select="number(2)"/>
+        </xsl:otherwise>
+      </xsl:choose>    
     </xsl:variable>
-
-    <xsl:variable name="href">
-      <xsl:call-template name="copy-string">
-        <xsl:with-param name="string" select="'../'"/>
-        <xsl:with-param name="count" select="$depth"/>
-      </xsl:call-template>
-    </xsl:variable>
-
-    <xsl:value-of select="$href" 
-    />
+    <xsl:value-of select="$root.relative" />
+    <xsl:call-template name="copy-string">
+      <xsl:with-param name="string" select="'../'"/>
+      <xsl:with-param name="count" select="$depth"/>
+    </xsl:call-template>
   </xsl:template>
   
   <xsl:template name="user.head.content">
     <xsl:variable name="rootpath">
       <xsl:call-template name="local.lps.path"/>
+      <xsl:text>docs/</xsl:text>
     </xsl:variable>
     <link rel="stylesheet" href="{$rootpath}includes/docbook.css" type="text/css"/>
     <link rel="stylesheet" href="{$rootpath}includes/lzx-pretty-print.css" type="text/css"/>
@@ -161,6 +189,8 @@
   </xsl:template>
   
   <xsl:template match="programlisting[@language='lzx' and textobject/textdata/@fileref]">
+    
+    
     <!-- extract necessary information from context -->
     <xsl:variable name="fname" select="textobject/textdata/@fileref"/>
     <xsl:variable name="query-parameters" select="parameter[@role='query']"/>
@@ -197,20 +227,36 @@
     
     <!-- throw in the edit button -->
     <xsl:if test="$live">
+      
       <xsl:variable name="edit-href">
-        <xsl:text>../../../laszlo-explorer/editor.jsp?src=</xsl:text>
-        <xsl:value-of select="$localdir"/>
-        <xsl:text>developers/</xsl:text> <!-- TODO: BUG LPP-4683 
-                                          This should not be hardcoded to developers. What about 
-                                          programs that are in contributors or deployers? This needs to 
-                                          be parameterized per-book [bshine 2007.09.07] -->
+        <xsl:value-of select="$relative.path.to.lpshome"/>
+        <xsl:text>laszlo-explorer/editor.jsp?src=docs/</xsl:text>         
+        <xsl:call-template name="base.book.name"/>
+        <xsl:text>/</xsl:text>
         <xsl:value-of select="$fname"/>
       </xsl:variable>
+      <xsl:variable name="editbuttonimg">
+        <!-- TODO [bshine 10.19.2007]
+          If we're in the top-level directory, we only need to go ../includes to get to the edit button.
+          If we're in something/tutorial then we need to go up ../../includes -->
+        <xsl:value-of select="$relative.path.to.lpshome"/>
+        <xsl:text>docs/includes/d_t_editbutton.gif</xsl:text>
+      </xsl:variable>
       <xsl:text>&#x0a;</xsl:text>
       <div class="edit-button">
-        <a href="{$edit-href}" target="lzview"><img border="0" alt="" height="18" width="42" src="../../docs/includes/d_t_editbutton.gif"/></a>
+        <a href="{$edit-href}" target="lzview">
+          <img src="{$editbuttonimg}" border="0" alt="edit" />           
+        </a>
       </div>
       <xsl:text>&#x0a;</xsl:text>
+      <pre>
+        localdir: <xsl:value-of select="$localdir"/>
+        basedir: <xsl:value-of select="$base.dir"/>
+        fname: <xsl:value-of select="$fname"/>
+        base.book.name: <xsl:call-template name="base.book.name"  />
+        root.relative: <xsl:value-of select="$root.relative"/>
+        relative.path.to.lpshome: <xsl:value-of select="$relative.path.to.lpshome"/>
+      </pre> 
     </xsl:if>
   </xsl:template>
 
@@ -295,10 +341,8 @@
     <xsl:param name="href">
       <xsl:text>../../laszlo-explorer/editor.jsp?src=</xsl:text>
       <xsl:value-of select="$localdir"/>
-      <xsl:text>developers/</xsl:text> <!-- TODO: BUG LPP-4683 
-                                          This should not be hardcoded to developers. What about 
-                                          programs that are in contributors or deployers? This needs to 
-                                          be parameterized per-book [bshine 2007.09.07] -->
+      <xsl:call-template name="base.book.name" />
+      <xsl:text>/</xsl:text>
       <xsl:value-of select="."/>
     </xsl:param>
     <xsl:text>&#x0a;</xsl:text>

Modified: openlaszlo/branches/paperpie/docs/src/xsl/simple-driver.xsl
===================================================================
--- openlaszlo/branches/paperpie/docs/src/xsl/simple-driver.xsl	2007-10-22 20:40:00 UTC (rev 6951)
+++ openlaszlo/branches/paperpie/docs/src/xsl/simple-driver.xsl	2007-10-22 20:41:08 UTC (rev 6952)
@@ -24,10 +24,12 @@
 
 ]>
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
-    <xsl:preserve-space elements="body"/>
+    <xsl:import  href="common-html.xsl"/>
+    
     <xsl:output method="xml"/>
     <!-- simple driver for testing paperpie doctools work -->
-
+    
+    
     <xsl:param name="visibility.filter" select="'public'"/>    
 
     <xsl:key name="id" match="*" use="@id"/>
@@ -39,55 +41,12 @@
     <xsl:key name="superclass" match="property[child::class]" use="class/@extends"/>    
 
     <xsl:template match="/">
-        <body>
-            <!-- find all properties which have exactly one class child -->
-            <xsl:apply-templates select="descendant::function"></xsl:apply-templates>
-        </body>
+        <xsl:for-each select="descendant::refsect1[1]">
+            $relative.path.to.lpshome: <xsl:value-of select="$relative.path.to.lpshome"/>
+            local.lps.path:<xsl:call-template name="local.lps.path" />
+            base.book.name:<xsl:call-template name="base.book.name" />
+            dbhtml-dir <xsl:call-template name="dbhtml-dir"></xsl:call-template>
+        </xsl:for-each>            
     </xsl:template>
-    
-    <xsl:template match="function">
-        <function>
-            <xsl:attribute name="name"><xsl:value-of select="../@name" /></xsl:attribute>
-            <class>
-                <xsl:value-of select="ancestor::property/@name"/>
-            </class>            
-        </function>
-    </xsl:template>
-    
-    <xsl:template name="functionfun" >
-        <!-- TO DO: special format for setters (properties with ../object/../property[@name='setters'] structure) -->
-        <xsl:param name="static"/>
-        <xsl:param name="describe-js" select="true()"/>
-        <xsl:param name="describe-lzx" select="true()"/>
-        <xsl:variable name="property" select=".."></xsl:variable>
         
-        <xsl:variable name="jsname" select="$property/@name"/>
-        <xsl:variable name="lzxname" select="&tagname;"/>
-        <xsl:variable name="name" select="&commonname;"/>
-        <xsl:variable name="sortasname" select="translate($name,'_$','  ')"/>
-        <xsl:variable name="id" select="$property/@id"/>
-        <xsl:variable name="desc">
-            <xsl:apply-templates select="$property" mode="desc"/>
-        </xsl:variable>
-        <xsl:variable name="xref">
-            <xsl:apply-templates select="$property" mode="xref"/>
-        </xsl:variable>
-        
-        <varlistentry>
-            <term id="{$id}" xreflabel="{$xref}">
-                <!-- how to get the indexterm to use a different name than xreflabel? -->
-                <indexterm zone="{$id}">
-                    <primary>
-                        <xsl:if test="$name != $sortasname">
-                            <xsl:attribute name="sortas"><xsl:value-of select="$sortasname"/></xsl:attribute>
-                        </xsl:if>
-                        <xsl:value-of select="$name"/>
-                    </primary>
-                </indexterm>
-                <xsl:value-of select="$desc"/>
-            </term>
-        </varlistentry>
-    </xsl:template>
-
-    
 </xsl:stylesheet>



More information about the Laszlo-checkins mailing list