using System.Collections.Generic;
using Newtonsoft.Json.Linq;
public static void Main()
title: ""New Year’s Day"",
notes: ""Substitute day"",
var publicHolidayTransformer = new PublicHolidayJsonTransformer();
publicHolidayTransformer.PostTransform = entries => entries.WithTitle("Meh2");
var data = publicHolidayTransformer.Transform(JObject.Parse(json)).ToList();
foreach (var item in data)
Console.WriteLine(item.Title);
public interface IJsonTransformer<T>
T Transform(JObject json);
public interface ITimeEntryJsonTransformer : IJsonTransformer<IEnumerable<TimeEntry>>
public class PublicHolidayJsonTransformer : ITimeEntryJsonTransformer
public PublicHolidayJsonTransformer()
this.PostTransform = entries => entries;
public Func<IEnumerable<TimeEntry>, IEnumerable<TimeEntry>> PostTransform
public IEnumerable<TimeEntry> Transform(JObject json)
var data = json.SelectToken("events").Select(e => e.ToObject<TimeEntry>());
return PostTransform(data);
public static class TimeEntryExtensions
public static IEnumerable<TimeEntry> WithTitle(this IEnumerable<TimeEntry> entries, string title)
return entries.Select(e =>