private static bool ValidateSingleMetaEntry(MetaDataModel.Entry entry, string value, IWorkspaceItem item, out string defaultMessage) { switch (entry.Type) { case MetaDataType.None: defaultMessage = $"Entry {value} does not match regex {entry.Regex?.ToString()}"; return(entry.Regex == null || entry.Regex.IsMatch(value)); case MetaDataType.Boolean: defaultMessage = "Entry has to be a boolean (true/false)"; return(bool.TryParse(value, out _)); case MetaDataType.File: defaultMessage = $"The file '{value}' does not exist in the workspace"; return(SearchForFile(item.Workspace.Item, value)); case MetaDataType.Float: defaultMessage = $"Could not parse '{value}' as a floating point number"; return(double.TryParse(value, NumberStyles.Any, CultureInfo.InvariantCulture, out _)); case MetaDataType.Integer: defaultMessage = $"Could not parse '{value}' as an integer"; return(int.TryParse(value, out _)); case MetaDataType.Locale: defaultMessage = $"Could not parse '{value}' as a locale (e.g en-US)"; return(LocaleRegex.IsMatch(value)); } defaultMessage = ""; return(false); }
private static bool ValidateEntry(MetaDataModel.Entry entry, MetaDataEntry doc, IWorkspaceItem item, out string defaultMessage) { const string DONT_SHOW = "DONT SHOW"; if (entry.IsArray) { if (doc.Value == null) { foreach (var value in doc.Entries) { if (!ValidateSingleMetaEntry(entry, value.Value, item, out defaultMessage)) { return(false); } } defaultMessage = DONT_SHOW; return(true); } else { defaultMessage = DONT_SHOW; return(false); } } else if (doc.Value == null) { defaultMessage = "Entry has to contain a value"; return(false); } else { return(ValidateSingleMetaEntry(entry, doc.Value, item, out defaultMessage)); } }
public MarkdownMetaCompletionData(MetaDataModel.Entry metaDataEntry) { this.metaDataEntry = metaDataEntry ?? throw new ArgumentNullException(nameof(metaDataEntry)); }