Formatar publicações de blog em Markdown

Você deve buscar algumas publicações de blog em uma API e formatá-las usando Markdown, para que seu colega de trabalho (que não faz ideia do que é Markdown) possa publicá-las facilmente no site da sua empresa.

Você já descobriu como obter as publicações e os usuários associados da API; agora só precisa escrever uma função que receba esses dados e os formate em uma string Markdown. As regras são as seguintes:

  • O title deve começar com um caractere maiúsculo e ser exibido como um H1.
  • Adicione 2 quebras de linha depois do title.
  • A metadata da publicação tem o seguinte formato: Written by <author> on <date>

    • A parte <author> é um link cujo texto é o firstName e o lastName do autor (separados por um espaço), enquanto o href é um mailto:<author email>.
    • A parte <date> é a data da publicação, e o formato é o seguinte: <weekday>, <month> <date>, <year>
      • O dia da semana aparece na forma abreviada (Thu, Sun, …)
      • O mês aparece por extenso (April, December, …)
      • A data aparece com 2 dígitos (01 - 31)
      • O ano sempre aparece no formato estendido (2018)
  • Adicione 2 quebras de linha depois da metadata.

  • O separator é uma linha horizontal; em Markdown, ele é escrito assim: ---.
  • Adicione 2 quebras de linha depois do separator.
  • O body da publicação já está formatado corretamente e é a última coisa que você deve adicionar.

Estrutura de dados

Post

PropriedadeTipoDescrição
idnumberid da publicação
userIdnumberid do usuário que escreveu a publicação
timestampnumbertimestamp da publicação (em milissegundos)
titlestringtítulo da publicação
bodystringcorpo (conteúdo) da publicação

User

PropriedadeTipoDescrição
idnumberid do usuário
firstNamestringnome do usuário
lastNamestringsobrenome do usuário
emailstringendereço de e-mail do usuário

Exemplos

Entrada:

formatBlogPost(
  {
    id: 1,
    userId: 10,
    timestamp: 1536581919628,
    title: 'varius ut blandit non interdum in ante',
    body:
      'Nullam sit amet turpis elementum ligula vehicula consequat. Morbi a ipsum. Integer a nibh.\n\nIn quis justo. Maecenas rhoncus aliquam lacus. Morbi quis tortor id nulla ultrices aliquet.',
  },
  users, // Array of objects, see structure above
);

Saída (como uma string):

# Varius ut blandit non interdum in ante

Written by [Sigismond Reavell](mailto:sreavell9@cargocollective.com) on Mon, September 10, 2018

---

Nullam sit amet turpis elementum ligula vehicula consequat. Morbi a ipsum. Integer a nibh.

In quis justo. Maecenas rhoncus aliquam lacus. Morbi quis tortor id nulla ultrices aliquet.

Observações

  • Acha trabalhoso formatar as datas? Não precisa ser! Confira a aba Recursos para encontrar uma maneira simples de formatá-las.
  • Se você está começando com Markdown ou não se lembra de alguma coisa, confira a aba Recursos para relembrar. Alguns elementos podem ser escritos de várias maneiras, então tenha cuidado para usar a correta neste desafio.