Создание похожих отчетов в формате HTML для нескольких файлов данных

Мне нужно проанализировать дюжину одинаково отформатированных файлов данных. Я хочу создать аналогичный отчет HTML, содержащий некоторые статистические данные и графики, которые описывают данные, для каждого файла. Один HTML-отчет на один файл, одни и те же графики в каждом, просто разные цифры. Для одного файла это легко сделать, например, используя журнал FsLab. Несмотря на все мои усилия, я не нашел способа сделать это эффективно для многих похожих файлов (одного формата, разных чисел).

Если у меня есть 10 файлов, мне нужно будет скопировать и вставить журнал 10 раз и изменить строку, которая определяет, какой файл загружать в каждую копию. Затем, когда я захочу добавить новый график, мне нужно будет отредактировать все 10 файлов. Это явно не может быть лучшим способом сделать это.

Я готов использовать другие методы, кроме журнала и других библиотек, кроме FsLab, если они лучше подходят для этой проблемы, но я уверен, что было бы простое решение для такой простой вещи, как эта.

1 ответ

Решение

Это то, что не очень хорошо поддерживается системой FsLab Journals, но вы определенно можете найти способ сделать это. Один простой вариант, который я могу придумать, - это изменить build.fsx сценарий для журналов, чтобы он многократно обрабатывал сценарий и использовал, например, переменную среды для указания входного файла.

Если вы используете стандартный шаблон, посмотрите на функцию generateJournals:

let generateJournals ctx =
  let builtFiles = Journal.processJournals ctx
  traceImportant "All journals updated."
  Journal.getIndexJournal ctx builtFiles

Я думаю, что вы должны иметь возможность изменить его следующим образом:

let generateJournals ctx =
  // Iterate over all inputs you want to process
  for input in inputFiles do
    // Set environment variable to keep 'input'
    let builtFiles = Journal.processJournals ctx
    // Move the resulting files, so that they do not 
    // get overwritten by the next run 

  // Just return the journal you want to open first below
  traceImportant "All journals updated."
  Journal.getIndexJournal ctx builtFiles

Тогда в журнале вы сможете использовать System.Environment прочитать набор переменных в сценарии сборки.

Другие вопросы по тегам