<commit_before>import React, { Component, PropTypes } from 'react';

import { ArticleFooterContainer } from '@economist/component-articletemplate/footer';
import { defaultGenerateClassNameList } from '@economist/component-variantify';

const extendedFooterBylineClasses = [
  'margin-l-1',
  'gutter-l',
  'col-10',
];
const extendedFooterBylineDetailsClasses = [
  'gutter-l',
  'col-10',
];
function BylineFooterContainer({ generateClassNameList = defaultGenerateClassNameList, children }) {
  return (
    <div className={[
      ...generateClassNameList(`ArticleTemplate--byline-footer`),
      ...extendedFooterBylineClasses,
    ].join(' ')}
    >
      {children}
    </div>
  );
}
BylineFooterContainer.propTypes = {
  generateClassNameList: PropTypes.func,
  children: PropTypes.node,
};

export class WinFooter extends Component {

  static get propTypes() {
    return {
      generateClassNameList: PropTypes.func,
      byline: PropTypes.string,
      bylineLocation: PropTypes.string,
      bio: PropTypes.string,
    };
  }

  static get defaultProps() {
    return {
      generateClassNameList: defaultGenerateClassNameList,
    };
  }
  /* eslint-disable react/no-danger */
  render() {
    const { generateClassNameList, byline, bylineLocation, bio } = this.props;
    return (
      <ArticleFooterContainer generateClassNameList={generateClassNameList}>
        <BylineFooterContainer generateClassNameList={generateClassNameList}>
          <h3
            itemProp="byline"
            className={[
              ...generateClassNameList(`ArticleTemplate--byline`),
              ...extendedFooterBylineClasses,
            ].join(' ')}
          >
            {byline}
          </h3>
          <span
            itemProp="bylineLocation"
            className={[
              ...generateClassNameList(`ArticleTemplate--byline-location`),
              ...extendedFooterBylineDetailsClasses,
            ].join(' ')}
          >
            {bylineLocation}
          </span>

          <span
            itemProp="bio"
            className={[
              ...generateClassNameList(`ArticleTemplate--byline-bio`),
              ...extendedFooterBylineDetailsClasses,
            ].join(' ')}
            dangerouslySetInnerHTML={{
              '__html': bio,
            }}
          />
        </BylineFooterContainer>
      </ArticleFooterContainer>
    );
  }
  /* eslint-enable react/no-danger */
}<commit_msg>removed itemProps from footer as these are not valid NewsArticle schema<commit_after>import React, { Component, PropTypes } from 'react';

import { ArticleFooterContainer } from '@economist/component-articletemplate/footer';
import { defaultGenerateClassNameList } from '@economist/component-variantify';

const extendedFooterBylineClasses = [
  'margin-l-1',
  'gutter-l',
  'col-10',
];
const extendedFooterBylineDetailsClasses = [
  'gutter-l',
  'col-10',
];
function BylineFooterContainer({ generateClassNameList = defaultGenerateClassNameList, children }) {
  return (
    <div className={[
      ...generateClassNameList(`ArticleTemplate--byline-footer`),
      ...extendedFooterBylineClasses,
    ].join(' ')}
    >
      {children}
    </div>
  );
}
BylineFooterContainer.propTypes = {
  generateClassNameList: PropTypes.func,
  children: PropTypes.node,
};

export class WinFooter extends Component {

  static get propTypes() {
    return {
      generateClassNameList: PropTypes.func,
      byline: PropTypes.string,
      bylineLocation: PropTypes.string,
      bio: PropTypes.string,
    };
  }

  static get defaultProps() {
    return {
      generateClassNameList: defaultGenerateClassNameList,
    };
  }
  /* eslint-disable react/no-danger */
  render() {
    const { generateClassNameList, byline, bylineLocation, bio } = this.props;
    return (
      <ArticleFooterContainer generateClassNameList={generateClassNameList}>
        <BylineFooterContainer generateClassNameList={generateClassNameList}>
          <h3
            className={[
              ...generateClassNameList(`ArticleTemplate--byline`),
              ...extendedFooterBylineClasses,
            ].join(' ')}
          >
            {byline}
          </h3>
          <span
            className={[
              ...generateClassNameList(`ArticleTemplate--byline-location`),
              ...extendedFooterBylineDetailsClasses,
            ].join(' ')}
          >
            {bylineLocation}
          </span>

          <span
            className={[
              ...generateClassNameList(`ArticleTemplate--byline-bio`),
              ...extendedFooterBylineDetailsClasses,
            ].join(' ')}
            dangerouslySetInnerHTML={{
              '__html': bio,
            }}
          />
        </BylineFooterContainer>
      </ArticleFooterContainer>
    );
  }
  /* eslint-enable react/no-danger */
}
{'fraction_non_alphanumeric': 0.1195046439628483, 'fraction_numerical': 0.002889576883384933, 'mean_word_length': 2.407876230661041, 'pattern_counts': {'":': 0, '<': 25, '<?xml version=': 0, '>': 25, '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': '6554603', 'n_tokens_mistral': 1323, 'n_tokens_neox': 1302, 'n_words': 221}