diff --git a/.gitignore b/.gitignore index bac2cd5..46ce66f 100755 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Global node_modules/ coverage +package-lock.json # OS Generated .DS_Store* diff --git a/CHANGELOG.md b/CHANGELOG.md index c2fce1d..7ef5444 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ + +# [2.2.1](https://github.com/faker-javascript/letter) (2022-01-19) +* Add locales folder for genders. + # [2.1.1](https://github.com/faker-javascript/letter) (2022-01-15) * Typo updates. diff --git a/index.js b/index.js index 95a72ea..f0711f3 100644 --- a/index.js +++ b/index.js @@ -1,11 +1,18 @@ -/* eslint camelcase: ["error", {properties: "never"}] */ +import path from 'node:path'; +import {loadJsonFileSync} from 'load-json-file'; + export default function letter(options) { options = options || {}; - const keyspace = { - en_US: 'abcdefghijklmnopqrstuvwxyz', - ru_RU: 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя', - }; const locale = options.locale || 'en_US'; - const letter = keyspace[locale].charAt(Math.floor(Math.random() * keyspace[locale].length)); + const filePath = `./locales/${locale}/letters.json`; + let letters = []; + + try { + letters = loadJsonFileSync(filePath); + } catch { + letters = loadJsonFileSync(path.resolve('node_modules/@fakerjs/letter/', filePath)); + } + + const letter = letters[0].charAt(Math.floor(Math.random() * letters[0].length)); return (options.casing === 'upper' ? letter.toUpperCase() : letter); } diff --git a/index.test-d.ts b/index.test-d.ts index 9ba0156..010b4c8 100644 --- a/index.test-d.ts +++ b/index.test-d.ts @@ -3,4 +3,4 @@ import letter from './index.js'; expectType(letter()); expectType(letter({casing: 'upper'})); -expectType(letter({casing: 'upper', locale: 'en_US'})); \ No newline at end of file +expectType(letter({casing: 'upper', locale: 'en_US'})); diff --git a/locales/en_US/letters.json b/locales/en_US/letters.json new file mode 100644 index 0000000..679db46 --- /dev/null +++ b/locales/en_US/letters.json @@ -0,0 +1,3 @@ +[ + "abcdefghijklmnopqrstuvwxyz" +] \ No newline at end of file diff --git a/locales/ru_RU/letters.json b/locales/ru_RU/letters.json new file mode 100644 index 0000000..9d7c84c --- /dev/null +++ b/locales/ru_RU/letters.json @@ -0,0 +1,3 @@ +[ + "абвгдеёжзийклмнопрстуфхцчшщъыьэюя" +] \ No newline at end of file diff --git a/package.json b/package.json index eb6c9d3..ee617a7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@fakerjs/letter", - "version": "2.1.1", + "version": "2.2.1", "description": "Letter package provides functionality to generate a fake letter value.", "license": "MIT", "repository": "faker-javascript/letter", @@ -17,6 +17,9 @@ "scripts": { "test": "c8 ava; xo --space 4; tsd;" }, + "dependencies": { + "load-json-file": "^7.0.1" + }, "devDependencies": { "ava": "^4.0.0", "c8": "^7.11.0",