From 63ab1c5f180de7df845b35a43c627b7092a040c6 Mon Sep 17 00:00:00 2001 From: ptrckc Date: Fri, 15 Jul 2016 14:53:42 -0500 Subject: [PATCH 1/3] Add node_modules directory to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) 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 From a1fd81bdd763913925a079654c187c9f115d08ed Mon Sep 17 00:00:00 2001 From: ptrckc Date: Fri, 15 Jul 2016 15:09:49 -0500 Subject: [PATCH 2/3] Support for latest joi api documentation --- README.md | 7 +++++-- generate.js | 44 +++++++++++++++++++++++++++++++------------- package.json | 4 ++-- 3 files changed, 38 insertions(+), 17 deletions(-) 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" } } From dc89448519131253b4055a40adb5efa8e6ec5afe Mon Sep 17 00:00:00 2001 From: ptrckc Date: Fri, 15 Jul 2016 15:11:54 -0500 Subject: [PATCH 3/3] Release 9.0.1 --- releases/joi-9.0.1.tgz | Bin 0 -> 30173 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 releases/joi-9.0.1.tgz diff --git a/releases/joi-9.0.1.tgz b/releases/joi-9.0.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..9cb9d30485b6eea2a49983e0aa07c7efa0a45880 GIT binary patch literal 30173 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