MCPcopy Create free account
hub / github.com/denoland/std / kv

Function kv

toml/_parser.ts:315–340  ·  view source on GitHub ↗
(
  keyParser: ParserComponent<string[]>,
  separator: string,
  valueParser: ParserComponent<T>,
)

Source from the content-addressed store, hash-verified

313}
314
315function kv<T>(
316 keyParser: ParserComponent<string[]>,
317 separator: string,
318 valueParser: ParserComponent<T>,
319): ParserComponent<{ [key: string]: unknown }> {
320 const Separator = character(separator);
321 return (scanner: Scanner): ParseResult<{ [key: string]: unknown }> => {
322 const position = scanner.position;
323 const key = keyParser(scanner);
324 if (!key.ok) return failure();
325 const sep = Separator(scanner);
326 if (!sep.ok) {
327 throw new SyntaxError(`key/value pair doesn't have "${separator}"`);
328 }
329 const value = valueParser(scanner);
330 if (!value.ok) {
331 const lineEndIndex = scanner.source.indexOf("\n", scanner.position);
332 const endPosition = lineEndIndex > 0
333 ? lineEndIndex
334 : scanner.source.length;
335 const line = scanner.source.slice(position, endPosition);
336 throw new SyntaxError(`Cannot parse value on line '${line}'`);
337 }
338 return success(unflat(key.body, value.body));
339 };
340}
341
342function merge(
343 parser: ParserComponent<unknown[]>,

Callers 1

_parser.tsFile · 0.85

Calls 5

characterFunction · 0.85
failureFunction · 0.85
successFunction · 0.85
unflatFunction · 0.85
sliceMethod · 0.45

Tested by

no test coverage detected