Function Tag.getTagValues

Lookup a child tag by name, and retrieve all values from it.

This just like using getTag().values, except if the tag isn't found, it safely returns null (or an optional array of default values) instead of a dereferencing null error.

Note that, unlike getValue, this doesn't discriminate by the value's type. It simply returns all values of a single tag as a Value[].

If you'd prefer an exception thrown when the tag isn't found, use expectTag.values instead.

Prototype

std.variant.VariantN!(32L,bool,string,dchar,int,long,float,double,real,std.datetime.Date,sdlang.token.DateTimeFrac,std.datetime.SysTime,sdlang.token.DateTimeFracUnknownZone,core.time.Duration,ubyte[],)[] getTagValues(
  string fullTagName,
  std.variant.VariantN!(32L,bool,string,dchar,int,long,float,double,real,std.datetime.Date,sdlang.token.DateTimeFrac,std.datetime.SysTime,sdlang.token.DateTimeFracUnknownZone,core.time.Duration,ubyte[],)[] defaultValues = null
);

Example

import std.exception;
import sdlang.parser;

auto root = parseSource(`
	foo 1 "a" 2 "b"
	foo 3 "c" 4 "d"  // getTagValues considers this to override the first foo
`);
assert( root.getTagValues("foo") == [Value(3), Value("c"), Value(4), Value("d")] );

// Tag not found
// If you'd prefer an exception, use `expectTag.values` instead.
assert( root.getTagValues("doesnt-exist") is null );
assert( root.getTagValues("doesnt-exist", [ Value(999), Value("Not found") ]) ==
	[ Value(999), Value("Not found") ] );

Authors

Copyright

License