Создание похожих отчетов в формате 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
прочитать набор переменных в сценарии сборки.