summaryrefslogtreecommitdiff
path: root/node_modules/typographic-quotes/index.js
blob: 08aae4b87bfee79d4ea2b2ed4db549419a287e58 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import db from 'typographic-quotes-l10n-db';

export default function typographicQuotes(input = '', { locale } = {}) {
  if (Object.keys(db).indexOf(locale) === -1) {
    return input;
  }
  const localeQuotes = db[locale];
  let separator = '';

  const pattern = /(^|\s)(?:"(.*?)"|'(.*?)')(\s|$|\.|,|\?|!)/gim;
  const handleQuotes = (quotes, cb) =>
    (match, before='', part1='', part2='', after='') => {
      let text = (part1 + part2);
      if (cb) { text = text.replace(pattern, cb); }
      if (locale === 'fr') { separator = ' '; }
      return `${before}${quotes[0]}${separator}${text}${separator}${quotes[1]}${after}`;
    }

  return input.replace(pattern,
    handleQuotes(
      localeQuotes.slice(0, 2),
      handleQuotes(localeQuotes.slice(2, 4))))
}