<commit_before>// SNIP: 9d6557d3936d0c8700fdedde9eec3026 | xhrml.jsx
// CHANGELOG:
//  - 2019-11-25 支持 target 嵌套
//  - 2018-07-04 添加 replace 属性, 决定是否替换容器
//  - 2018-05-25 优化代码风格
//  - 2018-05-25 添加 fields-container 属性, 支持提交追加字段
//  - 2017-03-11 添加数据载入完成后, 触发 content:loading 事件
//  - 2017-01-24 优化使用 jQuery 发送事件, 而不是原生代码
//  - 2016-08-04 添加数据载入完成后, 触发 content:loaded 事件
//  - 2016-05-16 独立成 javascript 组件
//  - 2015-04-19 后台引入 xhrml


import $ from 'jquery'

function findContainer(element, container, target) {
  let $container = null
  if (container.match(/^#/)) {
    $container = $(container)
  } else {
    $container = $(element).closest(container)
  }

  if (target) {
    return $container.find(target)
  } else {
    return $container
  }
}

function findContent(data, container, target) {
  if (!target) {
    return $(data)
  } else {
    return $(data).find(container).find(target)
  }
}

function replaceContent($element, data, container, target) {
  const $container = findContainer($element, container, target)
  const $data = findContent(data, container, target)

  if ($element.data('replace') || target) {
    $container.replaceWith($data)
    return $data
  } else {
    $container.html($data)
    return $container
  }
}
<commit_msg>Update xhrml.js, add container check<commit_after>// SNIP: 9d6557d3936d0c8700fdedde9eec3026 | xhrml.jsx
// CHANGELOG:
//  - 2019-11-25 支持 target 嵌套
//  - 2018-07-04 添加 replace 属性, 决定是否替换容器
//  - 2018-05-25 优化代码风格
//  - 2018-05-25 添加 fields-container 属性, 支持提交追加字段
//  - 2017-03-11 添加数据载入完成后, 触发 content:loading 事件
//  - 2017-01-24 优化使用 jQuery 发送事件, 而不是原生代码
//  - 2016-08-04 添加数据载入完成后, 触发 content:loaded 事件
//  - 2016-05-16 独立成 javascript 组件
//  - 2015-04-19 后台引入 xhrml


import $ from 'jquery'

function findContainer(element, container, target) {
  let $container = null
  if (container.match(/^#/)) {
    $container = $(container)
  } else {
    $container = $(element).closest(container)
  }

  if (target) {
    return $container.find(target)
  } else {
    return $container
  }
}

function findContent(data, container, target) {
  if (!target) {
    return $(data)
  } else if ($(data).has(container)) {
    return $(data).find(target)
  } else {
    return $(data).find(container).find(target)
  }
}

function replaceContent($element, data, container, target) {
  const $container = findContainer($element, container, target)
  const $data = findContent(data, container, target)

  if ($element.data('replace') || target) {
    $container.replaceWith($data)
    return $data
  } else {
    $container.html($data)
    return $container
  }
}

{'fraction_non_alphanumeric': 0.14846153846153845, 'fraction_numerical': 0.07, 'mean_word_length': 3.2019386106623586, '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': '5917162', 'n_tokens_mistral': 1174, 'n_tokens_neox': 1091, 'n_words': 215}