File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ ---
2+ permalink: feed.xml
3+ metadata:
4+ title: DepCtrl Recent Updates
5+ subtitle: List of recently updated DependencyControl Macros.
6+ language: en
7+ url: https://typesettingtools.github.io/depctrl-browser/
8+ author:
9+ name: DepCtrl Browser
10+ ---
11+ <?xml version =" 1.0" encoding =" utf-8" ?>
12+ <feed xmlns =" http://www.w3.org/2005/Atom" xml:base =" {{ metadata.url }}" >
13+ <title >{{ metadata .title }} </title >
14+ <subtitle >{{ metadata .subtitle }} </subtitle >
15+ <link href =" {{ permalink }}" rel =" self" />
16+ <link href =" {{ metadata.url }}" />
17+ <updated >{{ updates | getLatestUpdateDate | dateToRfc3339 }} </updated >
18+ <id >{{ metadata .url }} </id >
19+ <author >
20+ <name >{{ metadata .author .name }} </name >
21+ </author >
22+ {%- for update in updates | updateListSort %}
23+ <entry >
24+ <title >{{ update .name }} - {{ update .version }} </title >
25+ <link href =" {{ [" /macros /" , update.namespace, " /" ] | join | url }}" />
26+ <updated >{{ update .releaseDate | dateToRfc3339 }} </updated >
27+ <id >{{ metadata .url }}{{ [" macros/" , update .namespace , " /" ] | join | url }} #{{ update .version }} </id >
28+ <content xml:lang =" {{ metadata.language }}" type =" html" >
29+ {% for changelogLine in update .changelog %}
30+ < ; li> ; {{ changelogLine | markdownify }} < ; /li> ;
31+ {% endfor %}
32+ </content >
33+ </entry >
34+ {%- endfor %}
35+ </feed >
Original file line number Diff line number Diff line change @@ -47,4 +47,35 @@ module.exports = {
4747 } ,
4848
4949 toFeedIdentifier : ( url ) => crypto . createHash ( "sha1" ) . update ( url ) . digest ( "hex" ) . slice ( 0 , 7 ) ,
50+
51+ getLatestUpdateDate : ( updates ) => {
52+ let latestDate = null ;
53+ for ( let update of updates ) {
54+ let updateDate = Date . parse ( update [ 'releaseDate' ] ) || 0 ;
55+ if ( latestDate === null || updateDate > latestDate ) {
56+ latestDate = updateDate ;
57+ }
58+ }
59+ return latestDate ;
60+ } ,
61+
62+ dateToRfc3339 : ( date ) => {
63+ let timestamp
64+ if ( typeof date === "string" ) {
65+ timestamp = Date . parse ( date ) ;
66+ } else {
67+ timestamp = date
68+ }
69+ let parsedDate = new Date ( 0 ) ;
70+ if ( ! isNaN ( timestamp ) ) {
71+ parsedDate = new Date ( timestamp ) ;
72+ }
73+ let s = parsedDate . toISOString ( ) ;
74+
75+ // remove milliseconds
76+ let split = s . split ( "." ) ;
77+ split . pop ( ) ;
78+
79+ return split . join ( "" ) + "Z" ;
80+ } ,
5081}
You can’t perform that action at this time.
0 commit comments