<commit_before>// 参考：
// http://www.casleyconsulting.co.jp/blog-engineer/chrome/chrome%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%81%AE%E4%BD%9C%E6%88%90%E6%96%B9%E6%B3%95-2/
// http://blog.fenrir-inc.com/jp/2012/09/jquery-chrome-extension.html
// http://dev.screw-axis.com/doc/chrome_extensions/

/**
 * 翻訳対象外とする要素のデフォルトセレクタ(Sizzle)。
 *
 * TODO 設定可能とするように修正(オプションページ作成)
 */
var defailtSelectors = [ "pre", "code", ".line", ".lines" ];

// ドキュメント準備完了時に実行
$(document).ready(function() {
	log("Start.");
	setNotranslate(defailtSelectors);
	log("End.");
});

/**
 * 指定したセレクタ配列に一致する要素がChromeで翻訳されないように設定する。
 *
 * @param selectors
 *            翻訳対象外とする要素のセレクタ(Sizzle)の配列
 */
function setNotranslate(selectors) {
	var i;
	var elms;
	for (i = 0; i < selectors.length; i++) {
		elms = $(selectors[i]).addClass("notranslate");
		log("Set 'notranslate' class to " + elms.length + " elements by '"
				+ selectors[i] + "'.");
	}
}

/**
 * コンソールにログを出力する。
 *
 * TODO デベロッパーモードかどうかの判定及びdebug実装
 *
 * @param logValue
 *            出力内容
 */<commit_msg>#1 に対応。 DOMツリーに変更があった際に、変更された要素に対して再処理を行うようにした。<commit_after>// 参考：
// http://www.casleyconsulting.co.jp/blog-engineer/chrome/chrome%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%81%AE%E4%BD%9C%E6%88%90%E6%96%B9%E6%B3%95-2/
// http://blog.fenrir-inc.com/jp/2012/09/jquery-chrome-extension.html
// http://dev.screw-axis.com/doc/chrome_extensions/

/**
 * 翻訳対象外とする要素のデフォルトセレクタ(Sizzle)。
 *
 * TODO 設定可能とするように修正(オプションページ作成)
 */
var defailtSelectors = [ "pre", "code", ".line", ".lines" ];

// ドキュメント準備完了時に実行
$(document).ready(function() {
	log("document ready Start.");
	setNotranslate(defailtSelectors);
	log("document ready End.");
});

// 要素の追加時に実行
$("body").bind("DOMNodeInserted", function(e) {
	var element = e.target;
	setTimeout(function() {
		log("body DOMNodeInserted Start.");
		setNotranslate(defailtSelectors, element);
		log("body DOMNodeInserted End.");
	}, 100);	// TODO 実行タイミングの精査
	log("body DOMNodeInserted Set.");
});

/**
 * 指定したセレクタ配列に一致する要素がChromeで翻訳されないように設定する。
 *
 * @param selectors
 *            翻訳対象外とする要素のセレクタ(Sizzle)の配列
 * @param context
 *            翻訳対象外とする要素のコンテキスト(省略時<c>document</d>)
 */
function setNotranslate(selectors, context) {
	if (!context) {
		context = document
	}
	var i;
	var elms;
	for (i = 0; i < selectors.length; i++) {
		elms = $(selectors[i], context).addClass("notranslate");
		log("Set 'notranslate' class to " + elms.length + " elements by '"
				+ selectors[i] + "'.");
	}
}

/**
 * コンソールにログを出力する。
 *
 * TODO デベロッパーモードかどうかの判定及びdebug実装
 *
 * @param logValue
 *            出力内容
 */
{'fraction_non_alphanumeric': 0.191164972634871, 'fraction_numerical': 0.03049257232212666, 'mean_word_length': 4.128256513026052, 'pattern_counts': {'":': 0, '<': 7, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, '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': '4086767', 'n_tokens_mistral': 1353, 'n_tokens_neox': 1294, 'n_words': 138}