/* eslint-env node */

var path = require("path");
var fs = require("fs");
var prettyPrint = require("js-beautify").html;

function readFile(filePath) {
  return fs.readFileSync(filePath, { encoding: "utf-8" }).trim();
}

function readJSON(jsonPath) {
  return JSON.parse(readFile(jsonPath));
}

var testPageRoot = path.join(__dirname, "test-pages");

exports.getTestPages = function () {
  return fs.readdirSync(testPageRoot).map(function (dir) {
    return {
      dir,
      source: readFile(path.join(testPageRoot, dir, "source.html")),
      expectedContent: readFile(path.join(testPageRoot, dir, "expected.html")),
      expectedMetadata: readJSON(
        path.join(testPageRoot, dir, "expected-metadata.json")
      ),
    };
  });
};

exports.prettyPrint = function (html) {
  return prettyPrint(html, {
    indent_size: 4,
    indent_char: " ",
    indent_level: 0,
    indent_with_tabs: false,
    preserve_newlines: false,
    break_chained_methods: false,
    eval_code: false,
    unescape_strings: false,
    wrap_line_length: 0,
    wrap_attributes: "auto",
    wrap_attributes_indent_size: 4,
  });
};
