diff --git a/node/logger.js b/node/logger.js new file mode 100644 index 0000000..006879d --- /dev/null +++ b/node/logger.js @@ -0,0 +1,16 @@ +const LEVELS = ["debug", "info", "warn", "error"]; + +export function createLogger(minLevel = "info") { + const threshold = LEVELS.indexOf(minLevel); + if (threshold === -1) { + throw new RangeError(`unknown level: ${minLevel}`); + } + return LEVELS.reduce((logger, level, index) => { + logger[level] = (message) => { + if (index >= threshold) { + console.log(`[${level.toUpperCase()}] ${message}`); + } + }; + return logger; + }, {}); +} diff --git a/python/dates.py b/python/dates.py new file mode 100644 index 0000000..c68cdda --- /dev/null +++ b/python/dates.py @@ -0,0 +1,21 @@ +from datetime import date, timedelta + + +def days_between(start, end): + if end < start: + raise ValueError("end must not precede start") + return (end - start).days + + +def add_business_days(start, count): + current = start + remaining = count + while remaining > 0: + current += timedelta(days=1) + if current.weekday() < 5: + remaining -= 1 + return current + + +def is_weekend(value): + return value.weekday() >= 5