/** */ namespace _zeitbild.helpers { /** * @todo timezone */ function ical_datetime_to_own_datetime( ical_datetime : lib_plankton.ical.type_datetime ) : lib_plankton.pit.type_datetime { return { "timezone_shift": 0, "date": { "year": ical_datetime.date.year, "month": ical_datetime.date.month, "day": ical_datetime.date.day, }, "time": ( (ical_datetime.time === null) ? null : { "hour": ical_datetime.time.hour, "minute": ical_datetime.time.minute, "second": ical_datetime.time.second, } ) }; } /** * @todo timezone */ export function ical_dt_to_own_datetime( ical_dt: lib_plankton.ical.type_dt ) : lib_plankton.pit.type_datetime { return { "timezone_shift": 0, "date": ical_dt.value.date, "time": ( (ical_dt.value.time === null) ? null : { "hour": ical_dt.value.time.hour, "minute": ical_dt.value.time.minute, "second": ical_dt.value.time.second, } ) }; } /** */ var _template_cache : Record = {}; /** * @todo caching */ export async function template_coin( name : string, data : Record ) : Promise { let content : string; if (! (name in _template_cache)) { content = ( ( await lib_plankton.file.read( lib_plankton.string.coin( "templates/{{name}}.html.tpl", { "name": name, } ) ) ) .toString() ); _template_cache[name] = content; } else { content = _template_cache[name]; } return Promise.resolve( lib_plankton.string.coin( content, data ) ); } /** * @todo outsource */ export async function promise_row( members : Array< () => Promise > ) : Promise< Array< type_result > > { let results : Array = []; for await (const member of members) { results.push(await member()); } return Promise.resolve>(results); } }