import { findAndReplace } from "mdast-util-find-and-replace";

// remark-emoji's dataset (node-emoji) heeft geen landvlaggen — logisch, want
// dat zijn er ~260 en ze worden niet los benoemd maar samengesteld uit twee
// "regional indicator symbols". Elke ISO-3166-1-alpha-2-landcode werkt dus
// automatisch, zonder vaste lijst: :flag_nl: -> 🇳🇱, :flag_de: -> 🇩🇪, enz.
function toFlagEmoji(countryCode) {
  const codePoints = [...countryCode.toUpperCase()].map(
    (char) => 0x1f1e6 + (char.charCodeAt(0) - 65),
  );
  return String.fromCodePoint(...codePoints);
}

export default function remarkFlagEmoji() {
  return (tree) => {
    findAndReplace(tree, [
      [
        /:flag_([a-z]{2}):/gi,
        (_match, countryCode) => toFlagEmoji(countryCode),
      ],
    ]);
  };
}
