@@ -34,10 +34,14 @@ filenames.forEach((filename) => {
3434 id : filename . substring ( 0 , filename . length - 3 ) ,
3535 adrId : components [ 1 ] ,
3636 version : components [ 2 ] ,
37+ state : { } ,
3738 }
38- obj . isStable = obj . stabilized_at !== undefined && obj . stabilized_at <= today
39- obj . isObsolete = obj . obsoleted_at !== undefined && obj . obsoleted_at <= today
40- obj . isEffective = obj . isStable && ! obj . isObsolete
39+ // now calculate the properties for the columns (plus stable0 as a helper)
40+ obj . state . draft = obj . stabilized_at === undefined
41+ obj . state . stable0 = ! obj . state . draft && obj . stabilized_at <= today
42+ obj . state . deprecated = obj . obsoleted_at !== undefined && obj . obsoleted_at < today
43+ obj . state . stable = ! obj . state . draft && ! obj . state . stable0 && ! obj . state . deprecated
44+ obj . state . effective = obj . state . stable0 && ! obj . state . deprecated
4145 var track = obj . track
4246 if ( track === undefined ) return
4347 if ( tracks [ track ] === undefined ) tracks [ track ] = { }
@@ -100,12 +104,8 @@ ${headerLegend}
100104 tlines . push ( '| --------- | ------------ | ----- | ------- | --------- | ----------- |' )
101105 Object . entries ( trackEntry [ 1 ] ) . forEach ( ( standardEntry ) => {
102106 var versions = standardEntry [ 1 ] . versions
103- // unfortunately, some standards are obsolete without being stable
104- var draftVersions = versions . filter ( ( v ) => v . stabilized_at === undefined && v . obsoleted_at === undefined )
105- var stableVersions = versions . filter ( ( v ) => v . stabilized_at !== undefined && ! v . isEffective )
106- var effectiveVersions = versions . filter ( ( v ) => v . isEffective )
107- var deprecatedVersions = versions . filter ( ( v ) => v . isObsolete )
108107 var ref = versions [ versions . length - 1 ]
108+ var effectiveVersions = versions . filter ( ( v ) => v . state . effective )
109109 if ( effectiveVersions . length ) {
110110 ref = effectiveVersions [ effectiveVersions . length - 1 ]
111111 }
@@ -130,7 +130,9 @@ ${headerLegend}
130130 slines . push ( '| Version | Type | State | stabilized | obsoleted |' )
131131 slines . push ( '| -------- | ----- | ------- | ---------- | --------- |' )
132132 var link = `[scs-${ adrId } ](/standards/${ track . toLowerCase ( ) } /scs-${ adrId } )`
133- var versionList = `${ mkLinkList ( draftVersions ) || '-' } | ${ mkLinkList ( stableVersions ) || '-' } | ${ mkLinkList ( effectiveVersions ) || '-' } | ${ mkLinkList ( deprecatedVersions ) || '-' } `
133+ var versionList = [ 'draft' , 'stable' , 'effective' , 'deprecated' ] . map (
134+ ( column ) => mkLinkList ( versions . filter ( ( v ) => v . state [ column ] ) ) || '-'
135+ ) . join ( ' | ' )
134136 lines . push ( `| ${ link } | ${ track } | ${ ref . title } | ${ versionList } |` )
135137 tlines . push ( `| ${ link } | ${ ref . title } | ${ versionList } |` )
136138 standardEntry [ 1 ] . versions . forEach ( ( obj ) => {
@@ -140,7 +142,7 @@ ${headerLegend}
140142 id : obj . id ,
141143 }
142144 standardItem . items . push ( versionItem )
143- slines . push ( `| [scs-${ adrId } -${ obj . version } ](/standards/${ obj . id } ) | ${ obj . type } | ${ obj . status || obj . state } | ${ obj . stabilized_at || '-' } | ${ obj . obsoleted_at || '-' } |` )
145+ slines . push ( `| [scs-${ adrId } -${ obj . version } ](/standards/${ obj . id } ) | ${ obj . type } | ${ obj . status } | ${ obj . stabilized_at || '-' } | ${ obj . obsoleted_at || '-' } |` )
144146 } )
145147 slines . push ( '' ) // file should end with a single newline character
146148 fs . writeFileSync ( `${ trackPath } /scs-${ adrId } .md` , slines . join ( '\n' ) , 'utf8' )
0 commit comments