UNPKG

react-hyperscript

Version:
56 lines (42 loc) 1.02 kB
/* eslint-disable complexity, max-statements */ 'use strict'; var classIdSplit = /([\.#]?[a-zA-Z0-9_:-]+)/; var notClassId = /^\.|#/; module.exports = parseTag; function parseTag(tag, props) { if (!tag) { return 'div'; } var noId = !('id' in props); var tagParts = tag.split(classIdSplit); var tagName = null; if (notClassId.test(tagParts[1])) { tagName = 'div'; } var classes; var part; var type; var i; for (i = 0; i < tagParts.length; i++) { part = tagParts[i]; if (!part) { continue; } type = part.charAt(0); if (!tagName) { tagName = part; } else if (type === '.') { classes = classes || []; classes.push(part.substring(1, part.length)); } else if (type === '#' && noId) { props.id = part.substring(1, part.length); } } if (classes) { if (props.className) { classes.push(props.className); } props.className = classes.join(' '); } return tagName ? tagName.toLowerCase() : 'div'; }