<commit_before><template>
  <article class="mb-8 md:mb-12">
    <PageHeader title="Through the Years" />

    <section class="container max-w-2xl mx-auto mt-6 sm:mt-8 md:mt-10 lg:mt-12">
      <DynamicMarkdown
        :render-fn="renderFn"
        :static-render-fns="staticRenderFns"
      />
    </section>
  </article>
</template>

<script>
import DynamicMarkdown from '~/components/DynamicMarkdown.vue';
import PageHeader from '~/components/PageHeader.vue';

export default {
  components: {
    DynamicMarkdown,
    PageHeader,
  },
  async asyncData() {
    const page = await import('~/content/pages/archives.md');
    return {
      renderFn: page.vue.render,
      staticRenderFns: page.vue.staticRenderFns,
    };
  },
};
</script>
<commit_msg>Render archive issues.<commit_after><template>
  <article class="mb-8 md:mb-12">
    <PageHeader title="Through the Years" />

    <section class="container max-w-2xl mx-auto mt-6 sm:mt-8 md:mt-10 lg:mt-12">
      <DynamicMarkdown
        :render-fn="renderFn"
        :static-render-fns="staticRenderFns"
      />
    </section>

    <section class="container max-w-2xl mx-auto mt-6 sm:mt-8 md:mt-10 lg:mt-12">
      <div v-for="labelYear in years"
           :key="labelYear"
           class="flex mb-6 sm:mb-8 last:mb-0 pb-6 sm:pb-8 last:pb-0 border-b last:border-b-0"
      >
        <div class="pr-4 sm:pr-6 md:pr-10">
          <h3 class="mt-0 md:text-3xl leading-tight">
            {{ labelYear }}
          </h3>
        </div>
        <div>
          <ul>
            <li v-for="issueYear in archives[labelYear]"
                :key="issueYear"
                class="text-base sm:text-xl leading-tight mb-2 md:mb-4 last:mb-0"
            >
              <a :href="cdnLink(issueYear.file)"
                 target="_blank"
                 rel="noopener noreferrer"
              >
                {{ issueYear.title }}
                <span class="whitespace-no-wrap">({{ issueYear.issue }})</span>
              </a>
            </li>
          </ul>
        </div>
      </div>
    </section>
  </article>
</template>

<script>
import DynamicMarkdown from '~/components/DynamicMarkdown.vue';
import PageHeader from '~/components/PageHeader.vue';
import archives from '~/data/archives.json';

export default {
  components: {
    DynamicMarkdown,
    PageHeader,
  },
  data() {
    return {
      archives: {},
      years: [],
    };
  },
  async asyncData() {
    const page = await import('~/content/pages/archives.md');
    return {
      renderFn: page.vue.render,
      staticRenderFns: page.vue.staticRenderFns,
    };
  },
  created() {
    this.archives = archives;
    this.years = Object.keys(archives).reverse();
  },
  methods: {
    cdnLink(file) {
      return `https://d21yo20tm8bmc2.cloudfront.net/ofr/${file}`;
    },
  },
};
</script>

{'fraction_non_alphanumeric': 0.15621679064824653, 'fraction_numerical': 0.018065887353878853, 'mean_word_length': 2.209090909090909, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 41, 'https://': 1, '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': '6050038', 'n_tokens_mistral': 982, 'n_tokens_neox': 946, 'n_words': 177}