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