Blame view

src/lufa-LUFA-170418/LUFA/StudioIntegration/XDK/lufa_module_transform.xslt 2.82 KB
ca85a266   gperson   le vrai commit, c...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
  <!--
               LUFA Library
       Copyright (C) Dean Camera, 2017.
  
    dean [at] fourwalledcubicle [dot] com
             www.lufa-lib.org
  -->
  
  <!-- Atmel Studio framework Module XML transform file -->
  
  <!-- Creates an asf.xml module document from a given manifest list of XML files,
       and adds appropriate documentation links by cross-referencing the Doxygen
       tag output file to map Doxygen group names to generated filenames. -->
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  	<xsl:output method="xml" omit-xml-declaration="yes"/>
  
  	<!-- Store the LUFA Doxygen tag filename mentioned in the root node for later use -->
  	<xsl:param name="lufa-doxygen-tagfile" select="lufa-manifest/@tagfile"/>
  
  	<!-- Store the LUFA Doxygen documentation filename mentioned in the root node for later use -->
  	<xsl:param name="lufa-doxygen-docfile" select="lufa-manifest/@docfile"/>
  
  	<!-- Read manifest list, add a comment to indicate the source filename
  	     and then copy/process all ASF nodes in the referenced document -->
  	<xsl:template match="lufa-manifest">
  		<xsl:comment>This file has been automatically generated from the LUFA Atmel Studio integration XML files.</xsl:comment>
  
  		<asf xmlversion="1.0">
  			<xsl:for-each select="xml-source">
  				<xsl:comment>Sourced from <xsl:value-of select="@filename"/></xsl:comment>
  				<xsl:apply-templates select="document(@filename)/lufa/asf/*"/>
  			</xsl:for-each>
  		</asf>
  	</xsl:template>
  
  	<!-- Recursively match and copy/process all nodes/attributes -->
  	<xsl:template match="@*|node()">
  		<xsl:copy>
  			<xsl:apply-templates select="@*|node()"/>
  		</xsl:copy>
  	</xsl:template>
  
  	<!-- For Doxygen entry point nodes we need to convert them into help link
  	     nodes instead and add descriptions, so that they show up as links in
  	     Studio correctly -->
  	<xsl:template match="build[@type='doxygen-entry-point']">
  		<!-- select-by-config entries should not have a help link -->
  		<xsl:if test="not(parent::select-by-config)">
  			<build type="online-help" subtype="module-help-page-append">
  			 	<xsl:attribute name="value">
  			 		<!-- Extract filename of the HTML file that contains the documentation for this module from the Doxgen tag file -->
  				    <xsl:value-of select="document($lufa-doxygen-tagfile)/tagfile/compound[name=current()/@value]/filename"/>
  	  			</xsl:attribute>
  	  		</build>
  	  	</xsl:if>
  
  		<!-- Modules inside a select-by-config entries should not have a help link -->
  		<xsl:if test="not(parent::module and ../parent::select-by-config)">
  			<info type="description" value="summary">
  			 	<!-- Extract brief description of the module from the Doxygen combined XML documentation file -->
  				<xsl:value-of select="document($lufa-doxygen-docfile)/doxygen/compounddef[compoundname=current()/@value]/briefdescription/para"/>
  			</info>
  	  	</xsl:if>
  	</xsl:template>
  
  </xsl:stylesheet>