From 3dfbf3a1a758e94da2c19f8afad775984050d764 Mon Sep 17 00:00:00 2001 From: Tomasz Ducin <tomasz.ducin@gmail.com> Date: Wed, 13 May 2015 17:02:30 +0200 Subject: [PATCH] extending jsf, #12 --- .travis.yml | 2 +- README.md | 29 ++++++++++++++++++ lib/index.js | Bin 823 -> 814 bytes .../{customize => extend}/faker-extend.js | 2 +- spec/core/{customize => extend}/faker.json | 4 +-- 5 files changed, 33 insertions(+), 4 deletions(-) rename spec/core/{customize => extend}/faker-extend.js (89%) rename spec/core/{customize => extend}/faker.json (73%) diff --git a/.travis.yml b/.travis.yml index 22f5006f..38bf2564 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,7 @@ language: node_js branches: only: - master - - extending-dependencies + - jsf-extend node_js: - 0.10 before_script: diff --git a/README.md b/README.md index 41dd34bd..4f5dcca9 100644 --- a/README.md +++ b/README.md @@ -201,6 +201,35 @@ Callback: Note that custom generators has lower precedence than core ones. +## Extending dependencies + +You may extend [Faker.js](http://marak.com/faker.js/) and [Chance.js](http://chancejs.com/): + +```javascript +var jsf = require('json-schema-faker'); + +jsf.extend('faker', function(faker){ + faker.locale = "de"; // or any other language + faker.custom = { + statement: function(length) { + return faker.name.firstName() + " has " + faker.finance.amount() + " on " + faker.finance.account(length) + "."; + } + }; + return faker; +}); + +var schema = { + "type": "string", + "faker": { + "custom.statement": [19] + } +} + +var sample = jsf(schema); +``` + +The first parameter of `extend` function is the generator name (`faker` or `chance`). The second one is the function that accepts the dependency library; the function alters the library and **returns it**. + ## Automation: grunt plugin Use [grunt-jsonschema-faker](https://github.com/tkoomzaaskz/grunt-jsonschema-faker) diff --git a/lib/index.js b/lib/index.js index add3f48753d677aeffd0076ddc03c12a9e3645bb..8188bf6e9ca2b3f7518c0cfc88d814aa1f4ecd61 100644 GIT binary patch delta 38 lcmdnawvKH>BokX|MM-L2%H$-bMf?z^f~^9CF<FvX4gd+z4GjPQ delta 47 ocmZ3-ww-N5Bok+HX>mz@Ze~^L<ank<qHvyqtpc1qS%6s%0H$gY8vp<R diff --git a/spec/core/customize/faker-extend.js b/spec/core/extend/faker-extend.js similarity index 89% rename from spec/core/customize/faker-extend.js rename to spec/core/extend/faker-extend.js index c66c5a6b..77951b35 100644 --- a/spec/core/customize/faker-extend.js +++ b/spec/core/extend/faker-extend.js @@ -15,6 +15,6 @@ module.exports = { return faker; }, register: function(jsfaker) { - return jsfaker.customize('faker', this.extend); + return jsfaker.extend('faker', this.extend); } }; diff --git a/spec/core/customize/faker.json b/spec/core/extend/faker.json similarity index 73% rename from spec/core/customize/faker.json rename to spec/core/extend/faker.json index 1f73c00c..418c39e4 100644 --- a/spec/core/customize/faker.json +++ b/spec/core/extend/faker.json @@ -1,6 +1,6 @@ [ { - "description": "generated extended faker", + "description": "faker extension", "tests": [ { "description": "should handle faker.custom.statement", @@ -11,7 +11,7 @@ } }, "valid": true, - "require": "core/customize/faker-extend" + "require": "core/extend/faker-extend" } ] } -- GitLab