diff --git a/.gitignore b/.gitignore
index 387ff62..d80c229 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
docSet.dsidx
reference.html
+node_modules/
\ No newline at end of file
diff --git a/README.md b/README.md
index 8b107da..0dcb81d 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,12 @@
# joi.docset
-Just a simple dash docset for joi (https://github.com/spumko/joi). Available through dashs "user contributed" channel ;-)
+Just a simple dash docset for joi (https://github.com/hapijs/joi). Available through dashs "user contributed" channel ;-)
## Generate Docset
+This requires [Node.js](https://nodejs.org/en/download/) and [sqlite](https://www.sqlite.org/) to be installed.
+
```bash
+npm install
node generate
tar --exclude='.DS_Store' -cvzf ./releases/joi-XXX.tgz joi.docset
-```
\ No newline at end of file
+```
diff --git a/generate.js b/generate.js
index 6a23b47..e3e25d8 100644
--- a/generate.js
+++ b/generate.js
@@ -5,12 +5,14 @@ var sqlite3 = require('sqlite3');
var _ = require('lodash');
var mkdirp = require('mkdirp');
var docsetName = 'joi.docset';
-var referenceUrl = 'https://raw.githubusercontent.com/hapijs/joi/master/README.md';
+var referenceUrl = 'https://raw.githubusercontent.com/hapijs/joi/master/API.md';
var Path = require('path');
var documentsPath = Path.join(__dirname, './' + docsetName + '/Contents/Resources/Documents/');
var dbFile = Path.join(__dirname, './' + docsetName + '/Contents/Resources/docSet.dsidx');
-var db;
+var db;
+
+var joiVersion = "NO-VERSION";
var prepareIndexEntry = function (method, anchor) {
var type = 'Guide';
@@ -34,7 +36,6 @@ var prepareIndexEntry = function (method, anchor) {
type = 'Constructor';
}
-
if (method.indexOf('new ') === 0) {
type = 'Constructor';
}
@@ -66,8 +67,29 @@ var fetchRawMarkdown = function (url) {
};
var removeHeader = function (markdown) {
+ return Q.Promise(function (resolve, reject) {
+ var replaced = false;
+ markdown = markdown.replace(/^\s*?(# [\d\.xX]* API Reference)\s*?\s*?
\s*?/, function (match, $1) {
+ replaced = true;
+ return $1;
+ });
+ if (replaced) {
+ return resolve(markdown);
+ }
+ else {
+ return reject(new Error('Unable to match header for removal'));
+ }
+ });
+};
+
+var echoVersion = function (markdown) {
return Q.Promise(function (resolve) {
- markdown = "# Joi Reference" + markdown.split('
')[1];
+ var versionMatcher = /^# ([\d\.xX]*)/g;
+ var match = versionMatcher.exec(markdown);
+ if (match) {
+ console.log('Joi version: '+match[1]);
+ joiVersion = match[1];
+ }
resolve(markdown);
});
};
@@ -97,7 +119,6 @@ var createSearchIndex = function (markdown) {
});
};
-
var generateHtml = function (markdown) {
var payload = {
text: markdown,
@@ -146,7 +167,7 @@ var addDashAnchors = function (text) {
return resolve(text);
});
});
-}
+};
var wrapInDocument = function (text) {
return Q.Promise(function (resolve) {
@@ -170,23 +191,20 @@ var writeFile = function (text) {
});
};
-
-
-
mkdirp(documentsPath, function (err) {
fs.unlink(dbFile, function(error) {
if (!error) {
console.log('Previous database deleted!');
- };
+ }
- db = new sqlite3.Database(dbFile);
+ db = new sqlite3.Database(dbFile);
db.serialize(function () {
db.run("CREATE TABLE searchIndex(id INTEGER PRIMARY KEY, name TEXT, type TEXT, path TEXT);");
db.run("CREATE UNIQUE INDEX anchor ON searchIndex (name, type, path);");
-
fetchRawMarkdown(referenceUrl)
.then(removeHeader)
+ .then(echoVersion)
.then(createSearchIndex)
.then(generateHtml)
.then(replaceUserContent)
@@ -194,7 +212,7 @@ mkdirp(documentsPath, function (err) {
.then(wrapInDocument)
.then(writeFile)
.then(function (markdown) {
- console.log('Generation completed!');
+ console.log('Generation of joi.docset version '+joiVersion+' completed!');
}).catch(function (e) {
console.log(e);
});
diff --git a/package.json b/package.json
index 9dba0a9..95d6c4d 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "joi-docset",
- "version": "1.0.0",
+ "version": "1.1.0",
"description": "Dash docset for joi",
"main": "generate.js",
"scripts": {
@@ -13,6 +13,6 @@
"mkdirp": "^0.5.0",
"q": "^1.0.1",
"request": "^2.36.0",
- "sqlite3": "^2.2.3"
+ "sqlite3": "^3.0.10"
}
}
diff --git a/releases/joi-9.0.1.tgz b/releases/joi-9.0.1.tgz
new file mode 100644
index 0000000..9cb9d30
Binary files /dev/null and b/releases/joi-9.0.1.tgz differ