<commit_before>fs = require 'fs'
jsdom = require('jsdom').jsdom

rivetsPath = require.resolve('rivets')
rivetsSrc = fs.readFileSync(rivetsPath)

module.exports = rivetsServer = {}

rivetsServer.render = (html, data = {}, options = {}, callback) ->

  unless callback?
    callback ?= options
    options = {}

  defaults =
    fullDoc: false

  for own key of defaults
    options[key] ?= defaults[key]

  jsdom.env({
    html: html
    src: [rivetsSrc],
    done: (errs, window) ->
      root = window.document.documentElement
      window.rivets.bind(root, data, options)
      if options.fullDoc
        doctype = window.document.doctype?.toString() || ''
        rendered = doctype + root.outerHTML<commit_msg>add configure callback option<commit_after>fs = require 'fs'
jsdom = require('jsdom').jsdom

rivetsPath = require.resolve('rivets')
rivetsSrc = fs.readFileSync(rivetsPath)

module.exports = rivetsServer = {}

rivetsServer.render = (html, data = {}, options = {}, callback) ->

  unless callback?
    callback ?= options
    options = {}

  defaults =
    fullDoc: false

  for own key of defaults
    options[key] ?= defaults[key]

  jsdom.env({
    html: html
    src: [rivetsSrc],
    done: (errs, window) ->
      if options.configure
        options.configure(window.rivets)
      root = window.document.documentElement
      window.rivets.bind(root, data, options)
      if options.fullDoc
        doctype = window.document.doctype?.toString() || ''
        rendered = doctype + root.outerHTML
{'fraction_non_alphanumeric': 0.12764550264550265, 'fraction_numerical': 0.0, 'mean_word_length': 3.179558011049724, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '301215', 'n_tokens_mistral': 475, 'n_tokens_neox': 460, 'n_words': 107}