Friday, December 30, 2011

Read a published Google spreadsheet into a DataTable using GData

  1. var service = new SpreadsheetsService(null);
  2. var query = new ListQuery("0AjD5UGMt5CGDdEcwaS10S2IzVzJFNDYtaEo5anN2RHc", "1", "public", "values");
  3. var feed = service.Query(query);
  4. var table = new DataTable();
  5. foreach (ListEntry entry in feed.Entries)
  6. {
  7. var row = table.NewRow();
  8. foreach (ListEntry.Custom element in entry.Elements)
  9. {
  10. var column = table.Columns[element.LocalName] ??
  11. table.Columns.Add(element.LocalName);
  12. row[column] = element.Value;
  13. }
  14. table.Rows.Add(row);
  15. }
Google Data API .NET client library

Saturday, December 17, 2011

Determine if a WinForms control resource file is localized

  1. XPathDocument doc;
  2. using (var stream = File.OpenRead(fileName))
  3. {
  4. doc = new XPathDocument(stream);
  5. }
  6. var nav = doc.CreateNavigator();
  7. var itr = nav.Select("root/data[@name = '>>$this.Name']");
  8. var localized = itr.Count > 0;

Remove matching C# region directives using LINQ

  1. var flag = false;
  2. var modified = false;
  3. var lines = File.ReadLines(fileName)
  4. .Where(line =>
  5. {
  6. if ((!flag && line.Contains("#region " + regionName)) ||
  7. (flag && line.Contains("#endregion")))
  8. {
  9. flag = !flag;
  10. modified = true;
  11. return false;
  12. }
  13. return true;
  14. })
  15. .ToArray();
  16. if (modified)
  17. {
  18. File.WriteAllLines(fileName, lines);
  19. }

Thursday, December 8, 2011

Compile and execute a stateful T4 template using Mono.TextTemplating

  1. var input =
  2. "<#@ template language=\"C#\" debug=\"true\" #>" +
  3. "<#+ static int num; #>" +
  4. "<#= num++ #>";
  5. var generator = new TemplateGenerator();
  6. var compiled = generator.CompileTemplate(input);
  7. Debug.Assert(Equals(compiled.Process(), "0"));
  8. Debug.Assert(Equals(compiled.Process(), "1"));
  9. Debug.Assert(Equals(compiled.Process(), "2"));
Mono.TextTemplating