|
| 1 | +<?xml version="1.0" encoding="UTF-8"?> |
| 2 | +<xsl:stylesheet version="1.0" |
| 3 | + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
| 4 | + |
| 5 | + <xsl:output method="text" encoding="UTF-8"/> |
| 6 | + |
| 7 | + <xsl:variable name="pad" select="' '"/> |
| 8 | + <xsl:variable name="dashes" select="'--------------------------------------------------'"/> |
| 9 | + |
| 10 | + <xsl:template name="right-pad"> |
| 11 | + <xsl:param name="str"/> |
| 12 | + <xsl:param name="width"/> |
| 13 | + <xsl:value-of select="substring(concat($str, $pad), 1, $width)"/> |
| 14 | + </xsl:template> |
| 15 | + |
| 16 | + <xsl:template name="left-pad"> |
| 17 | + <xsl:param name="str"/> |
| 18 | + <xsl:param name="width"/> |
| 19 | + <xsl:value-of select="substring(concat($pad, $str), string-length(concat($pad, $str)) - $width + 1)"/> |
| 20 | + </xsl:template> |
| 21 | + |
| 22 | + <xsl:template name="pct"> |
| 23 | + <xsl:param name="missed"/> |
| 24 | + <xsl:param name="covered"/> |
| 25 | + <xsl:variable name="total" select="$missed + $covered"/> |
| 26 | + <xsl:choose> |
| 27 | + <xsl:when test="$total > 0"> |
| 28 | + <xsl:value-of select="format-number($covered div $total * 100, '0.0')"/> |
| 29 | + <xsl:text>%</xsl:text> |
| 30 | + </xsl:when> |
| 31 | + <xsl:otherwise> |
| 32 | + <xsl:text> n/a</xsl:text> |
| 33 | + </xsl:otherwise> |
| 34 | + </xsl:choose> |
| 35 | + </xsl:template> |
| 36 | + |
| 37 | + <xsl:template name="header-row"> |
| 38 | + <xsl:call-template name="right-pad"><xsl:with-param name="str" select="'Package'"/><xsl:with-param name="width" select="50"/></xsl:call-template> |
| 39 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'Lines'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 40 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'Line%'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 41 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'Branch'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 42 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'Brch%'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 43 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'Method'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 44 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'Mthd%'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 45 | + <xsl:text> </xsl:text> |
| 46 | + </xsl:template> |
| 47 | + |
| 48 | + <xsl:template name="separator-row"> |
| 49 | + <xsl:call-template name="right-pad"><xsl:with-param name="str" select="$dashes"/><xsl:with-param name="width" select="50"/></xsl:call-template> |
| 50 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'------'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 51 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'------'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 52 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'------'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 53 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'------'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 54 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'------'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 55 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="'------'"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 56 | + <xsl:text> </xsl:text> |
| 57 | + </xsl:template> |
| 58 | + |
| 59 | + <xsl:template name="data-row"> |
| 60 | + <xsl:param name="label"/> |
| 61 | + <xsl:param name="line-m"/><xsl:param name="line-c"/> |
| 62 | + <xsl:param name="branch-m"/><xsl:param name="branch-c"/> |
| 63 | + <xsl:param name="method-m"/><xsl:param name="method-c"/> |
| 64 | + |
| 65 | + <xsl:call-template name="right-pad"><xsl:with-param name="str" select="$label"/><xsl:with-param name="width" select="50"/></xsl:call-template> |
| 66 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="$line-m + $line-c"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 67 | + <xsl:call-template name="left-pad"> |
| 68 | + <xsl:with-param name="str"><xsl:call-template name="pct"><xsl:with-param name="missed" select="$line-m"/><xsl:with-param name="covered" select="$line-c"/></xsl:call-template></xsl:with-param> |
| 69 | + <xsl:with-param name="width" select="7"/> |
| 70 | + </xsl:call-template> |
| 71 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="$branch-m + $branch-c"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 72 | + <xsl:call-template name="left-pad"> |
| 73 | + <xsl:with-param name="str"><xsl:call-template name="pct"><xsl:with-param name="missed" select="$branch-m"/><xsl:with-param name="covered" select="$branch-c"/></xsl:call-template></xsl:with-param> |
| 74 | + <xsl:with-param name="width" select="7"/> |
| 75 | + </xsl:call-template> |
| 76 | + <xsl:call-template name="left-pad"><xsl:with-param name="str" select="$method-m + $method-c"/><xsl:with-param name="width" select="7"/></xsl:call-template> |
| 77 | + <xsl:call-template name="left-pad"> |
| 78 | + <xsl:with-param name="str"><xsl:call-template name="pct"><xsl:with-param name="missed" select="$method-m"/><xsl:with-param name="covered" select="$method-c"/></xsl:call-template></xsl:with-param> |
| 79 | + <xsl:with-param name="width" select="7"/> |
| 80 | + </xsl:call-template> |
| 81 | + <xsl:text> </xsl:text> |
| 82 | + </xsl:template> |
| 83 | + |
| 84 | + <xsl:template match="/report"> |
| 85 | + <xsl:text> VStar Coverage Summary </xsl:text> |
| 86 | + <xsl:text>====================== </xsl:text> |
| 87 | + |
| 88 | + <xsl:call-template name="header-row"/> |
| 89 | + <xsl:call-template name="separator-row"/> |
| 90 | + |
| 91 | + <xsl:for-each select="package"> |
| 92 | + <xsl:variable name="short" select="translate(@name, '/', '.')"/> |
| 93 | + <xsl:variable name="label"> |
| 94 | + <xsl:choose> |
| 95 | + <xsl:when test="starts-with($short, 'org.aavso.tools.vstar.')"> |
| 96 | + <xsl:value-of select="concat('..', substring-after($short, 'org.aavso.tools.vstar'))"/> |
| 97 | + </xsl:when> |
| 98 | + <xsl:otherwise><xsl:value-of select="$short"/></xsl:otherwise> |
| 99 | + </xsl:choose> |
| 100 | + </xsl:variable> |
| 101 | + |
| 102 | + <xsl:call-template name="data-row"> |
| 103 | + <xsl:with-param name="label" select="$label"/> |
| 104 | + <xsl:with-param name="line-m" select="counter[@type='LINE']/@missed"/> |
| 105 | + <xsl:with-param name="line-c" select="counter[@type='LINE']/@covered"/> |
| 106 | + <xsl:with-param name="branch-m" select="counter[@type='BRANCH']/@missed"/> |
| 107 | + <xsl:with-param name="branch-c" select="counter[@type='BRANCH']/@covered"/> |
| 108 | + <xsl:with-param name="method-m" select="counter[@type='METHOD']/@missed"/> |
| 109 | + <xsl:with-param name="method-c" select="counter[@type='METHOD']/@covered"/> |
| 110 | + </xsl:call-template> |
| 111 | + </xsl:for-each> |
| 112 | + |
| 113 | + <xsl:call-template name="separator-row"/> |
| 114 | + |
| 115 | + <xsl:call-template name="data-row"> |
| 116 | + <xsl:with-param name="label" select="'TOTAL'"/> |
| 117 | + <xsl:with-param name="line-m" select="counter[@type='LINE']/@missed"/> |
| 118 | + <xsl:with-param name="line-c" select="counter[@type='LINE']/@covered"/> |
| 119 | + <xsl:with-param name="branch-m" select="counter[@type='BRANCH']/@missed"/> |
| 120 | + <xsl:with-param name="branch-c" select="counter[@type='BRANCH']/@covered"/> |
| 121 | + <xsl:with-param name="method-m" select="counter[@type='METHOD']/@missed"/> |
| 122 | + <xsl:with-param name="method-c" select="counter[@type='METHOD']/@covered"/> |
| 123 | + </xsl:call-template> |
| 124 | + |
| 125 | + <xsl:text> </xsl:text> |
| 126 | + </xsl:template> |
| 127 | + |
| 128 | +</xsl:stylesheet> |
0 commit comments