public void Eval(TextWriter writer, TemplateFieldAccessor accessor)
 {
     _writer(writer, accessor);
 }
 private static void DefaultWriter(TextWriter writer, TemplateFieldAccessor accessor) { }
 public string Eval(TemplateFieldAccessor accessor)
 {
     StringWriter sw = new StringWriter();
     _writer(sw, accessor);
     return sw.ToString();
 }
        private static object GetFieldValue(TemplateFieldAccessor root, CaptureCollection parts)
        {
            object value;
            TemplateFieldAccessor accessor = root;
            for (int i = 0; i < parts.Count - 1; i++)
            {
                Capture part = parts[i];
                value = accessor(part.Value);

                // if the accessor didnt return an accessor then
                // wrap the value in an object accessor
                if (!(value is TemplateFieldAccessor))
                    value = TemplateFieldAccessors.PropertyAccessor(value);

                accessor = (TemplateFieldAccessor)value;
            }

            value = accessor(parts[parts.Count - 1].Value);

            return value;
        }