private static LinkRedirect? ReadLinkRedirect()

in src/Elastic.Documentation.Configuration/Builder/RedirectFile.cs [84:117]


	private static LinkRedirect? ReadLinkRedirect(YamlStreamReader reader, string file, YamlMappingNode mapping)
	{
		var redirect = new LinkRedirect();
		foreach (var entryValue in mapping.Children)
		{
			if (entryValue.Key is not YamlScalarNode scalar || scalar.Value is null)
				continue;
			var key = scalar.Value;
			switch (key)
			{
				case "anchors":
					redirect = redirect with { Anchors = reader.ReadDictionaryNullValue(entryValue) };
					continue;
				case "to":
					var to = reader.ReadString(entryValue);
					if (to is not null)
						redirect = redirect with { To = to };
					continue;
				case "many":
					var many = ReadManyRedirects(reader, file, entryValue.Value);
					redirect = redirect with { Many = many };
					continue;
			}
		}

		if (redirect.To is null && redirect.Anchors is null && redirect.Many is null)
			return null;

		if (redirect.To is null && redirect.Many is null or { Length: 0 })
			return redirect with { To = file };

		return string.IsNullOrEmpty(redirect.To) && redirect.Many is null or { Length: 0 }
			? null : redirect;
	}