/// <summary> /// Defines a child token for simple replacement. /// </summary> /// <param name="replacement"></param> /// <param name="identifier"></param> /// <param name="specifyFormatters"></param> /// <returns></returns> public ISimpleToken Tokenize <TChild>(Func <TModel, TChild> replacement, string identifier, Action <OverrideFormatterSet> specifyFormatters = null) { Ensure.ArgumentNotNull(replacement, "replacement"); Ensure.ArgumentNotNullOrEmpty(identifier, "identifier"); var formatters = new OverrideFormatterSet(); if (specifyFormatters != null) { specifyFormatters(formatters); } var formatter = GetValueFormatter <TChild>(formatters); _currentToken = new Token <TModel> { Resolve = f => formatter.Format(replacement(f)), Identifier = string.Intern(identifier) }; Token.AddChild(_currentToken); return(this); }
private IValueFormatter GetValueFormatter <TChild>(OverrideFormatterSet formatters) { return(_formatterSet.Resolve <TChild>(formatters) ?? new DelegateFormatter <TChild>(m => m.ToString())); }