Skip to content

Commit 8217476

Browse files
committed
Letter 2.2.1
1 parent 7f49aa8 commit 8217476

File tree

7 files changed

+29
-8
lines changed

7 files changed

+29
-8
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Global
22
node_modules/
33
coverage
4+
package-lock.json
45

56
# OS Generated
67
.DS_Store*

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
<a name="2.2.1"></a>
2+
# [2.2.1](https://github.com/faker-javascript/letter) (2022-01-19)
3+
* Add locales folder for genders.
4+
15
<a name="2.1.1"></a>
26
# [2.1.1](https://github.com/faker-javascript/letter) (2022-01-15)
37
* Typo updates.

index.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
1-
/* eslint camelcase: ["error", {properties: "never"}] */
1+
import path from 'node:path';
2+
import {loadJsonFileSync} from 'load-json-file';
3+
24
export default function letter(options) {
35
options = options || {};
4-
const keyspace = {
5-
en_US: 'abcdefghijklmnopqrstuvwxyz',
6-
ru_RU: 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя',
7-
};
86
const locale = options.locale || 'en_US';
9-
const letter = keyspace[locale].charAt(Math.floor(Math.random() * keyspace[locale].length));
7+
const filePath = `./locales/${locale}/letters.json`;
8+
let letters = [];
9+
10+
try {
11+
letters = loadJsonFileSync(filePath);
12+
} catch {
13+
letters = loadJsonFileSync(path.resolve('node_modules/@fakerjs/letter/', filePath));
14+
}
15+
16+
const letter = letters[0].charAt(Math.floor(Math.random() * letters[0].length));
1017
return (options.casing === 'upper' ? letter.toUpperCase() : letter);
1118
}

index.test-d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,4 @@ import letter from './index.js';
33

44
expectType<string>(letter());
55
expectType<string>(letter({casing: 'upper'}));
6-
expectType<string>(letter({casing: 'upper', locale: 'en_US'}));
6+
expectType<string>(letter({casing: 'upper', locale: 'en_US'}));

locales/en_US/letters.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[
2+
"abcdefghijklmnopqrstuvwxyz"
3+
]

locales/ru_RU/letters.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[
2+
"абвгдеёжзийклмнопрстуфхцчшщъыьэюя"
3+
]

package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@fakerjs/letter",
3-
"version": "2.1.1",
3+
"version": "2.2.1",
44
"description": "Letter package provides functionality to generate a fake letter value.",
55
"license": "MIT",
66
"repository": "faker-javascript/letter",
@@ -17,6 +17,9 @@
1717
"scripts": {
1818
"test": "c8 ava; xo --space 4; tsd;"
1919
},
20+
"dependencies": {
21+
"load-json-file": "^7.0.1"
22+
},
2023
"devDependencies": {
2124
"ava": "^4.0.0",
2225
"c8": "^7.11.0",

0 commit comments

Comments
 (0)