Browser XSLT support. Optimize for size. Modified: trunk/cis/ReactOS.ApiStatus/Default.build Modified: trunk/cis/ReactOS.ApiStatus/rapistatus.xsl Modified: trunk/reactos/tools/rgenstat/rgenstat.c Added: trunk/reactos/tools/rgenstat/web/index.html _____
Modified: trunk/cis/ReactOS.ApiStatus/Default.build --- trunk/cis/ReactOS.ApiStatus/Default.build 2005-07-29 10:04:38 UTC (rev 16854) +++ trunk/cis/ReactOS.ApiStatus/Default.build 2005-07-29 11:40:01 UTC (rev 16855) @@ -21,7 +21,7 @@
<property name="reactos.dir" value="reactos" /> <property name="apistatus.xsl" value="rapistatus.xsl" /> <property name="apistatus.xml" value="rapistatus.xml" /> - <property name="apistatus.html" value="index.html" /> + <property name="apistatus.html" value="index2.html" /> <include buildfile="config.include" />
<target name="publish"> _____
Modified: trunk/cis/ReactOS.ApiStatus/rapistatus.xsl --- trunk/cis/ReactOS.ApiStatus/rapistatus.xsl 2005-07-29 10:04:38 UTC (rev 16854) +++ trunk/cis/ReactOS.ApiStatus/rapistatus.xsl 2005-07-29 11:40:01 UTC (rev 16855) @@ -76,22 +76,28 @@
<xsl:call-template name="ELEMENT"> xsl:with-param name="class"c</xsl:with-param> </xsl:call-template> - xsl:apply-templates/ + xsl:apply-templates + xsl:with-param name="base"<xsl:value-of select="@base"/></xsl:with-param> + </xsl:apply-templates> </DIV> </xsl:template>
<!-- function --> <xsl:template match="functions"> - <xsl:apply-templates select="function"> - <xsl:sort select="@name"/> + <xsl:param name="base"/> + <xsl:apply-templates select="f"> + <xsl:sort select="@n"/> + <xsl:with-param name="base">xsl:value-of select="$base"/</xsl:with-param> </xsl:apply-templates> </xsl:template>
- <xsl:template match="functions/function"> + <xsl:template match="functions/f"> + <xsl:param name="base"/> <DIV> <xsl:call-template name="ELEMENT"> xsl:with-param name="class"f</xsl:with-param> + xsl:with-param name="base"<xsl:value-of select="$base"/></xsl:with-param> </xsl:call-template> xsl:apply-templates/ </DIV> @@ -102,6 +108,7 @@
<xsl:template name="ELEMENT"> <xsl:param name="class"/> + <xsl:param name="base"/> <xsl:param name="image"/> <xsl:attribute name="class"> <xsl:value-of select="$class"/> @@ -109,10 +116,10 @@ </xsl:attribute> <xsl:call-template name="toggle"/> xsl:choose - <xsl:when test="./node() and local-name() != 'component' and @implemented = 'true'"> + <xsl:when test="./node() and local-name() != 'component' and @i = 'true'"> <img src="i.gif" class="i"/> </xsl:when> - <xsl:when test="./node() and local-name() != 'component' and @implemented = 'false'"> + <xsl:when test="./node() and local-name() != 'component' and @i = 'false'"> <img src="u.gif" class="u"/> </xsl:when> <xsl:when test="./node() and local-name() = 'component' and @complete >= 100"> @@ -131,7 +138,10 @@ </xsl:otherwise> </xsl:choose> <xsl:call-template name="name"/> - <xsl:call-template name="file"/> + <xsl:call-template name="n"/> + <xsl:call-template name="file"> + xsl:with-param name="base"<xsl:value-of select="$base"/></xsl:with-param> + </xsl:call-template> <xsl:call-template name="status"/> </xsl:template>
@@ -173,9 +183,16 @@ </xsl:if> </xsl:template>
+ <xsl:template name="n"> + <xsl:if test="@n"> + <SPAN class="l">xsl:value-of select="@n"/</SPAN> + </xsl:if> + </xsl:template> + <xsl:template name="file"> - <xsl:if test="@file"> - <SPAN class="h">xsl:value-of select="@file"/</SPAN> + <xsl:param name="base"/> + <xsl:if test="@f"> + <SPAN class="h">xsl:value-of select="$base"/<xsl:value-of select="@f"/></SPAN> </xsl:if> </xsl:template>
_____
Modified: trunk/reactos/tools/rgenstat/rgenstat.c --- trunk/reactos/tools/rgenstat/rgenstat.c 2005-07-29 10:04:38 UTC (rev 16854) +++ trunk/reactos/tools/rgenstat/rgenstat.c 2005-07-29 11:40:01 UTC (rev 16855) @@ -398,7 +398,7 @@
return 0; }
-// Build a path and filename so it is of the format [cvs-module][directory][filename]. +// Build a path and filename so it is of the format [module][directory][filename]. // Also convert all backslashes into forward slashes. static void get_filename(char *cvspath, char *filename, char *result) @@ -659,10 +659,19 @@ return strcmp(p->name, q->name); }
+char * +get_filename_without_base(char *component_base, + char *filename) +{ + return &filename[strlen(component_base)]; +} + static void -generate_xml_for_component(char *component_name) +generate_xml_for_component(char *component_name, + char *component_base) { PAPI_INFO api_info; + char canonical_base[MAX_PATH]; char buf[200]; int complete; int implemented_total; @@ -678,28 +687,23 @@ while (api_info != NULL) { if (api_info->tag_id == TAG_IMPLEMENTED) - { implemented_total ++; - } else if (api_info->tag_id == TAG_UNIMPLEMENTED) - { unimplemented_total ++; - }
api_info = api_info->next; }
if (implemented_total + unimplemented_total > 0) - { complete = ((implemented_total) * 100) / (implemented_total + unimplemented_total); - } else - { complete = 100; - }
- sprintf(buf, "<component name="%s" complete="%d" implemented_total="%d" unimplemented_total="%d">", - component_name, complete, implemented_total, unimplemented_total); + strcpy(canonical_base, component_base); + path_to_url(canonical_base); + + sprintf(buf, "<component name="%s" base="%s" complete="%d" implemented_total="%d" unimplemented_total="%d">", + component_name, canonical_base, complete, implemented_total, unimplemented_total); write_line(buf);
if (api_info_list != NULL) @@ -709,12 +713,12 @@ api_info = api_info_list; while (api_info != NULL) { - sprintf(buf, "<function name="%s" implemented="%s" file="%s">", + sprintf(buf, "<f n="%s" i="%s" f="%s" />", api_info->name, api_info->tag_id == TAG_IMPLEMENTED ? "true" : "false", - api_info->filename); + get_filename_without_base(component_base, + api_info->filename)); write_line(buf); - write_line("</function>"); api_info = api_info->next; }
@@ -783,38 +787,26 @@
/* Skip whitespace and eol characters */ while ((index < size) && (is_whitespace(buffer[index]) || (is_eol_char(buffer[index])))) - { index++; - } if ((file_pointer < size) && (buffer[index] == '\n')) - { index++; - }
if (buffer[index] == ';') { /* Skip comments */ while ((index < size) && (!is_eol_char(buffer[index]))) - { index++; - } if ((index < size) && (buffer[index] == '\n')) - { index++; - } continue; }
/* Get component name */ start = index; while ((index < size) && (!is_whitespace(buffer[index]))) - { index++; - } if (index >= size) - { break; - }
len = index - start; strncpy(component_name, &buffer[start], len); @@ -822,20 +814,14 @@
/* Skip whitespace */ while ((index < size) && (is_whitespace(buffer[index]))) - { index++; - } if (index >= size) - { break; - }
/* Get component path */ start = index; while ((index < size) && (!is_whitespace(buffer[index]) && !is_eol_char(buffer[index]))) - { index++; - }
len = index - start; strncpy(component_path, &buffer[start], len); @@ -851,20 +837,17 @@
/* Skip to end of line */ while ((index < size) && (!is_eol_char(buffer[index]))) - { index++; - } if ((index < size) && (buffer[index] == '\n')) - { index++; - }
canonical_path = convert_path(component_path); if (canonical_path != NULL) { process_directory(canonical_path, canonical_path); free(canonical_path); - generate_xml_for_component(component_name); + generate_xml_for_component(component_name, + component_path); } }
_____
Added: trunk/reactos/tools/rgenstat/web/index.html --- trunk/reactos/tools/rgenstat/web/index.html 2005-07-29 10:04:38 UTC (rev 16854) +++ trunk/reactos/tools/rgenstat/web/index.html 2005-07-29 11:40:01 UTC (rev 16855) @@ -0,0 +1,14 @@
+<html> +<body> +If your browser do not support XSLT click <a href="index2.html">here</a>. +<script type="text/javascript"> + var xml = new ActiveXObject("Microsoft.XMLDOM") + xml.async = false + xml.load("rapistatus.xml") + var xsl = new ActiveXObject("Microsoft.XMLDOM") + xsl.async = false + xsl.load("rapistatus.xsl") + document.write(xml.transformNode(xsl)) +</script> +</body> +</html> Property changes on: trunk/reactos/tools/rgenstat/web/index.html ___________________________________________________________________ Name: svn:eol-style + native