mjml-core
Advanced tools
Comparing version 2.0.1 to 2.0.2
@@ -20,9 +20,24 @@ 'use strict'; | ||
var _mjCssClasses = require('../mjCssClasses'); | ||
var _mjCssClasses2 = _interopRequireDefault(_mjCssClasses); | ||
var _mjDefaultAttributes = require('../mjDefaultAttributes'); | ||
var _mjDefaultAttributes2 = _interopRequireDefault(_mjDefaultAttributes); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } | ||
var parseInstance = exports.parseInstance = function parseInstance(instance) { | ||
var parseNode = function parseNode(node) { | ||
var Component = _MJMLElementsCollection2.default[node.tagName]; | ||
var nodeClasses = node['attributes']['mj-class']; | ||
return !Component ? {} : _extends({}, (0, _defaultsDeep2.default)(node, Component.defaultMJMLDefinition), { | ||
var classAttributes = !nodeClasses ? {} : _defaultsDeep2.default.apply(undefined, [{}].concat(_toConsumableArray(nodeClasses.split(' ').map(function (nodeClass) { | ||
return { attributes: _mjCssClasses2.default[nodeClass] }; | ||
})))); | ||
return !Component ? {} : _extends({}, (0, _defaultsDeep2.default)(node, classAttributes, { attributes: _mjDefaultAttributes2.default[node.tagName] }, Component.defaultMJMLDefinition), { | ||
// do same to children | ||
@@ -29,0 +44,0 @@ children: (node.children || []).map(parseNode) |
@@ -6,3 +6,3 @@ 'use strict'; | ||
}); | ||
exports.registerElement = exports.mjml2html = exports.version = exports.helpers = exports.elements = exports.registerMJElement = exports.MJMLRenderer = exports.MJMLElement = exports.documentParser = undefined; | ||
exports.registerElement = exports.mjml2html = exports.version = exports.setMjCssClasses = exports.setMjDefaultAttributes = exports.MJMLHeadElements = exports.registerMJHeadElement = exports.mjDefaultAttributes = exports.mjCssClasses = exports.helpers = exports.elements = exports.registerMJElement = exports.MJMLRenderer = exports.MJMLElement = exports.documentParser = undefined; | ||
@@ -21,2 +21,14 @@ var _warning = require('warning'); | ||
var _mjCssClasses = require('./mjCssClasses'); | ||
var _mjCssClasses2 = _interopRequireDefault(_mjCssClasses); | ||
var _mjDefaultAttributes = require('./mjDefaultAttributes'); | ||
var _mjDefaultAttributes2 = _interopRequireDefault(_mjDefaultAttributes); | ||
var _MJMLHead = require('./MJMLHead'); | ||
var _MJMLHead2 = _interopRequireDefault(_MJMLHead); | ||
var _helpers = require('./helpers'); | ||
@@ -44,2 +56,8 @@ | ||
exports.helpers = helpers; | ||
exports.mjCssClasses = _mjCssClasses2.default; | ||
exports.mjDefaultAttributes = _mjDefaultAttributes2.default; | ||
exports.registerMJHeadElement = _MJMLHead.registerMJHeadElement; | ||
exports.MJMLHeadElements = _MJMLHead2.default; | ||
exports.setMjDefaultAttributes = _mjDefaultAttributes.setMjDefaultAttributes; | ||
exports.setMjCssClasses = _mjCssClasses.setMjCssClasses; | ||
var version = exports.version = function version() { | ||
@@ -46,0 +64,0 @@ return require('../package.json').version; |
@@ -21,2 +21,6 @@ 'use strict'; | ||
var _each = require('lodash/each'); | ||
var _each2 = _interopRequireDefault(_each); | ||
var _MJMLElementsCollection = require('../MJMLElementsCollection'); | ||
@@ -26,2 +30,10 @@ | ||
var _mjDefaultAttributes = require('../mjDefaultAttributes'); | ||
var _mjCssClasses = require('../mjCssClasses'); | ||
var _MJMLHead = require('../MJMLHead'); | ||
var _MJMLHead2 = _interopRequireDefault(_MJMLHead); | ||
var _warning = require('warning'); | ||
@@ -37,8 +49,17 @@ | ||
var safeEndingTags = function safeEndingTags(content) { | ||
var regexpBody = new RegExp('<mj-body([^>]*)>([^]*?)</mj-body>', 'gmi'); | ||
var bodyContent = content.match(regexpBody); | ||
if (!bodyContent) { | ||
return content; | ||
} | ||
bodyContent = bodyContent[0]; | ||
_MJMLElementsCollection.endingTags.forEach(function (tag) { | ||
var regex = new RegExp('<' + tag + '([^>]*)>([^]*?)</' + tag + '>', 'gmi'); | ||
content = content.replace(regex, _dom2.default.replaceContentByCdata(tag)); | ||
bodyContent = bodyContent.replace(regex, _dom2.default.replaceContentByCdata(tag)); | ||
}); | ||
return content; | ||
return content.replace(regexpBody, bodyContent); | ||
}; | ||
@@ -77,2 +98,16 @@ | ||
var parseHead = function parseHead(head) { | ||
(0, _each2.default)((0, _compact2.default)((0, _filter2.default)(_dom2.default.getChildren(head), function (child) { | ||
return child.tagName; | ||
})), function (element) { | ||
var handler = _MJMLHead2.default[element.tagName.toLowerCase()]; | ||
if (handler) { | ||
handler(element, { setMjCssClasses: _mjCssClasses.setMjCssClasses, setMjDefaultAttributes: _mjDefaultAttributes.setMjDefaultAttributes }); | ||
} else { | ||
(0, _warning2.default)(false, 'No handler found for: ' + element.tagName + ', in mj-head, skipping it'); | ||
} | ||
}); | ||
}; | ||
/** | ||
@@ -86,6 +121,8 @@ * Import an html document containing some mjml | ||
var root = void 0; | ||
var head = void 0; | ||
try { | ||
var $ = _dom2.default.parseXML(safeEndingTags(content)); | ||
root = $('mjml mj-body'); | ||
root = $('mjml > mj-body'); | ||
head = $('mjml > mj-head'); | ||
@@ -106,2 +143,6 @@ if (root.length < 1) { | ||
if (head && head.length == 1) { | ||
parseHead(head.get(0)); | ||
} | ||
return mjmlElementParser(root); | ||
@@ -108,0 +149,0 @@ }; |
{ | ||
"name": "mjml-core", | ||
"version": "2.0.1", | ||
"version": "2.0.2", | ||
"main": "lib/index.js", | ||
@@ -25,3 +25,3 @@ "scripts": { | ||
"js-beautify": "^1.6.2", | ||
"lodash": "^4.11.2", | ||
"lodash": "^4.12.0", | ||
"react-dom": "^15.0.2", | ||
@@ -28,0 +28,0 @@ "react": "^15.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
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
40130
871
Updatedlodash@^4.12.0