<commit_before>var _ = require('underscore');

function isSimilarTo (a, b) {
  var keysA, keysB;

  if (!(_.isObject(a) && _.isObject(b)))
    return true;


  if (_.isEqual(a, b)) return true;

  keysA = Object.keys(a);
  keysB = Object.keys(b);

  if (!_.isEqual(keysA, keysB)) return false;

  for (var key in keysA)
    return isSimilarTo(a[keysA[key]], b[keysA[key]]);
}

module.exports = isSimilarTo;<commit_msg>updates main<commit_after>function isSimilarTo (a, b) {
  'use strict';
  var _ = require('underscore');
  var keysA, keysB;

  if (!(_.isObject(a) && _.isObject(b)))
    return true;

  if (_.isEqual(a, b)) return true;

  keysA = Object.keys(a);
  keysB = Object.keys(b);

  if (!_.isEqual(keysA, keysB)) return false;

  for (var key in keysA)
    return isSimilarTo(a[keysA[key]], b[keysA[key]]);
}

module.exports = isSimilarTo;
{'fraction_non_alphanumeric': 0.172737955346651, 'fraction_numerical': 0.0, 'mean_word_length': 4.011764705882353, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, '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': '5942846', 'n_tokens_mistral': 342, 'n_tokens_neox': 321, 'n_words': 78}