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 06a995420ad5b1cc220d76942cb678c881ddc792..fa591e34b9ed4afc3cc7a80e33ed577ad697aae6 100644
--- a/README.md
+++ b/README.md
@@ -202,6 +202,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"
}
]
}