private string Render(Dictionary <string, string> context) { var builder = new StringBuilder(); foreach (var token in _tokens) { builder.Append(GraphiteSyntax.EscapeName(token(context), true)); } return(DotsRegex.Replace(builder.ToString().Trim('.'), ".")); }
public IEnumerable <string> Format(GraphitePoint point) { var tags = point.Tags; var tagsDictionary = tags.Keys.Zip(tags.Values, (key, value) => new { key, value }) .ToDictionary(x => $"tag:{x.key}", x => GraphiteSyntax.EscapeName(x.value), StringComparer.OrdinalIgnoreCase); tagsDictionary["context"] = point.Context; tagsDictionary["name"] = point.Name; foreach (var field in point.Fields) { tagsDictionary["field"] = field.Key; var sb = new StringBuilder(Render(tagsDictionary)); sb.Append(' '); sb.Append(GraphiteSyntax.FormatValue(field.Value)); sb.Append(' '); sb.Append(GraphiteSyntax.FormatTimestamp(point.UtcTimestamp)); yield return(sb.ToString()); } }