<commit_before>// import isEqual from 'lodash/isEqual';

// 当前 meta 标签
let currentMetaTags;
// meta 标签区域结尾的 HTML 注释代码
let nodeCommentEnd;

let inited = false;

const infoToChange = {
    title: '',
    metas: []
};
let changeTimeout = undefined;

/**
 * (浏览器环境) 更新页面信息
 * @module
 * @param {String} title
 * @param {Object[]} metas
 */
export default (title, metas = []) => {
    if (__SERVER__) return;
    if (!__SPA__ && !inited) {
        setTimeout(() => {
            inited = true;
        });
        return;
    }

    // 判断 & 追加即将修改的内容
    /*
    // 如果新 meta 不存在于已有的 meta 列表，添加
    metas.forEach(metaNew => {
        if (!infoToChange.metas.length) infoToChange.metas.push(metaNew);
        if (
            !infoToChange.metas.every(metaExist => {
                console.log(metaNew, metaExist, isEqual(metaNew, metaExist));
                return isEqual(metaNew, metaExist);
            })
        ) {
            console.log('PUSH');
            infoToChange.metas.push(metaNew);
        }
    });
    */
    // 如果当前没有信息，设为当前信息
    if (
        !infoToChange.title ||
        !Array.isArray(infoToChange.metas) ||
        !infoToChange.metas.length
    ) {
        infoToChange.title = title;
        infoToChange.metas = metas;
    }

    if (changeTimeout) return;

    changeTimeout = setTimeout(() => {
        doUpdate();
        infoToChange.title = '';
        infoToChange.metas = [];
        changeTimeout = undefined;
    });
};

const doUpdate = () => {
    const { title, metas } = infoToChange;

    // 替换页面标题
    document.title = title;

    // 替换 metas
    const head = document.getElementsByTagName('head')[0];
    if (!Array.isArray(currentMetaTags)) {
        currentMetaTags = [];
        // 移除所有在 KOOT_METAS 里的 meta 标签
        // 采用 DOM 操作的初衷：如果使用 innerHTML 的字符串替换方法，浏览器可能会全局重新渲染一次，造成“闪屏”<commit_msg>continue fixing pageinfo HOC order problem<commit_after>// import isEqual from 'lodash/isEqual';

// 当前 meta 标签
let currentMetaTags;
// meta 标签区域结尾的 HTML 注释代码
let nodeCommentEnd;

let inited = false;

const infoToChange = {
    title: '',
    metas: []
};
let changeTimeout = undefined;

/**
 * (浏览器环境) 更新页面信息
 * @module
 * @param {String} title
 * @param {Object[]} metas
 */
export default (title, metas = []) => {
    if (__SERVER__) return;
    if (!__SPA__ && !inited) {
        setTimeout(() => {
            inited = true;
        });
        return;
    }

    // 判断 & 追加即将修改的内容
    /*
    // 如果新 meta 不存在于已有的 meta 列表，添加
    metas.forEach(metaNew => {
        if (!infoToChange.metas.length) infoToChange.metas.push(metaNew);
        if (
            !infoToChange.metas.every(metaExist => {
                console.log(metaNew, metaExist, isEqual(metaNew, metaExist));
                return isEqual(metaNew, metaExist);
            })
        ) {
            console.log('PUSH');
            infoToChange.metas.push(metaNew);
        }
    });
    */
    // 如果当前没有信息，设为当前信息
    if (
        !infoToChange.title &&
        (!Array.isArray(infoToChange.metas) || !infoToChange.metas.length)
    ) {
        infoToChange.title = title;
        infoToChange.metas = metas;
    }

    if (changeTimeout) return;

    changeTimeout = setTimeout(() => {
        doUpdate();
        infoToChange.title = '';
        infoToChange.metas = [];
        changeTimeout = undefined;
    });
};

const doUpdate = () => {
    const { title, metas } = infoToChange;

    // 替换页面标题
    document.title = title;

    // 替换 metas
    const head = document.getElementsByTagName('head')[0];
    if (!Array.isArray(currentMetaTags)) {
        currentMetaTags = [];
        // 移除所有在 KOOT_METAS 里的 meta 标签
        // 采用 DOM 操作的初衷：如果使用 innerHTML 的字符串替换方法，浏览器可能会全局重新渲染一次，造成“闪屏”
{'fraction_non_alphanumeric': 0.1364744110479285, 'fraction_numerical': 0.0005415651232060655, 'mean_word_length': 2.1094276094276094, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 15, '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': '405983', 'n_tokens_mistral': 1377, 'n_tokens_neox': 1424, 'n_words': 238}