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