public static string ParseValue(this string value, IDocumentData documentData, PageNumberInfo pageNumberInfo, DocumentProperties documentProperties, bool returnErrorMessage = true) { if (string.IsNullOrEmpty(value)) { return(value); } //Pick data fields and replace them with correct data var parsedValue = value; var startIndex = 0; var pos = parsedValue.IndexOf("{", startIndex, StringComparison.Ordinal); while (pos != -1) { var posE = parsedValue.IndexOf("}", pos, StringComparison.Ordinal); var dataName = parsedValue.Substring(pos + 1, posE - pos - 1); string dataValue = null; if (pageNumberInfo != null) { dataValue = pageNumberInfo.GetPageNumberInfo(dataName); } switch (dataName) { case "Author": dataValue = documentProperties.Author; break; case "Subject": dataValue = documentProperties.Subject; break; case "Title": dataValue = documentProperties.Title; break; case "Creator": dataValue = documentProperties.Creator; break; } if (dataValue == null) { dataValue = (documentData != null && documentData.Get(dataName) != null) ? documentData.Get(dataName) : (returnErrorMessage ? string.Format("[Data '{0}' is missing]", dataName) : string.Empty); } startIndex = pos + dataValue.Length; parsedValue = string.Format("{0}{1}{2}", parsedValue.Substring(0, pos), dataValue, parsedValue.Substring(posE + 1)); pos = parsedValue.IndexOf("{", startIndex, StringComparison.Ordinal); } return(parsedValue.TrimEnd(' ')); }
protected override string GetValue(IDocumentData documentData, PageNumberInfo pageNumberInfo, DocumentProperties documentProperties) { if (!string.IsNullOrEmpty(HideValue)) { var result = documentData.Get(HideValue); if (string.IsNullOrEmpty(result)) { return(string.Empty); } } return(Value.ParseValue(documentData, pageNumberInfo, documentProperties)); }