mjml-core
Advanced tools
Comparing version 3.1.1 to 3.2.0-beta.1
@@ -6,2 +6,3 @@ 'use strict'; | ||
}); | ||
exports.includes = undefined; | ||
@@ -12,30 +13,74 @@ var _fs = require('fs'); | ||
var _path = require('path'); | ||
var _path2 = _interopRequireDefault(_path); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var includes = /<mj-include\s+path=['"](.*[\.mjml]?)['"]\s*(\/>|>\s*<\/mj-include>)/g; | ||
var includes = exports.includes = /<mj-include\s+path=['"](.*[\.mjml]?)['"]\s*(\/>|>\s*<\/mj-include>)/g; | ||
var getContent = function getContent(input) { | ||
return input.replace(/<mjml>[\n\s\t]+<mj-body>[\n\s\t]+<mj-container>/, '').replace(/<\/mj-container>[\n\s\t]+<\/mj-body>[\n\s\t]+<\/mjml>/, ''); | ||
var getBodyContent = function getBodyContent(input) { | ||
return (/<mj-container[^>]*>([\s\S]*?)<\/mj-container>/.exec(input) || [])[1]; | ||
}; | ||
var getHeadContent = function getHeadContent(input) { | ||
return (/<mj-head[^>]*>([\s\S]*?)<\/mj-head>/.exec(input) || [])[1]; | ||
}; | ||
var ensureMJMLFile = function ensureMJMLFile(file) { | ||
return file.trim().match(/.mjml/) && file || file + '.mjml'; | ||
}; | ||
var parseDocument = function parseDocument(input) { | ||
var internals = { content: getBodyContent(input), head: getHeadContent(input) }; | ||
var replaceContent = function replaceContent(_, path) { | ||
var mjmlExtension = function mjmlExtension(file) { | ||
return file.trim().match(/.mjml$/) && file || file + '.mjml'; | ||
}; | ||
// Neither mj-container or mj-head inside the document | ||
// So we assume that entire file is a just plain MJML content | ||
if (!internals.content && !internals.head) { | ||
internals.content = input; | ||
} | ||
var template = _fs2.default.readFileSync(mjmlExtension(path), 'utf8'); | ||
var content = getContent(template); | ||
return internals; | ||
}; | ||
if (!content) { | ||
throw new Error('Error while parsing file: ' + path); | ||
var replaceContent = function replaceContent(currentDir, headStack, _, fileName) { | ||
var filePath = _path2.default.normalize(_path2.default.join(currentDir, ensureMJMLFile(fileName))); | ||
var partial = void 0; | ||
try { | ||
partial = _fs2.default.readFileSync(filePath, 'utf8'); | ||
} catch (e) { | ||
return '<mj-raw><!-- mj-include: file not found ' + filePath + ' --></mj-raw>'; | ||
} | ||
var _parseDocument = parseDocument(partial), | ||
content = _parseDocument.content, | ||
head = _parseDocument.head; // eslint-disable-line prefer-const | ||
if (!content && !head) { | ||
throw new Error('Error while reading file: ' + filePath + ', file has no content ?'); | ||
} | ||
if (head) { | ||
headStack.push(head); | ||
} | ||
if (content) { | ||
content = content.replace(includes, replaceContent.bind(undefined, _path2.default.resolve(_path2.default.dirname(filePath)), headStack)); | ||
} | ||
return content; | ||
}; | ||
exports.default = function (baseMjml) { | ||
exports.default = function (baseMjml, _ref) { | ||
var filePath = _ref.filePath; | ||
var headStack = []; | ||
var mjml = baseMjml; | ||
while (mjml.match(includes)) { | ||
mjml = mjml.replace(includes, replaceContent); | ||
mjml = mjml.replace(includes, replaceContent.bind(undefined, _path2.default.resolve(_path2.default.dirname(filePath || process.cwd())), headStack)); | ||
if (headStack.length > 0) { | ||
if (mjml.indexOf('<mj-head>') == -1) { | ||
mjml = mjml.replace('<mjml>', '<mjml>\n <mj-head>\n </mj-head>\n'); | ||
} | ||
mjml = mjml.replace('</mj-head>', headStack.join('\n') + '\n</mj-head>'); | ||
} | ||
@@ -42,0 +87,0 @@ |
@@ -6,4 +6,13 @@ 'use strict'; | ||
}); | ||
exports.mjml2html = exports.MJMLValidator = exports.version = exports.documentParser = exports.rulesCollection = exports.registerMJRule = exports.formatValidationError = exports.MJMLHeadElements = exports.registerMJHeadElement = exports.helpers = exports.elements = exports.registerMJElement = exports.MJMLRenderer = exports.MJMLElement = undefined; | ||
exports.mjml2html = exports.MJMLValidator = exports.version = exports.mjIncludeRegexp = exports.documentParser = exports.rulesCollection = exports.registerMJRule = exports.formatValidationError = exports.MJMLHeadElements = exports.registerMJHeadElement = exports.helpers = exports.elements = exports.registerMJElement = exports.MJMLRenderer = exports.MJMLElement = undefined; | ||
var _includeExternal = require('./includeExternal'); | ||
Object.defineProperty(exports, 'mjIncludeRegexp', { | ||
enumerable: true, | ||
get: function get() { | ||
return _includeExternal.includes; | ||
} | ||
}); | ||
var _MJMLRenderer = require('./MJMLRenderer'); | ||
@@ -52,5 +61,4 @@ | ||
}; | ||
var version = exports.version = function version() { | ||
return '3.1.1'; | ||
return '3.2.0-beta.1'; | ||
}; | ||
@@ -57,0 +65,0 @@ var MJMLValidator = exports.MJMLValidator = _mjmlValidator2.default; |
@@ -133,3 +133,3 @@ 'use strict'; | ||
if (!this.options.disableMjInclude) { | ||
this.content = (0, _includeExternal2.default)(this.content); | ||
this.content = (0, _includeExternal2.default)(this.content, this.options); | ||
} | ||
@@ -136,0 +136,0 @@ |
{ | ||
"name": "mjml-core", | ||
"description": "mjml-core", | ||
"version": "3.1.1", | ||
"version": "3.2.0-beta.1", | ||
"main": "lib/index.js", | ||
@@ -31,3 +31,3 @@ "scripts": { | ||
"immutable": "^3.8.1", | ||
"jquery": "^3.1.1", | ||
"jquery": "^3.2.0-beta.1", | ||
"js-beautify": "^1.6.4", | ||
@@ -34,0 +34,0 @@ "juice": "^4.0.2", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
51199
1093
1
Updatedjquery@^3.2.0-beta.1