generatePages method

void generatePages(
  1. String out
)

Implementation

void generatePages(String out) {
  final logger = context.logger;
  final book = generator.book;
  final pages = book.pages;

  void outputPage(BookPage page) {
    final filename = page.filename;
    page.content = _attachPageContent(p.join(book.bookPath, filename));
    if (page.content == null) {
      logger.w("Page '${book.fileFsPath(filename)}' not exists!");
      return;
    }

    final htmlText = generator.generatePage(theme, page);
    final outputName = book.outputName(page.filename);
    writeToFile(p.join(out, outputName), htmlText);
    page.content = null;
  }

  for (final page in pages.values) {
    try {
      final at = DateTime.now().millisecondsSinceEpoch;
      outputPage(page);

      final interval = DateTime.now().millisecondsSinceEpoch - at;
      final d = Duration(milliseconds: interval);
      final mills = d.inMilliseconds.remainder(
        Duration.millisecondsPerSecond,
      );
      final path = p.join(book.langPath, page.filename);
      logger.d("generate page '$path' cost ${d.inSeconds}.${mills}s.");
    } on Exception catch (e) {
      logger.d("generate page '${page.filename}' failed by $e, ignored.");
    }
  }

  _pageGenerator[book.langPath] = outputPage;
}