From 5a9991b6018a81a49f80004cadbac1c479c4e1b0 Mon Sep 17 00:00:00 2001 From: Awilum Date: Sun, 9 Jan 2022 11:24:34 +0300 Subject: [PATCH] feat(core): initial code commit --- .editorconfig | 18 ++++++++++++++++ .github/workflows/tests.yml | 17 +++++++++++++++ .gitignore | 12 +++++++++++ CHANGELOG.md | 3 +++ LICENSE | 21 ++++++++++++++++++ README.md | 43 ++++++++++++++++++++++++++++++++++++- index.js | 17 +++++++++++++++ package.json | 32 +++++++++++++++++++++++++++ test.js | 10 +++++++++ 9 files changed, 172 insertions(+), 1 deletion(-) create mode 100644 .editorconfig create mode 100644 .github/workflows/tests.yml create mode 100755 .gitignore create mode 100755 CHANGELOG.md create mode 100644 LICENSE create mode 100644 index.js create mode 100644 package.json create mode 100644 test.js 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

+

Gender package provides functionality to generate a fake gender value. +

+ +

+Version License + +## 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'); +});