<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright © 2015 František Kučera (frantovo.cz)

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.

Viz https://blog.frantovo.cz/c/351/CLOC%3A%20po%C4%8D%C3%ADt%C3%A1me%20%C5%99%C3%A1dky%20k%C3%B3du
-->
<xsl:stylesheet version="1.0"
	xmlns="http://www.w3.org/1999/xhtml"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
	xmlns:fn="http://www.w3.org/2005/xpath-functions"
	xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xsl:output method="text"/>
	
	<xsl:template match="/">
		<xsl:text>#!/bin/bash</xsl:text>
		<xsl:text>&#10;&#10;</xsl:text>
		
		<xsl:text>SQL='SELECT jazyk, celkem AS řádků, celkem_graf AS řádků_graf FROM (';&#10;</xsl:text>
		<xsl:text>SQL='SELECT * FROM (';&#10;</xsl:text>
		<xsl:text>SQL+='SELECT ? AS jazyk, ? AS souborů, ? AS prázdných, ? AS komentářů, ? AS kódu, ? AS celkem, ? AS celkem_graf ';&#10;</xsl:text>
		<xsl:for-each select="/results/languages/language|/results/languages/total">
			<xsl:if test="position() &gt; 1">
				<xsl:text>SQL+='UNION SELECT ?,?,?,?,?,?, (SELECT CASE WHEN count &lt; 0 THEN null ELSE count END FROM (SELECT ? AS count) AS count) ';&#10;</xsl:text>
			</xsl:if>
		</xsl:for-each>
		<xsl:text>SQL+=') AS data ';&#10;</xsl:text>
		<xsl:text>SQL+='ORDER BY celkem_graf IS NULL, celkem_graf DESC';</xsl:text>
		<xsl:text>&#10;</xsl:text>
		
		<xsl:variable name="types">VARCHAR,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER,INTEGER</xsl:variable>
		
		<xsl:text>TYPES="";&#10;</xsl:text>
		<xsl:for-each select="/results/languages/language|/results/languages/total">
			<xsl:text>TYPES+="</xsl:text>
			<xsl:if test="position() &gt; 1">,</xsl:if>
			<xsl:value-of select="$types"/>
			<xsl:text>";&#10;</xsl:text>
		</xsl:for-each>
		
		<xsl:text>&#10;</xsl:text>
		
		<xsl:text>DATA=();&#10;</xsl:text>
		<xsl:for-each select="/results/languages/language">
			<xsl:text>DATA+=( </xsl:text>
			<!-- FIXME: ' escaping -->
			<xsl:text>'</xsl:text><xsl:value-of select="@name"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@files_count"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@blank"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@comment"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@code"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@blank + @comment + @code"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@blank + @comment + @code"/><xsl:text>' </xsl:text>
			<xsl:text>);&#10;</xsl:text>
		</xsl:for-each>
		
		<xsl:for-each select="/results/languages/total">
			<xsl:text>DATA+=( </xsl:text>
			<!-- FIXME: ' escaping -->
			<xsl:text>'celkem' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@sum_files"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@blank"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@comment"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@code"/><xsl:text>' </xsl:text>
			<xsl:text>'</xsl:text><xsl:value-of select="@blank + @comment + @code"/><xsl:text>' </xsl:text>
			<xsl:text>'-1' </xsl:text>
			<xsl:text>);&#10;</xsl:text>
		</xsl:for-each>
		
		<xsl:text>&#10;</xsl:text>
		
		
		<xsl:text>sql-dk --db cloc --sql "$SQL" --formatter barchart --formatter-property precision 80 --formatter-property headerTypes false --types "$TYPES" --data "${DATA[@]}"</xsl:text>
		<xsl:text>&#10;</xsl:text>

	</xsl:template>
	
</xsl:stylesheet>

