hdoc-tools 0.9.47 → 0.9.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/hdoc-create.js CHANGED
@@ -1,91 +1,91 @@
1
- (function () {
2
- 'use strict';
3
-
4
- const fs = require('fs-extra'),
5
- path = require('path'),
6
- hdoc = require(path.join(__dirname, 'hdoc-module.js'));
7
-
8
- let doc_id,
9
- processed_links = {},
10
- file_count = 0,
11
- folder_count = 0;
12
-
13
- exports.run = async function (source_path) {
14
-
15
- console.log('Hornbill HDocBook Create', '\n');
16
- console.log('Path:', source_path, '\n');
17
-
18
- // Load the hdocbook-project.json file to get the docId
19
- // use the docId to get the book config
20
- const hdocbook_project_config_path = path.join(source_path, 'hdocbook-project.json');
21
- let hdocbook_project = {};
22
- try {
23
- hdocbook_project = require(hdocbook_project_config_path);
24
- } catch (e) {
25
- console.log(`File not found: ${hdocbook_project_config_path}\n`);
26
- console.log('hdoc create needs to be run in the root of a HDoc Book.\n');
27
- process.exit(1);
28
- }
29
- doc_id = hdocbook_project.docId;
30
-
31
- const book_path = path.join(source_path, doc_id),
32
- hdocbook_path = path.join(book_path, 'hdocbook.json');
33
-
34
- let hdocbook = {};
35
- try {
36
- hdocbook = require(hdocbook_path);
37
- } catch (e) {
38
- console.log(`File not found: ${hdocbook_path}\n`);
39
- console.log('hdoc create needs to be run in the root of a HDoc Book.\n');
40
- process.exit(1);
41
- }
42
-
43
- // Get paths from breadcrumb builder
44
- let nav_paths = hdoc.build_breadcrumbs(hdocbook.navigation.items);
45
- for (const key in nav_paths) {
46
- if (nav_paths.hasOwnProperty(key)) {
47
- for (let i = 0; i < nav_paths[key].length; i++) {
48
- if (!processed_links[nav_paths[key][i].link]) {
49
- nav_paths[key][i].path = path.join(source_path, nav_paths[key][i].link);
50
- await add_doc(nav_paths[key][i]);
51
- }
52
- }
53
- }
54
- }
55
- console.log('\n-----------------------');
56
- console.log(' Docs Creation Summary');
57
- console.log('-----------------------\n');
58
- console.log(` Files Created: ${file_count}`);
59
- console.log(`Folders Created: ${folder_count}\n`);
60
- };
61
-
62
- const add_doc = async function(doc_info) {
63
-
64
- // Does folder exist? Create if not
65
- const folder = path.dirname(doc_info.path);
66
- if (!fs.existsSync(folder)) {
67
- try {
68
- fs.mkdirSync(folder, true);
69
- console.log('Folder created:', folder);
70
- folder_count++;
71
- } catch {
72
- console.log('\nError creating folder', folder, ':', e);
73
- return;
74
- }
75
- }
76
-
77
- // Does file exist? Create if not
78
- if (!fs.existsSync(doc_info.path + '.md') && !fs.existsSync(doc_info.path + '.htm') && !fs.existsSync(doc_info.path + '.html')) {
79
- try {
80
- const file_path = doc_info.path + '.md';
81
- fs.writeFileSync(file_path, `# ${doc_info.text}\n`);
82
- console.log(' File created:', file_path);
83
- processed_links[doc_info.link] = true;
84
- file_count++;
85
- } catch (e) {
86
- console.log('\nError creating file', doc_info.path, ':', e);
87
- }
88
- }
89
- }
90
-
1
+ (function () {
2
+ 'use strict';
3
+
4
+ const fs = require('fs-extra'),
5
+ path = require('path'),
6
+ hdoc = require(path.join(__dirname, 'hdoc-module.js'));
7
+
8
+ let doc_id,
9
+ processed_links = {},
10
+ file_count = 0,
11
+ folder_count = 0;
12
+
13
+ exports.run = async function (source_path) {
14
+
15
+ console.log('Hornbill HDocBook Create', '\n');
16
+ console.log('Path:', source_path, '\n');
17
+
18
+ // Load the hdocbook-project.json file to get the docId
19
+ // use the docId to get the book config
20
+ const hdocbook_project_config_path = path.join(source_path, 'hdocbook-project.json');
21
+ let hdocbook_project = {};
22
+ try {
23
+ hdocbook_project = require(hdocbook_project_config_path);
24
+ } catch (e) {
25
+ console.log(`File not found: ${hdocbook_project_config_path}\n`);
26
+ console.log('hdoc create needs to be run in the root of a HDoc Book.\n');
27
+ process.exit(1);
28
+ }
29
+ doc_id = hdocbook_project.docId;
30
+
31
+ const book_path = path.join(source_path, doc_id),
32
+ hdocbook_path = path.join(book_path, 'hdocbook.json');
33
+
34
+ let hdocbook = {};
35
+ try {
36
+ hdocbook = require(hdocbook_path);
37
+ } catch (e) {
38
+ console.log(`File not found: ${hdocbook_path}\n`);
39
+ console.log('hdoc create needs to be run in the root of a HDoc Book.\n');
40
+ process.exit(1);
41
+ }
42
+
43
+ // Get paths from breadcrumb builder
44
+ let nav_paths = hdoc.build_breadcrumbs(hdocbook.navigation.items);
45
+ for (const key in nav_paths) {
46
+ if (nav_paths.hasOwnProperty(key)) {
47
+ for (let i = 0; i < nav_paths[key].length; i++) {
48
+ if (!processed_links[nav_paths[key][i].link]) {
49
+ nav_paths[key][i].path = path.join(source_path, nav_paths[key][i].link);
50
+ await add_doc(nav_paths[key][i]);
51
+ }
52
+ }
53
+ }
54
+ }
55
+ console.log('\n-----------------------');
56
+ console.log(' Docs Creation Summary');
57
+ console.log('-----------------------\n');
58
+ console.log(` Files Created: ${file_count}`);
59
+ console.log(`Folders Created: ${folder_count}\n`);
60
+ };
61
+
62
+ const add_doc = async function(doc_info) {
63
+
64
+ // Does folder exist? Create if not
65
+ const folder = path.dirname(doc_info.path);
66
+ if (!fs.existsSync(folder)) {
67
+ try {
68
+ fs.mkdirSync(folder, true);
69
+ console.log('Folder created:', folder);
70
+ folder_count++;
71
+ } catch {
72
+ console.log('\nError creating folder', folder, ':', e);
73
+ return;
74
+ }
75
+ }
76
+
77
+ // Does file exist? Create if not
78
+ if (!fs.existsSync(doc_info.path + '.md') && !fs.existsSync(doc_info.path + '.htm') && !fs.existsSync(doc_info.path + '.html')) {
79
+ try {
80
+ const file_path = doc_info.path + '.md';
81
+ fs.writeFileSync(file_path, `# ${doc_info.text}\n`);
82
+ console.log(' File created:', file_path);
83
+ processed_links[doc_info.link] = true;
84
+ file_count++;
85
+ } catch (e) {
86
+ console.log('\nError creating file', doc_info.path, ':', e);
87
+ }
88
+ }
89
+ }
90
+
91
91
  })();
package/hdoc-db.js CHANGED
@@ -1,95 +1,95 @@
1
- (function () {
2
- 'use strict';
3
-
4
- const html2text = require('html-to-text'),
5
- path = require('path'),
6
- hdoc = require(path.join(__dirname, 'hdoc-module.js'));
7
-
8
- exports.create_table = function (db, table_name, columns, virtual, fts5) {
9
- let create_sql = ['CREATE'];
10
- if (virtual) create_sql.push('VIRTUAL');
11
- create_sql.push('TABLE');
12
- create_sql.push(table_name);
13
- if (fts5) create_sql.push('USING fts5(');
14
- else create_sql.push('(');
15
- for (let i = 0; i < columns.length; i++) {
16
- if (i !== 0) create_sql.push(`,${columns[i]}`);
17
- else create_sql.push(columns[i]);
18
- }
19
- create_sql.push(');');
20
- try {
21
- db.exec(create_sql.join('\n'));
22
- return null;
23
- } catch (e) {
24
- return e;
25
- }
26
- };
27
-
28
- exports.insert_record = function (db, table, columns, values) {
29
- let response = {
30
- success: false,
31
- row_id: 0,
32
- error: null
33
- };
34
- let queryProps = [];
35
- queryProps.push(`INSERT INTO ${table}`);
36
- let cols = '(';
37
- let vals = 'VALUES (';
38
- for (let i = 0; i < columns.length; i++) {
39
- if (i === 0) {
40
- cols += `${columns[i].replace('UNINDEXED', '').replace('INTEGER', '').trim()}`;
41
- vals += '?';
42
- } else {
43
- cols += `, ${columns[i].replace('UNINDEXED', '').replace('INTEGER', '').trim()}`;
44
- vals += ', ?';
45
- }
46
- }
47
- cols += ')';
48
- vals += ')';
49
- queryProps.push(cols);
50
- queryProps.push(vals);
51
-
52
- try {
53
- const stmt = db.prepare(queryProps.join(' '));
54
- const info = stmt.run(values);
55
- response.row_id = info.lastInsertRowid;
56
- response.success = true;
57
- } catch (e) {
58
- response.error = e;
59
- }
60
- return response;
61
- };
62
-
63
- exports.transform_html_for_index = function (html_txt) {
64
- let response = {
65
- text: '',
66
- preview: '',
67
- fm_props: {}
68
- };
69
-
70
- // Get frontmatter properties
71
- const fm_headers = hdoc.getHTMLFrontmatterHeader(html_txt);
72
- response.fm_props = fm_headers.fm_properties;
73
-
74
- // Convert HTML into plain text
75
- response.text = html2text.convert(html_txt, {
76
- ignoreHref: true,
77
- ignoreImage: true,
78
- uppercaseHeadings: false,
79
- wordwrap: null
80
- });
81
-
82
- // Convert HTML into preview text
83
- response.preview = html2text.convert(html_txt, {
84
- baseElement: 'p',
85
- ignoreHref: true,
86
- ignoreImage: true,
87
- uppercaseHeadings: false,
88
- wordwrap: null
89
- });
90
- response.preview = hdoc.truncate_string(response.preview, 200, true).replace(/(?:\r\n|\r|\n)/g, ' ');
91
- return response;
92
- };
93
-
94
-
1
+ (function () {
2
+ 'use strict';
3
+
4
+ const html2text = require('html-to-text'),
5
+ path = require('path'),
6
+ hdoc = require(path.join(__dirname, 'hdoc-module.js'));
7
+
8
+ exports.create_table = function (db, table_name, columns, virtual, fts5) {
9
+ let create_sql = ['CREATE'];
10
+ if (virtual) create_sql.push('VIRTUAL');
11
+ create_sql.push('TABLE');
12
+ create_sql.push(table_name);
13
+ if (fts5) create_sql.push('USING fts5(');
14
+ else create_sql.push('(');
15
+ for (let i = 0; i < columns.length; i++) {
16
+ if (i !== 0) create_sql.push(`,${columns[i]}`);
17
+ else create_sql.push(columns[i]);
18
+ }
19
+ create_sql.push(');');
20
+ try {
21
+ db.exec(create_sql.join('\n'));
22
+ return null;
23
+ } catch (e) {
24
+ return e;
25
+ }
26
+ };
27
+
28
+ exports.insert_record = function (db, table, columns, values) {
29
+ let response = {
30
+ success: false,
31
+ row_id: 0,
32
+ error: null
33
+ };
34
+ let queryProps = [];
35
+ queryProps.push(`INSERT INTO ${table}`);
36
+ let cols = '(';
37
+ let vals = 'VALUES (';
38
+ for (let i = 0; i < columns.length; i++) {
39
+ if (i === 0) {
40
+ cols += `${columns[i].replace('UNINDEXED', '').replace('INTEGER', '').trim()}`;
41
+ vals += '?';
42
+ } else {
43
+ cols += `, ${columns[i].replace('UNINDEXED', '').replace('INTEGER', '').trim()}`;
44
+ vals += ', ?';
45
+ }
46
+ }
47
+ cols += ')';
48
+ vals += ')';
49
+ queryProps.push(cols);
50
+ queryProps.push(vals);
51
+
52
+ try {
53
+ const stmt = db.prepare(queryProps.join(' '));
54
+ const info = stmt.run(values);
55
+ response.row_id = info.lastInsertRowid;
56
+ response.success = true;
57
+ } catch (e) {
58
+ response.error = e;
59
+ }
60
+ return response;
61
+ };
62
+
63
+ exports.transform_html_for_index = function (html_txt) {
64
+ let response = {
65
+ text: '',
66
+ preview: '',
67
+ fm_props: {}
68
+ };
69
+
70
+ // Get frontmatter properties
71
+ const fm_headers = hdoc.getHTMLFrontmatterHeader(html_txt);
72
+ response.fm_props = fm_headers.fm_properties;
73
+
74
+ // Convert HTML into plain text
75
+ response.text = html2text.convert(html_txt, {
76
+ ignoreHref: true,
77
+ ignoreImage: true,
78
+ uppercaseHeadings: false,
79
+ wordwrap: null
80
+ });
81
+
82
+ // Convert HTML into preview text
83
+ response.preview = html2text.convert(html_txt, {
84
+ baseElement: 'p',
85
+ ignoreHref: true,
86
+ ignoreImage: true,
87
+ uppercaseHeadings: false,
88
+ wordwrap: null
89
+ });
90
+ response.preview = hdoc.truncate_string(response.preview, 200, true).replace(/(?:\r\n|\r|\n)/g, ' ');
91
+ return response;
92
+ };
93
+
94
+
95
95
  })();
package/hdoc-help.js CHANGED
@@ -1,41 +1,41 @@
1
- (function () {
2
- 'use strict';
3
-
4
- exports.run = function() {
5
-
6
- // STEVE: The purpose of this function is to output information about hdoc arguments
7
- const helpText = `
8
- Command Line Usage
9
-
10
- hdoc <command> [switches]
11
-
12
- Commands
13
-
14
- - build
15
- Performs a local build of the book, and outputs as a ZIP file. Use non-mandatory argument '--set-version 1.2.3' to set the version number of the built book
16
-
17
- - createDocs
18
- Creates folder structure and markdown documents as defined in the HDocBook navigation item links
19
-
20
- - help
21
- Outputs available arguments and switches
22
-
23
- - init
24
- Initializes a new HDocBook project from a template, using runtime input variables
25
-
26
- - serve
27
- Starts a local web server on port 3000, serving the content. Supports a -port N to use a different port
28
-
29
- - stats
30
- Returns statistics regarding the book you are working on. Supports a -v switch for verbose output
31
-
32
- - validate
33
- Validates the book content
34
-
35
- Example
36
-
37
- hdoc stats -v
38
- `;
39
- console.log(helpText);
40
- };
1
+ (function () {
2
+ 'use strict';
3
+
4
+ exports.run = function() {
5
+
6
+ // STEVE: The purpose of this function is to output information about hdoc arguments
7
+ const helpText = `
8
+ Command Line Usage
9
+
10
+ hdoc <command> [switches]
11
+
12
+ Commands
13
+
14
+ - build
15
+ Performs a local build of the book, and outputs as a ZIP file. Use non-mandatory argument '--set-version 1.2.3' to set the version number of the built book
16
+
17
+ - createDocs
18
+ Creates folder structure and markdown documents as defined in the HDocBook navigation item links
19
+
20
+ - help
21
+ Outputs available arguments and switches
22
+
23
+ - init
24
+ Initializes a new HDocBook project from a template, using runtime input variables
25
+
26
+ - serve
27
+ Starts a local web server on port 3000, serving the content. Supports a -port N to use a different port
28
+
29
+ - stats
30
+ Returns statistics regarding the book you are working on. Supports a -v switch for verbose output
31
+
32
+ - validate
33
+ Validates the book content
34
+
35
+ Example
36
+
37
+ hdoc stats -v
38
+ `;
39
+ console.log(helpText);
40
+ };
41
41
  })();
package/hdoc-init.js CHANGED
@@ -9,34 +9,34 @@
9
9
  // Configure prompt module preferences
10
10
  prompt.message = false;
11
11
  const promptProps = [{
12
- name: 'id',
13
- description: 'Document ID',
14
- validator: /^[a-z][a-z0-9-]+[a-z0-9]$/,
15
- warning: 'Document ID must only contain lower case letters, decimal digits and dashes.',
16
- required: true
17
- },
18
- {
19
- name: 'title',
20
- description: 'Title',
21
- required: true
22
- },
23
- {
24
- name: 'description',
25
- description: 'Description',
26
- required: true
27
- },
28
- {
29
- name: 'version',
30
- description: 'Initial Version',
31
- validator: /^[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}$/,
32
- warning: 'Version must formatted using semantic versioning - major.minor.patch, eg: 0.1.2',
33
- required: true
34
- },
35
- {
36
- name: 'author',
37
- description: 'Package Author',
38
- required: true
39
- }
12
+ name: 'id',
13
+ description: 'Document ID',
14
+ validator: /^[a-z][a-z0-9-]+[a-z0-9]$/,
15
+ warning: 'Document ID must only contain lower case letters, decimal digits and dashes.',
16
+ required: true
17
+ },
18
+ {
19
+ name: 'title',
20
+ description: 'Title',
21
+ required: true
22
+ },
23
+ {
24
+ name: 'description',
25
+ description: 'Description',
26
+ required: true
27
+ },
28
+ {
29
+ name: 'version',
30
+ description: 'Initial Version',
31
+ validator: /^[0-9]{1,3}[.][0-9]{1,3}[.][0-9]{1,3}$/,
32
+ warning: 'Version must formatted using semantic versioning - major.minor.patch, eg: 0.1.2',
33
+ required: true
34
+ },
35
+ {
36
+ name: 'author',
37
+ description: 'Package Author',
38
+ required: true
39
+ }
40
40
  ];
41
41
 
42
42
  const createBook = function (server_path, source_path, docProps) {
@@ -108,6 +108,11 @@
108
108
  console.log('Updated:', packageFilePath);
109
109
  });
110
110
 
111
+ // Rename gitignore to .gitignore
112
+ const gitignorePath = path.join(source_path, 'gitignore');
113
+ const newGitignorePath = path.join(source_path, '.gitignore');
114
+ fs.renameSync(gitignorePath, newGitignorePath);
115
+
111
116
  } else {
112
117
  console.error('Template path does not exist:', templatePath);
113
118
  process.exit(1);
@@ -123,8 +128,8 @@
123
128
  // those files into place, with a few variable replacements.
124
129
 
125
130
  console.log('Hornbill HDocBook Init', '\r\n');
126
-
127
- const curr_dirs = source_path.split(path.sep);
131
+
132
+ const curr_dirs = source_path.split(path.sep);
128
133
  let doc_id = curr_dirs[curr_dirs.length - 1];
129
134
 
130
135
  prompt.start();