2022-01-03 13:57:03 +01:00
import { UTXOEngine } from "./engine.js"
2022-01-03 08:48:00 +01:00
import { markdownTable } from 'https://cdn.skypack.dev/markdown-table@3?dts'
2022-01-03 13:57:03 +01:00
const utxo = new UTXOEngine ( { silent : true } )
2022-01-03 08:48:00 +01:00
await utxo . init ( )
// get 2022
const entry = utxo . entries [ '22' ]
2022-01-01 06:09:06 +01:00
// SPEAKERS
2022-01-03 08:48:00 +01:00
const speakers = entry . specs . speakers
2022-01-03 07:06:57 +01:00
const sortedSpeakers = speakers . sort ( ( a , b ) => a . name . localeCompare ( b . name ) )
2022-01-03 08:48:00 +01:00
const tracks = entry . specs . tracks
2022-01-01 08:28:44 +01:00
const methods = {
// SPEAKERS - table
async speakersTableGen ( ) {
const speakersTableArr = [ [ 'Jméno' , 'Organizace' ] ]
2022-01-03 07:06:57 +01:00
for ( const speaker of sortedSpeakers ) {
2022-01-01 11:30:30 +01:00
const name = ` ** ${ speaker . name } ** `
2022-01-01 08:28:44 +01:00
speakersTableArr . push ( [
2022-01-01 11:29:40 +01:00
( speaker . twitter ? ` [ ${ name } ](https://twitter.com/ ${ speaker . twitter } ) ` : name ) + ( speaker . nickname ? ` ( ${ speaker . nickname } ) ` : '' ) ,
2022-01-01 08:28:44 +01:00
speaker . orgs ? speaker . orgs . trim ( ) : ''
] )
}
2022-01-01 08:37:50 +01:00
const speakersTable = ` Celkem přednášejících: ** ${ speakers . length } ** \n \n _(abecedně)_ \n \n ` + markdownTable ( speakersTableArr )
2022-01-01 08:28:44 +01:00
//console.log(speakersTable)
return speakersTable
} ,
// SPEAKERS - leads
async speakersLeadsGen ( ) {
const speakersLeadsArr = [ ]
2022-01-03 07:06:57 +01:00
for ( const speaker of sortedSpeakers . filter ( speaker => speaker . lead ) ) {
2022-01-01 08:35:14 +01:00
const orgs = speaker . orgs ? ` \n * ${ speaker . orgs . trim ( '\n' ) } ` : ''
2022-01-01 08:28:44 +01:00
const socials = [ ]
if ( speaker . twitter ) {
socials . push ( ` Twitter: [@ ${ speaker . twitter } ](https://twitter.com/ ${ speaker . twitter } ) ` )
}
if ( speaker . web ) {
socials . push ( ` Web: [ ${ speaker . web . name ? speaker . web . name : speaker . name } ]( ${ speaker . web . url } ) ` )
}
2022-01-01 10:38:14 +01:00
const img = ` ![](https://spec.utxo.cz/22/photos/speakers/ ${ speaker . id } -sm.png) `
2022-01-01 08:35:14 +01:00
const item = ` ### ${ img } ${ speaker . name } \n \n * ${ speaker . bio . trim ( ) } ${ orgs } \n * ${ socials . join ( ', ' ) } ` ;
2022-01-01 08:28:44 +01:00
speakersLeadsArr . push ( item )
}
const speakersLeads = ` _(abecedně)_ \n \n ` + speakersLeadsArr . join ( '\n\n' )
//console.log(speakersLeads)
return speakersLeads
} ,
// SPEAKERS - write file
async speakersBuild ( ) {
const speakersDocFile = './docs/prednasejici.md'
const speakersText = await Deno . readTextFile ( speakersDocFile )
2022-01-01 08:53:21 +01:00
let output = speakersText
output = output . replace ( /## Významní hosté([\s\S]+)## Seznam/m , ` ## Významní hosté \n \n ${ await methods . speakersLeadsGen ( ) } \n \n ## Seznam ` )
output = output . replace ( /## Seznam všech přednášejících([\s\S]+)### Datový/m , ` ## Seznam všech přednášejících \n \n ${ await methods . speakersTableGen ( ) } \n \n ### Datový ` )
2022-01-01 08:28:44 +01:00
await Deno . writeTextFile ( speakersDocFile , output )
2022-01-01 10:04:14 +01:00
} ,
// TRACKS
async tracksGen ( ) {
const output = [ ]
for ( const track of tracks ) {
output . push ( ` <details> \n \n <summary> ${ track . name } </summary> \n \n ${ track . examples . trim ( ) } \n \n </details> ` )
}
return ` Přednášky a workshopy budou rozděleny do ** ${ tracks . length } tématických programových sekcí**. Níže naleznete jejich přehled a relevantní příklady. \n \n ` + output . join ( '\n\n' )
} ,
async tracksBuild ( ) {
const sourceFile = './docs/hlavni-program.md'
const sourceText = await Deno . readTextFile ( sourceFile )
let output = sourceText
output = output . replace ( /## Programové sekce([\s\S]+)## Časová/m , ` ## Programové sekce \n \n ${ await methods . tracksGen ( ) } \n \n ## Časová ` )
await Deno . writeTextFile ( sourceFile , output )
2022-01-07 09:57:42 +01:00
} ,
// FAQs
async faqsGen ( ) {
const output = [ ]
for ( const item of entry . specs . faqs ) {
output . push ( ` <details> \n \n <summary> ${ item . question . trim ( ) } </summary> \n \n ${ item . answer . trim ( ) } \n \n </details> ` )
}
return output . join ( "\n\n" )
} ,
async faqsBuild ( ) {
const docFile = './docs/faq.md'
const docText = await Deno . readTextFile ( docFile )
const faqs = await this . faqsGen ( )
let output = docText
output = output . replace ( /# FAQ[\s\S]+/m , ` # FAQ \n \n ${ faqs } \n ` )
// TODO replace
await Deno . writeTextFile ( docFile , output )
2022-01-01 06:09:06 +01:00
}
}
2022-01-07 09:57:42 +01:00
2022-01-01 06:09:06 +01:00
2022-01-01 08:28:44 +01:00
if ( ! Deno . args [ 0 ] ) {
await methods . speakersBuild ( )
2022-01-01 10:04:14 +01:00
await methods . tracksBuild ( )
2022-01-07 09:57:42 +01:00
await methods . faqsBuild ( )
2022-01-01 08:28:44 +01:00
console . log ( 'done' )
} else {
console . log ( await methods [ Deno . args [ 0 ] ] ( ) )
}
2022-01-01 06:45:53 +01:00