You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
1.8 KiB
101 lines
1.8 KiB
import slugify from 'slugify'
|
|
import { marked } from 'marked'
|
|
import * as fs from 'fs'
|
|
|
|
/**
|
|
* etaHelpers
|
|
*
|
|
* collection for helpers to extend eta
|
|
*
|
|
*
|
|
*/
|
|
|
|
/**
|
|
* asset -
|
|
*
|
|
* @param {String} path
|
|
* @param {String} [prefix='/public']
|
|
*
|
|
*/
|
|
function asset(path, prefix = '/public')
|
|
{
|
|
// getting basePath
|
|
const basePath = path
|
|
|
|
// path to mix-manifest
|
|
file = basePath + 'mix-manifest.json';
|
|
|
|
if (!fs.existsSync(file)) {
|
|
//const manifest = file_get_contents($file);
|
|
//const files = json_decode(manifest, true);
|
|
|
|
//if (files[prefix + path]) {
|
|
// path = str_replace(prefix, '', files[prefix + path]);
|
|
//}
|
|
}
|
|
|
|
return path
|
|
}
|
|
|
|
/**
|
|
* templateClass - parse template name to css-classname,
|
|
* use prefix, default is "page"
|
|
*
|
|
* @param {Object} entity
|
|
* @param {String} [prefix='page']
|
|
* @return {String}
|
|
*
|
|
*/
|
|
function templateClass(entity, prefix = 'page') {
|
|
if (entity.data && entity.data.template) {
|
|
prefix += '-' + entity.data.template
|
|
}
|
|
|
|
return prefix
|
|
}
|
|
|
|
|
|
/**
|
|
* isHome - check if entity is home,
|
|
* checks for permalink
|
|
*
|
|
* @param {Object} entity
|
|
* @return {Boolean}
|
|
*
|
|
*/
|
|
function isHome(entity) {
|
|
|
|
let result = false
|
|
|
|
if (entity.data && entity.data.permalink && entity.data.permalink === "/") {
|
|
result = true
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
|
|
/**
|
|
* injectStore
|
|
*
|
|
*
|
|
* @param {String} name
|
|
* @return {Object}
|
|
*
|
|
*/
|
|
async function injectStore(name) {
|
|
|
|
const path = './../stores/' + name + '.js'
|
|
|
|
// if file
|
|
//if (!fs.existsSync(path)) {
|
|
//throw new Error(name + ' not exists!')
|
|
//}
|
|
|
|
const StoreClass = await import(path)
|
|
const store = new StoreClass.default()
|
|
|
|
return store
|
|
}
|
|
|
|
export { asset, templateClass, isHome, injectStore } |