Compare commits
8 Commits
Author | SHA1 | Date | |
---|---|---|---|
fef292d81f | |||
34cfe010f7 | |||
9297711793 | |||
7c0e22ff02 | |||
8041ccdada | |||
4eebed4847 | |||
7478a3739f | |||
edd407ed21 |
@ -1,5 +1,10 @@
|
||||
# gitzone standard
|
||||
image: hosttoday/ht-docker-node:npmts
|
||||
image: hosttoday/ht-docker-node:npmci
|
||||
|
||||
cache:
|
||||
paths:
|
||||
- .yarn/
|
||||
key: "$CI_BUILD_STAGE"
|
||||
|
||||
stages:
|
||||
- test
|
||||
@ -51,10 +56,13 @@ trigger:
|
||||
- docker
|
||||
|
||||
pages:
|
||||
image: hosttoday/ht-docker-node:npmpage
|
||||
image: hosttoday/ht-docker-node:npmci
|
||||
stage: pages
|
||||
script:
|
||||
- npmci command yarn global add npmpage
|
||||
- npmci command npmpage --publish gitlab
|
||||
tags:
|
||||
- docker
|
||||
only:
|
||||
- tags
|
||||
artifacts:
|
||||
|
15
README.md
15
README.md
@ -2,10 +2,10 @@
|
||||
handlebars with better fs support
|
||||
|
||||
## Availabililty
|
||||
[](https://www.npmjs.com/package/smarthbs)
|
||||
[](https://GitLab.com/pushrocks/smarthbs)
|
||||
[](https://github.com/pushrocks/smarthbs)
|
||||
[](https://pushrocks.gitlab.io/smarthbs/)
|
||||
[](https://www.npmjs.com/package/smarthbs)
|
||||
[](https://GitLab.com/pushrocks/smarthbs)
|
||||
[](https://github.com/pushrocks/smarthbs)
|
||||
[](https://pushrocks.gitlab.io/smarthbs/)
|
||||
|
||||
## Status for master
|
||||
[](https://GitLab.com/pushrocks/smarthbs/commits/master)
|
||||
@ -21,6 +21,8 @@ handlebars with better fs support
|
||||
## Usage
|
||||
Use TypeScript for best in class instellisense.
|
||||
|
||||
For further information read the linked docs at the top of this README.
|
||||
|
||||
> Note: Why did we decide against a class based architecture?
|
||||
Easy: handlebars.js is already pretty determined how things are handled internally, namely a global partial template registry
|
||||
It doesn't make sense to then introduce a scoped partial template approach.
|
||||
@ -35,4 +37,7 @@ smarthbs.registerPartialDir(testPartialDir)
|
||||
smarthbs.compileDirectory(testHbsDir, testResultDir, 'data.json')
|
||||
```
|
||||
|
||||
[](https://push.rocks)
|
||||
> MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh)
|
||||
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy.html)
|
||||
|
||||
[](https://push.rocks)
|
||||
|
18
dist/index.d.ts
vendored
18
dist/index.d.ts
vendored
@ -1,15 +1,5 @@
|
||||
/// <reference types="handlebars" />
|
||||
import 'typings-global';
|
||||
export declare type TTemplateStringType = 'filePath' | 'code';
|
||||
/**
|
||||
* registers a directory of partials to make them available within handlebars compilation
|
||||
*/
|
||||
export declare let registerPartialDir: (dirPathArg: string) => void;
|
||||
/**
|
||||
* compiles a directory and outputs it
|
||||
*/
|
||||
export declare let compileDirectory: (originDirPathArg: string, destinationDirPathArg: string, dataFileNameArg: string) => Promise<void>;
|
||||
/**
|
||||
* get a template for a file on disk
|
||||
*/
|
||||
export declare let getTemplateForFile: (filePathArg: string) => Promise<HandlebarsTemplateDelegate>;
|
||||
export * from './smarthbs.compile';
|
||||
export * from './smarthbs.helpers';
|
||||
export * from './smarthbs.partials';
|
||||
export * from './smarthbs.template';
|
||||
|
60
dist/index.js
vendored
60
dist/index.js
vendored
@ -1,52 +1,10 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
require("typings-global");
|
||||
const handlebars = require("handlebars");
|
||||
const smartfile = require("smartfile");
|
||||
const path = require("path");
|
||||
/**
|
||||
* registers a directory of partials to make them available within handlebars compilation
|
||||
*/
|
||||
exports.registerPartialDir = (dirPathArg) => {
|
||||
smartfile.fs.listFileTree(dirPathArg, '**/*.hbs').then(hbsFileArrayArg => {
|
||||
for (let hbsFilePath of hbsFileArrayArg) {
|
||||
let parsedPath = path.parse(hbsFilePath);
|
||||
let hbsFileString = smartfile.fs.toStringSync(path.join(dirPathArg, hbsFilePath));
|
||||
if (parsedPath.dir === '') {
|
||||
parsedPath.name = '/' + parsedPath.name;
|
||||
}
|
||||
let partialName = `partials${parsedPath.dir}${parsedPath.name}`;
|
||||
handlebars.registerPartial(partialName, hbsFileString);
|
||||
}
|
||||
});
|
||||
};
|
||||
/**
|
||||
* compiles a directory and outputs it
|
||||
*/
|
||||
exports.compileDirectory = (originDirPathArg, destinationDirPathArg, dataFileNameArg) => __awaiter(this, void 0, void 0, function* () {
|
||||
let hbsFilePathArray = smartfile.fs.listFilesSync(originDirPathArg, /.hbs/);
|
||||
let data = smartfile.fs.toObjectSync(path.join(originDirPathArg, dataFileNameArg));
|
||||
for (let hbsFilePath of hbsFilePathArray) {
|
||||
let parsedPath = path.parse(hbsFilePath);
|
||||
let hbsFileString = smartfile.fs.toStringSync(path.join(originDirPathArg, hbsFilePath));
|
||||
let template = handlebars.compile(hbsFileString);
|
||||
let output = template(data);
|
||||
console.log('hi ' + output + ' hi');
|
||||
smartfile.memory.toFsSync(output, path.join(destinationDirPathArg, parsedPath.name + '.html'));
|
||||
}
|
||||
});
|
||||
/**
|
||||
* get a template for a file on disk
|
||||
*/
|
||||
exports.getTemplateForFile = (filePathArg) => __awaiter(this, void 0, void 0, function* () {
|
||||
let filePathAbsolute = path.resolve(filePathArg);
|
||||
return handlebars.compile(smartfile.fs.toStringSync(filePathAbsolute));
|
||||
});
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwwQkFBdUI7QUFDdkIseUNBQXdDO0FBQ3hDLHVDQUFzQztBQUN0Qyw2QkFBNEI7QUFHNUI7O0dBRUc7QUFDUSxRQUFBLGtCQUFrQixHQUFHLENBQUMsVUFBa0I7SUFDakQsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlO1FBQ3BFLEdBQUcsQ0FBQyxDQUFDLElBQUksV0FBVyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUM7WUFDeEMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUN4QyxJQUFJLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFBO1lBQ2pGLEVBQUUsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDMUIsVUFBVSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQTtZQUN6QyxDQUFDO1lBQ0QsSUFBSSxXQUFXLEdBQUcsV0FBVyxVQUFVLENBQUMsR0FBRyxHQUFHLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtZQUMvRCxVQUFVLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQTtRQUN4RCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUE7QUFFRDs7R0FFRztBQUNRLFFBQUEsZ0JBQWdCLEdBQUcsQ0FDNUIsZ0JBQXdCLEVBQ3hCLHFCQUE2QixFQUM3QixlQUF1QjtJQUV2QixJQUFJLGdCQUFnQixHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzNFLElBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQTtJQUNsRixHQUFHLENBQUMsQ0FBQyxJQUFJLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUN4QyxJQUFJLGFBQWEsR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDdkYsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNoRCxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDM0IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFBO1FBQ25DLFNBQVMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNoRyxDQUFDO0FBQ0gsQ0FBQyxDQUFBLENBQUE7QUFFRDs7R0FFRztBQUNRLFFBQUEsa0JBQWtCLEdBQUcsQ0FBTyxXQUFtQjtJQUN4RCxJQUFJLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDaEQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFBO0FBQ3hFLENBQUMsQ0FBQSxDQUFBIn0=
|
||||
function __export(m) {
|
||||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||
}
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
__export(require("./smarthbs.compile"));
|
||||
__export(require("./smarthbs.helpers"));
|
||||
__export(require("./smarthbs.partials"));
|
||||
__export(require("./smarthbs.template"));
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUdBLHdDQUFrQztBQUNsQyx3Q0FBa0M7QUFDbEMseUNBQW1DO0FBQ25DLHlDQUFtQyJ9
|
4
dist/smarthbs.compile.d.ts
vendored
Normal file
4
dist/smarthbs.compile.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
/**
|
||||
* compiles a directory and outputs it
|
||||
*/
|
||||
export declare let compileDirectory: (originDirPathArg: string, destinationDirPathArg: string, dataFileNameArg: string) => Promise<void>;
|
27
dist/smarthbs.compile.js
vendored
Normal file
27
dist/smarthbs.compile.js
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const plugins = require("./smarthbs.plugins");
|
||||
/**
|
||||
* compiles a directory and outputs it
|
||||
*/
|
||||
exports.compileDirectory = (originDirPathArg, destinationDirPathArg, dataFileNameArg) => __awaiter(this, void 0, void 0, function* () {
|
||||
let hbsFilePathArray = plugins.smartfile.fs.listFilesSync(originDirPathArg, /.hbs/);
|
||||
let data = plugins.smartfile.fs.toObjectSync(plugins.path.join(originDirPathArg, dataFileNameArg));
|
||||
for (let hbsFilePath of hbsFilePathArray) {
|
||||
let parsedPath = plugins.path.parse(hbsFilePath);
|
||||
let hbsFileString = plugins.smartfile.fs.toStringSync(plugins.path.join(originDirPathArg, hbsFilePath));
|
||||
let template = plugins.handlebars.compile(hbsFileString);
|
||||
let output = template(data);
|
||||
console.log('hi ' + output + ' hi');
|
||||
plugins.smartfile.memory.toFsSync(output, plugins.path.join(destinationDirPathArg, parsedPath.name + '.html'));
|
||||
}
|
||||
});
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMuY29tcGlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0aGJzLmNvbXBpbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLDhDQUE2QztBQUU3Qzs7R0FFRztBQUNRLFFBQUEsZ0JBQWdCLEdBQUcsQ0FDNUIsZ0JBQXdCLEVBQ3hCLHFCQUE2QixFQUM3QixlQUF1QjtJQUV2QixJQUFJLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLENBQUMsQ0FBQTtJQUNuRixJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQTtJQUNsRyxHQUFHLENBQUMsQ0FBQyxJQUFJLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7UUFDekMsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDaEQsSUFBSSxhQUFhLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFDdkcsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUE7UUFDeEQsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQzNCLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxLQUFLLENBQUMsQ0FBQTtRQUNuQyxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLFVBQVUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQTtJQUNoSCxDQUFDO0FBQ0gsQ0FBQyxDQUFBLENBQUEifQ==
|
2
dist/smarthbs.helpers.d.ts
vendored
Normal file
2
dist/smarthbs.helpers.d.ts
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
/// <reference types="handlebars" />
|
||||
export declare let registerHelper: typeof Handlebars.registerHelper;
|
5
dist/smarthbs.helpers.js
vendored
Normal file
5
dist/smarthbs.helpers.js
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const plugins = require("./smarthbs.plugins");
|
||||
exports.registerHelper = plugins.handlebars.registerHelper;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMuaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0aGJzLmhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw4Q0FBNkM7QUFFbEMsUUFBQSxjQUFjLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUEifQ==
|
4
dist/smarthbs.partials.d.ts
vendored
Normal file
4
dist/smarthbs.partials.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
/**
|
||||
* registers a directory of partials to make them available within handlebars compilation
|
||||
*/
|
||||
export declare let registerPartialDir: (dirPathArg: string) => Promise<{}>;
|
23
dist/smarthbs.partials.js
vendored
Normal file
23
dist/smarthbs.partials.js
vendored
Normal file
@ -0,0 +1,23 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const plugins = require("./smarthbs.plugins");
|
||||
/**
|
||||
* registers a directory of partials to make them available within handlebars compilation
|
||||
*/
|
||||
exports.registerPartialDir = (dirPathArg) => {
|
||||
let done = plugins.smartq.defer();
|
||||
plugins.smartfile.fs.listFileTree(dirPathArg, '**/*.hbs').then(hbsFileArrayArg => {
|
||||
for (let hbsFilePath of hbsFileArrayArg) {
|
||||
let parsedPath = plugins.path.parse(hbsFilePath);
|
||||
let hbsFileString = plugins.smartfile.fs.toStringSync(plugins.path.join(dirPathArg, hbsFilePath));
|
||||
if (parsedPath.dir === '') {
|
||||
parsedPath.name = '/' + parsedPath.name;
|
||||
}
|
||||
let partialName = `partials${parsedPath.dir}${parsedPath.name}`;
|
||||
plugins.handlebars.registerPartial(partialName, hbsFileString);
|
||||
done.resolve();
|
||||
}
|
||||
});
|
||||
return done.promise;
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMucGFydGlhbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGhicy5wYXJ0aWFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDhDQUE2QztBQUU3Qzs7R0FFRztBQUNRLFFBQUEsa0JBQWtCLEdBQUcsQ0FBQyxVQUFrQjtJQUNqRCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO0lBQ2pDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWU7UUFDNUUsR0FBRyxDQUFDLENBQUMsSUFBSSxXQUFXLElBQUksZUFBZSxDQUFDLENBQUMsQ0FBQztZQUN4QyxJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQTtZQUNoRCxJQUFJLGFBQWEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUE7WUFDakcsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUMxQixVQUFVLENBQUMsSUFBSSxHQUFHLEdBQUcsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFBO1lBQ3pDLENBQUM7WUFDRCxJQUFJLFdBQVcsR0FBRyxXQUFXLFVBQVUsQ0FBQyxHQUFHLEdBQUcsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQy9ELE9BQU8sQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxhQUFhLENBQUMsQ0FBQTtZQUM5RCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7UUFDaEIsQ0FBQztJQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7QUFDckIsQ0FBQyxDQUFBIn0=
|
6
dist/smarthbs.plugins.d.ts
vendored
Normal file
6
dist/smarthbs.plugins.d.ts
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
import 'typings-global';
|
||||
import * as handlebars from 'handlebars';
|
||||
import * as smartfile from 'smartfile';
|
||||
import * as smartq from 'smartq';
|
||||
import * as path from 'path';
|
||||
export { handlebars, smartfile, smartq, path };
|
12
dist/smarthbs.plugins.js
vendored
Normal file
12
dist/smarthbs.plugins.js
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
require("typings-global");
|
||||
const handlebars = require("handlebars");
|
||||
exports.handlebars = handlebars;
|
||||
const smartfile = require("smartfile");
|
||||
exports.smartfile = smartfile;
|
||||
const smartq = require("smartq");
|
||||
exports.smartq = smartq;
|
||||
const path = require("path");
|
||||
exports.path = path;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL3NtYXJ0aGJzLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQkFBdUI7QUFDdkIseUNBQXdDO0FBTXRDLGdDQUFVO0FBTFosdUNBQXNDO0FBTXBDLDhCQUFTO0FBTFgsaUNBQWdDO0FBTTlCLHdCQUFNO0FBTFIsNkJBQTRCO0FBTTFCLG9CQUFJIn0=
|
5
dist/smarthbs.template.d.ts
vendored
Normal file
5
dist/smarthbs.template.d.ts
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
/// <reference types="handlebars" />
|
||||
/**
|
||||
* get a template for a file on disk
|
||||
*/
|
||||
export declare let getTemplateForFile: (filePathArg: string) => Promise<HandlebarsTemplateDelegate>;
|
19
dist/smarthbs.template.js
vendored
Normal file
19
dist/smarthbs.template.js
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||
});
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const plugins = require("./smarthbs.plugins");
|
||||
/**
|
||||
* get a template for a file on disk
|
||||
*/
|
||||
exports.getTemplateForFile = (filePathArg) => __awaiter(this, void 0, void 0, function* () {
|
||||
let filePathAbsolute = plugins.path.resolve(filePathArg);
|
||||
return plugins.handlebars.compile(plugins.smartfile.fs.toStringSync(filePathAbsolute));
|
||||
});
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRoYnMudGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9zbWFydGhicy50ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsOENBQTZDO0FBRTdDOztHQUVHO0FBQ1EsUUFBQSxrQkFBa0IsR0FBRyxDQUFPLFdBQW1CO0lBQ3hELElBQUksZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7SUFDeEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUE7QUFDeEYsQ0FBQyxDQUFBLENBQUEifQ==
|
7
npmextra.json
Normal file
7
npmextra.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"npmci": {
|
||||
"globalNpmTools": [
|
||||
"npmts"
|
||||
]
|
||||
}
|
||||
}
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "smarthbs",
|
||||
"version": "1.0.4",
|
||||
"version": "1.0.7",
|
||||
"description": "handlebars with better fs support",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
@ -21,10 +21,10 @@
|
||||
},
|
||||
"homepage": "https://gitlab.com/pkunz/smarthbs#README",
|
||||
"dependencies": {
|
||||
"@types/handlebars": "^4.0.31",
|
||||
"@types/handlebars": "^4.0.32",
|
||||
"handlebars": "^4.0.6",
|
||||
"smartfile": "^4.1.4",
|
||||
"smartq": "^1.0.4",
|
||||
"smartfile": "^4.1.8",
|
||||
"smartq": "^1.1.1",
|
||||
"typings-global": "^1.0.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
@ -1,4 +1,5 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
require("typings-test");
|
||||
const smarthbs = require("../dist/index");
|
||||
const path = require("path");
|
||||
@ -13,4 +14,4 @@ describe('smarthbs', function () {
|
||||
smarthbs.compileDirectory(testHbsDir, testResultDir, 'data.json');
|
||||
});
|
||||
});
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdCQUFxQjtBQUNyQiwwQ0FBeUM7QUFDekMsNkJBQTRCO0FBRTVCLElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFBO0FBQ3RELElBQUksY0FBYyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFBO0FBQ3RELElBQUksYUFBYSxHQUFHLElBQUksQ0FBRSxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFBO0FBQ3ZELFFBQVEsQ0FBQyxVQUFVLEVBQUU7SUFFakIsRUFBRSxDQUFDLHdCQUF3QixFQUFFO1FBQ3pCLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUMvQyxDQUFDLENBQUMsQ0FBQTtJQUVGLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRTtRQUM3QixRQUFRLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUMsQ0FBQTtJQUNyRSxDQUFDLENBQUMsQ0FBQTtBQUVOLENBQUMsQ0FBQyxDQUFBIn0=
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx3QkFBcUI7QUFDckIsMENBQXlDO0FBQ3pDLDZCQUE0QjtBQUU1QixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQTtBQUN0RCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQTtBQUN0RCxJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQTtBQUN2RCxRQUFRLENBQUMsVUFBVSxFQUFFO0lBRWpCLEVBQUUsQ0FBQyx3QkFBd0IsRUFBRTtRQUN6QixRQUFRLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUE7SUFDL0MsQ0FBQyxDQUFDLENBQUE7SUFFRixFQUFFLENBQUMsNEJBQTRCLEVBQUU7UUFDN0IsUUFBUSxDQUFDLGdCQUFnQixDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDckUsQ0FBQyxDQUFDLENBQUE7QUFFTixDQUFDLENBQUMsQ0FBQSJ9
|
53
ts/index.ts
53
ts/index.ts
@ -1,50 +1,7 @@
|
||||
import 'typings-global'
|
||||
import * as handlebars from 'handlebars'
|
||||
import * as smartfile from 'smartfile'
|
||||
import * as path from 'path'
|
||||
import * as plugins from './smarthbs.plugins'
|
||||
export type TTemplateStringType = 'filePath' | 'code'
|
||||
|
||||
/**
|
||||
* registers a directory of partials to make them available within handlebars compilation
|
||||
*/
|
||||
export let registerPartialDir = (dirPathArg: string) => {
|
||||
smartfile.fs.listFileTree(dirPathArg, '**/*.hbs').then(hbsFileArrayArg => {
|
||||
for (let hbsFilePath of hbsFileArrayArg) {
|
||||
let parsedPath = path.parse(hbsFilePath)
|
||||
let hbsFileString = smartfile.fs.toStringSync(path.join(dirPathArg, hbsFilePath))
|
||||
if (parsedPath.dir === '') {
|
||||
parsedPath.name = '/' + parsedPath.name
|
||||
}
|
||||
let partialName = `partials${parsedPath.dir}${parsedPath.name}`
|
||||
handlebars.registerPartial(partialName, hbsFileString)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* compiles a directory and outputs it
|
||||
*/
|
||||
export let compileDirectory = async (
|
||||
originDirPathArg: string,
|
||||
destinationDirPathArg: string,
|
||||
dataFileNameArg: string
|
||||
) => {
|
||||
let hbsFilePathArray = smartfile.fs.listFilesSync(originDirPathArg, /.hbs/)
|
||||
let data = smartfile.fs.toObjectSync(path.join(originDirPathArg, dataFileNameArg))
|
||||
for (let hbsFilePath of hbsFilePathArray) {
|
||||
let parsedPath = path.parse(hbsFilePath)
|
||||
let hbsFileString = smartfile.fs.toStringSync(path.join(originDirPathArg, hbsFilePath))
|
||||
let template = handlebars.compile(hbsFileString)
|
||||
let output = template(data)
|
||||
console.log('hi ' + output + ' hi')
|
||||
smartfile.memory.toFsSync(output, path.join(destinationDirPathArg, parsedPath.name + '.html'))
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* get a template for a file on disk
|
||||
*/
|
||||
export let getTemplateForFile = async (filePathArg: string) => {
|
||||
let filePathAbsolute = path.resolve(filePathArg)
|
||||
return handlebars.compile(smartfile.fs.toStringSync(filePathAbsolute))
|
||||
}
|
||||
export * from './smarthbs.compile'
|
||||
export * from './smarthbs.helpers'
|
||||
export * from './smarthbs.partials'
|
||||
export * from './smarthbs.template'
|
||||
|
21
ts/smarthbs.compile.ts
Normal file
21
ts/smarthbs.compile.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import * as plugins from './smarthbs.plugins'
|
||||
|
||||
/**
|
||||
* compiles a directory and outputs it
|
||||
*/
|
||||
export let compileDirectory = async (
|
||||
originDirPathArg: string,
|
||||
destinationDirPathArg: string,
|
||||
dataFileNameArg: string
|
||||
) => {
|
||||
let hbsFilePathArray = plugins.smartfile.fs.listFilesSync(originDirPathArg, /.hbs/)
|
||||
let data = plugins.smartfile.fs.toObjectSync(plugins.path.join(originDirPathArg, dataFileNameArg))
|
||||
for (let hbsFilePath of hbsFilePathArray) {
|
||||
let parsedPath = plugins.path.parse(hbsFilePath)
|
||||
let hbsFileString = plugins.smartfile.fs.toStringSync(plugins.path.join(originDirPathArg, hbsFilePath))
|
||||
let template = plugins.handlebars.compile(hbsFileString)
|
||||
let output = template(data)
|
||||
console.log('hi ' + output + ' hi')
|
||||
plugins.smartfile.memory.toFsSync(output, plugins.path.join(destinationDirPathArg, parsedPath.name + '.html'))
|
||||
}
|
||||
}
|
4
ts/smarthbs.helpers.ts
Normal file
4
ts/smarthbs.helpers.ts
Normal file
@ -0,0 +1,4 @@
|
||||
import * as plugins from './smarthbs.plugins'
|
||||
|
||||
export let registerHelper = plugins.handlebars.registerHelper
|
||||
|
21
ts/smarthbs.partials.ts
Normal file
21
ts/smarthbs.partials.ts
Normal file
@ -0,0 +1,21 @@
|
||||
import * as plugins from './smarthbs.plugins'
|
||||
|
||||
/**
|
||||
* registers a directory of partials to make them available within handlebars compilation
|
||||
*/
|
||||
export let registerPartialDir = (dirPathArg: string) => {
|
||||
let done = plugins.smartq.defer()
|
||||
plugins.smartfile.fs.listFileTree(dirPathArg, '**/*.hbs').then(hbsFileArrayArg => {
|
||||
for (let hbsFilePath of hbsFileArrayArg) {
|
||||
let parsedPath = plugins.path.parse(hbsFilePath)
|
||||
let hbsFileString = plugins.smartfile.fs.toStringSync(plugins.path.join(dirPathArg, hbsFilePath))
|
||||
if (parsedPath.dir === '') {
|
||||
parsedPath.name = '/' + parsedPath.name
|
||||
}
|
||||
let partialName = `partials${parsedPath.dir}${parsedPath.name}`
|
||||
plugins.handlebars.registerPartial(partialName, hbsFileString)
|
||||
done.resolve()
|
||||
}
|
||||
})
|
||||
return done.promise
|
||||
}
|
12
ts/smarthbs.plugins.ts
Normal file
12
ts/smarthbs.plugins.ts
Normal file
@ -0,0 +1,12 @@
|
||||
import 'typings-global'
|
||||
import * as handlebars from 'handlebars'
|
||||
import * as smartfile from 'smartfile'
|
||||
import * as smartq from 'smartq'
|
||||
import * as path from 'path'
|
||||
|
||||
export {
|
||||
handlebars,
|
||||
smartfile,
|
||||
smartq,
|
||||
path
|
||||
}
|
9
ts/smarthbs.template.ts
Normal file
9
ts/smarthbs.template.ts
Normal file
@ -0,0 +1,9 @@
|
||||
import * as plugins from './smarthbs.plugins'
|
||||
|
||||
/**
|
||||
* get a template for a file on disk
|
||||
*/
|
||||
export let getTemplateForFile = async (filePathArg: string) => {
|
||||
let filePathAbsolute = plugins.path.resolve(filePathArg)
|
||||
return plugins.handlebars.compile(plugins.smartfile.fs.toStringSync(filePathAbsolute))
|
||||
}
|
28
yarn.lock
28
yarn.lock
@ -8,9 +8,9 @@
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/handlebars@^4.0.31":
|
||||
version "4.0.31"
|
||||
resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.31.tgz#a7fba66fafe42713aee88eeca8db91192efe6e72"
|
||||
"@types/handlebars@^4.0.32":
|
||||
version "4.0.32"
|
||||
resolved "https://registry.yarnpkg.com/@types/handlebars/-/handlebars-4.0.32.tgz#637e8d945a9354aab47df7125005490fe9f8e592"
|
||||
|
||||
"@types/mocha@^2.2.31":
|
||||
version "2.2.39"
|
||||
@ -201,9 +201,9 @@ isarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
|
||||
js-yaml@^3.7.0:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.1.tgz#782ba50200be7b9e5a8537001b7804db3ad02628"
|
||||
js-yaml@^3.8.2:
|
||||
version "3.8.2"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.8.2.tgz#02d3e2c0f6beab20248d412c352203827d786721"
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
esprima "^3.1.1"
|
||||
@ -329,31 +329,31 @@ shelljs@^0.7.4:
|
||||
interpret "^1.0.0"
|
||||
rechoir "^0.6.2"
|
||||
|
||||
smartfile@^4.1.4:
|
||||
version "4.1.6"
|
||||
resolved "https://registry.yarnpkg.com/smartfile/-/smartfile-4.1.6.tgz#d71026aefef99233c56766c3c6c11afc41a19b3a"
|
||||
smartfile@^4.1.8:
|
||||
version "4.1.8"
|
||||
resolved "https://registry.yarnpkg.com/smartfile/-/smartfile-4.1.8.tgz#4f568537de0cd1174ce3086036ac9df26f860330"
|
||||
dependencies:
|
||||
"@types/fs-extra" "0.x.x"
|
||||
"@types/vinyl" "^2.0.0"
|
||||
fs-extra "^2.0.0"
|
||||
glob "^7.1.1"
|
||||
js-yaml "^3.7.0"
|
||||
js-yaml "^3.8.2"
|
||||
require-reload "0.2.2"
|
||||
smartpath "^3.2.7"
|
||||
smartq "^1.0.4"
|
||||
smartpath "^3.2.8"
|
||||
smartq "^1.1.1"
|
||||
smartrequest "^1.0.4"
|
||||
typings-global "^1.0.14"
|
||||
vinyl "^2.0.1"
|
||||
vinyl-file "^3.0.0"
|
||||
|
||||
smartpath@^3.2.7:
|
||||
smartpath@^3.2.8:
|
||||
version "3.2.8"
|
||||
resolved "https://registry.yarnpkg.com/smartpath/-/smartpath-3.2.8.tgz#4834bd3a8bae2295baacadba23c87a501952f940"
|
||||
dependencies:
|
||||
home "^1.0.1"
|
||||
typings-global "^1.0.14"
|
||||
|
||||
smartq@^1.0.4, smartq@^1.1.0:
|
||||
smartq@^1.1.0, smartq@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.yarnpkg.com/smartq/-/smartq-1.1.1.tgz#efb358705260d41ae18aef7ffd815f7b6fe17dd3"
|
||||
dependencies:
|
||||
|
Reference in New Issue
Block a user