diff --git a/.travis.yml b/.travis.yml index 22f5006fd3e66cbf1b1dcb9d939a848ee9e5ce53..38bf256442cb755b728055b9648a877f1bc117aa 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 41dd34bdbff8d0b0a59cd4a8606618bb4504ddf9..4f5dcca9152bad14f07942f10e459ca5e2181944 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 Binary files a/lib/index.js and b/lib/index.js differ 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 c66c5a6b1658a3cb5fe0b87ffbad961d7f9f22f7..77951b35c53d458486081d5be02c4816eae1834f 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 1f73c00c02cfe2aa1f578e2cff8a330fc2576f29..418c39e460ce02c9047e1c0e4b96222eb3e759b4 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" } ] }