summaryrefslogtreecommitdiff
path: root/src/index.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/index.zig')
-rw-r--r--src/index.zig44
1 files changed, 40 insertions, 4 deletions
diff --git a/src/index.zig b/src/index.zig
index 0914176..e85470c 100644
--- a/src/index.zig
+++ b/src/index.zig
@@ -113,7 +113,7 @@ pub fn Param(comptime Id: type) type {
113/// -s, --long=value_text help_text 113/// -s, --long=value_text help_text
114/// -s, help_text 114/// -s, help_text
115/// --long help_text 115/// --long help_text
116pub fn helpEx( 116pub fn helpFull(
117 stream: var, 117 stream: var,
118 comptime Id: type, 118 comptime Id: type,
119 params: []const Param(Id), 119 params: []const Param(Id),
@@ -173,17 +173,53 @@ fn printParam(
173 try stream.print("={}", value_text(context, param)); 173 try stream.print("={}", value_text(context, param));
174} 174}
175 175
176/// A wrapper around helpFull for simple help_text and value_text functions that
177/// cant return an error or take a context.
178pub fn helpEx(
179 stream: var,
180 comptime Id: type,
181 params: []const Param(Id),
182 help_text: fn(Param(Id)) []const u8,
183 value_text: fn(Param(Id)) []const u8,
184) !void {
185 const Context = struct {
186 help_text: fn(Param(Id)) []const u8,
187 value_text: fn(Param(Id)) []const u8,
188
189 pub fn help(c: @This(), p: Param(Id)) error{}![]const u8 {
190 return c.help_text(p);
191 }
192
193 pub fn value(c: @This(), p: Param(Id)) error{}![]const u8 {
194 return c.value_text(p);
195 }
196 };
197
198 return helpFull(
199 stream,
200 Id,
201 params,
202 error{},
203 Context{
204 .help_text = help_text,
205 .value_text = value_text,
206 },
207 Context.help,
208 Context.value,
209 );
210}
211
176/// A wrapper around helpEx that takes a Param([]const u8) and uses the string id 212/// A wrapper around helpEx that takes a Param([]const u8) and uses the string id
177/// as the help text for each paramter. 213/// as the help text for each paramter.
178pub fn help(stream: var, params: []const Param([]const u8)) !void { 214pub fn help(stream: var, params: []const Param([]const u8)) !void {
179 try helpEx(stream, []const u8, params, error{}, {}, getHelpSimple, getValueSimple); 215 try helpEx(stream, []const u8, params, getHelpSimple, getValueSimple);
180} 216}
181 217
182fn getHelpSimple(context: void, param: Param([]const u8)) error{}![]const u8 { 218fn getHelpSimple(param: Param([]const u8)) []const u8 {
183 return param.id; 219 return param.id;
184} 220}
185 221
186fn getValueSimple(context: void, param: Param([]const u8)) error{}![]const u8 { 222fn getValueSimple(param: Param([]const u8)) []const u8 {
187 return "VALUE"; 223 return "VALUE";
188} 224}
189 225