diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..e98f58d --- /dev/null +++ b/.editorconfig @@ -0,0 +1,18 @@ +# EditorConfig: http://EditorConfig.org + +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +charset = utf-8 +end_of_line = lf +trim_trailing_whitespace = true +insert_final_newline = true +indent_style = space +indent_size = 4 + +# 2 space indentation +[*.yaml, *.yml] +indent_style = space +indent_size = 2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..81ac59e --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,17 @@ +name: Tests +on: ['push', 'pull_request'] +jobs: + test: + name: Node.js ${{ matrix.node-version }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + node-version: [^12, ^14, ^16, ^17] + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + - run: npm install + - run: npm test \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..e7ef1ee --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +# Global +node_modules/ + +# OS Generated +.DS_Store* +ehthumbs.db +Icon? +Thumbs.db +*.swp + +# phpstorm +.idea/* diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100755 index 0000000..68fb462 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,3 @@ + +# [1.0.0](https://github.com/faker-javascript/gender) (2022-01-09) +* Initial release diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3006bf0 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Sergey Romanenko + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md index 494e018..8f92c36 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,43 @@ -# gender +
Gender package provides functionality to generate a fake gender value. +
+ +
+
+
+## Install
+
+```
+$ npm install --save @fakerjs/gender
+```
+
+## Usage
+
+```js
+import fakeGender from '@fakerjs/gender';
+
+fakeGender();
+//=> Female
+
+fakeGender({locale: 'ru_RU'});
+//=> Женский
+
+fakeGender({extra: ['Gender'], locale: 'en_US'});
+//=> Gender
+
+// Allowed extra: valid array
+// Allowed locale: en_US, ru_RU
+```
+
+## Tests
+
+Run tests
+
+```
+npm run test
+```
+
+## License
+[The MIT License (MIT)](https://github.com/faker-javascript/gender/blob/master/LICENSE.txt)
+Copyright (c) [Sergey Romanenko](https://github.com/Awilum)
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..16fa4b5
--- /dev/null
+++ b/index.js
@@ -0,0 +1,17 @@
+export default function fakeGender(options) {
+ options = options || {};
+ let genders = {
+ "en_US": [
+ "Male",
+ "Female"
+ ],
+ "ru_RU": [
+ "Мужской",
+ "Женский"
+ ],
+ };
+ let locale = ((options.locale === undefined) ? 'en_US' : options.locale);
+ let gendersWithExtra = genders[locale].concat(options.extra || []);
+ let randomGender = gendersWithExtra[Math.floor(Math.random() * gendersWithExtra.length)];
+ return randomGender;
+};
\ No newline at end of file
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..9e4f575
--- /dev/null
+++ b/package.json
@@ -0,0 +1,32 @@
+{
+ "name": "@fakerjs/gender",
+ "version": "1.0.0",
+ "description": "Gender package provides functionality to generate a fake gender value.",
+ "license": "MIT",
+ "repository": "faker-javascript/gender",
+ "author": {
+ "name": "Sergey Romanenko",
+ "email": "awilum@msn.com",
+ "url": "https://github.com/Awilum"
+ },
+ "type": "module",
+ "exports": "./index.js",
+ "engines": {
+ "node": ">=12"
+ },
+ "scripts": {
+ "test": "ava"
+ },
+ "devDependencies": {
+ "ava": "^3.15.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "keywords": [
+ "fakerjs",
+ "fake",
+ "random",
+ "gender"
+ ]
+}
diff --git a/test.js b/test.js
new file mode 100644
index 0000000..d1a7641
--- /dev/null
+++ b/test.js
@@ -0,0 +1,10 @@
+import fakeGender from './index.js';
+import test from 'ava';
+
+test('fakeGender return type to be string', t => {
+ t.is(typeof fakeGender(), 'string');
+});
+
+test('fakeGender with locale and extra return type to be string', t => {
+ t.is(typeof fakeGender({locale: 'ru_RU', extra: ['gender']}), 'string');
+});