Naposledy aktivní 1 month ago

Revize 4780e6668f98d7916e15728bbea20219a4e0ff14

gistfile1.txt Raw
1#!/usr/bin/env bash
2
3# ============================================
4# Date Formats
5# ============================================
6
7FMT_DATE_ISO="%Y-%m-%d" # 2026-05-10
8FMT_DATE_EU="%d/%m/%Y" # 10/05/2026
9FMT_DATE_EU_DASH="%d-%m-%Y" # 10-05-2026
10FMT_DATETIME_ISO="%Y-%m-%d %H:%M" # 2026-05-10 22:39
11FMT_DATETIME_EU="%d/%m/%Y %H:%M" # 10/05/2026 22:39
12
13# Default — can be overridden in wgctl.conf
14FMT_DATE="${FMT_DATE_ISO}"
15FMT_DATETIME="${FMT_DATETIME_ISO}"
16
17# Load from config or use default
18_FMT_DATE_FORMAT="${DATE_FORMAT:-iso}"
19
20FMT_HELPER="${_CTX_ROOT}/core/fmt_helper.py"
21
22function fmt::date() {
23 local ts="$1"
24 date -d "@${ts}" "+${FMT_DATE}" 2>/dev/null || echo "$ts"
25}
26
27function fmt::datetime() {
28 local ts="$1"
29 date -d "@${ts}" "+${FMT_DATETIME}" 2>/dev/null || echo "$ts"
30}
31
32function fmt::datetime_iso() {
33 local iso="$1"
34 python3 "$FMT_HELPER" fmt_datetime "$iso" "$FMT_DATETIME" </dev/null
35}
36
37# fmt::datetime_short <unix_timestamp>
38# Returns a compact datetime — just time if today, short date+time if older.
39# Respects configured date format. Returns "—" for empty/zero timestamps.
40function fmt::datetime_short() {
41 local ts="${1:-}"
42 [[ -z "$ts" || "$ts" == "0" ]] && echo "—" && return 0
43
44 local today ts_day
45 today=$(date +%Y-%m-%d)
46 ts_day=$(date -d "@${ts}" +%Y-%m-%d 2>/dev/null) || { echo "—"; return 0; }
47
48 if [[ "$ts_day" == "$today" ]]; then
49 date -d "@${ts}" +"%H:%M" 2>/dev/null || echo "—"
50 else
51 case "$_FMT_DATE_FORMAT" in
52 iso) date -d "@${ts}" +"%m-%d %H:%M" 2>/dev/null || echo "—" ;;
53 eu*) date -d "@${ts}" +"%d/%m %H:%M" 2>/dev/null || echo "—" ;;
54 *) date -d "@${ts}" +"%m-%d %H:%M" 2>/dev/null || echo "—" ;;
55 esac
56 fi
57}
58
59function fmt::set_date_format() {
60 local format="$1"
61 case "$format" in
62 iso)
63 FMT_DATE="%Y-%m-%d"
64 FMT_DATETIME="%Y-%m-%d %H:%M"
65 ;;
66 eu)
67 FMT_DATE="%d/%m/%Y"
68 FMT_DATETIME="%d/%m/%Y %H:%M"
69 ;;
70 eu-dash)
71 FMT_DATE="%d-%m-%Y"
72 FMT_DATETIME="%d-%m-%Y %H:%M"
73 ;;
74 *) log::error "Unknown date format: $format" ;;
75 esac
76}
77
78