<commit_before>import React from 'react';

import PostHero from '../components/post_hero';
import TagList from '../components/tag_list';
import Separator from '../components/separator';
import Author from '../components/author';
import HireUs from '../components/hire_us';

const PostPage = ({ post }) => (
  /* eslint-disable react/no-danger */
  <div>
    <PostHero {...post} />
    <div className="u-xSmallThenSmallMargin" />
    <div className="PostWidthConstrainer">
      <TagList tags={post.tags} />
      <div className="u-smallThenDefaultMargin" />
    </div>

    <div className="PostBody" dangerouslySetInnerHTML={{ __html: post.body }} />

    <div className="PostWidthConstrainer">
      <div className="u-defaultThenLargeMargin" />
      <Separator />
      <div className="u-defaultThenLargeMargin" />
      <Author slug={post.author} />
      <div className="u-defaultThenLargeMargin" />
      <HireUs /><commit_msg>External links open in a new tab<commit_after>import React from 'react';

import PostHero from '../components/post_hero';
import TagList from '../components/tag_list';
import Separator from '../components/separator';
import Author from '../components/author';
import HireUs from '../components/hire_us';

const ProcessedPostBody = ({ body }) => (
  post.body.replace(/(href="http)/g, 'target="_blank" $1')
);

const PostPage = ({ post }) => (
  /* eslint-disable react/no-danger */
  <div>
    <PostHero {...post} />
    <div className="u-xSmallThenSmallMargin" />
    <div className="PostWidthConstrainer">
      <TagList tags={post.tags} />
      <div className="u-smallThenDefaultMargin" />
    </div>

    <div className="PostBody" dangerouslySetInnerHTML={{ __html: ProcessedPostBody(post) }} />

    <div className="PostWidthConstrainer">
      <div className="u-defaultThenLargeMargin" />
      <Separator />
      <div className="u-defaultThenLargeMargin" />
      <Author slug={post.author} />
      <div className="u-defaultThenLargeMargin" />
      <HireUs />
{'fraction_non_alphanumeric': 0.16083916083916083, 'fraction_numerical': 0.0004995004995004995, 'mean_word_length': 3.6258660508083143, 'pattern_counts': {'":': 0, '<': 33, '<?xml version=': 0, '>': 36, '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': '3066325', 'n_tokens_mistral': 599, 'n_tokens_neox': 603, 'n_words': 128}