MCPcopy
hub / github.com/danielmiessler/Fabric / handleRelative

Method handleRelative

internal/plugins/template/datetime.go:104–147  ·  view source on GitHub ↗
(now time.Time, value string)

Source from the content-addressed store, hash-verified

102}
103
104func (p *DateTimePlugin) handleRelative(now time.Time, value string) (string, error) {
105 debugf("DateTime: handling relative time value=%q", value)
106
107 if value == "" {
108 return "", errors.New(i18n.T("template_datetime_error_relative_requires_value"))
109 }
110
111 // Try standard duration first (hours, minutes)
112 if duration, err := time.ParseDuration(value); err == nil {
113 result := now.Add(duration).Format(time.RFC3339)
114 debugf("DateTime: relative duration=%q result=%q", duration, result)
115 return result, nil
116 }
117
118 // Handle date units
119 if len(value) < 2 {
120 return "", errors.New(i18n.T("template_datetime_error_invalid_relative_format"))
121 }
122
123 unit := value[len(value)-1:]
124 numStr := value[:len(value)-1]
125
126 num, err := strconv.Atoi(numStr)
127 if err != nil {
128 return "", fmt.Errorf(i18n.T("template_datetime_error_invalid_number"), value)
129 }
130
131 var result string
132 switch unit {
133 case "d":
134 result = now.AddDate(0, 0, num).Format("2006-01-02")
135 case "w":
136 result = now.AddDate(0, 0, num*7).Format("2006-01-02")
137 case "m":
138 result = now.AddDate(0, num, 0).Format("2006-01-02")
139 case "y":
140 result = now.AddDate(num, 0, 0).Format("2006-01-02")
141 default:
142 return "", fmt.Errorf(i18n.T("template_datetime_error_invalid_unit"), unit)
143 }
144
145 debugf("DateTime: relative unit=%q num=%d result=%q", unit, num, result)
146 return result, nil
147}

Callers 1

ApplyMethod · 0.95

Calls 2

TFunction · 0.92
debugfFunction · 0.85

Tested by

no test coverage detected