UNPKG

phaser4-rex-plugins

Version:
187 lines (156 loc) 7.74 kB
const PROP_REMOVE = false; const PROP_ADD = true; var GETPROP_RESULT = { plainText: null, prevProp: null }; var TagTextToProp = function (text, prevProp) { var TagRegex = this.tagRegex; // text : result of splitText() if (prevProp == null) { prevProp = {}; } var plainText = ''; // close image tag if (prevProp.img) { UpdateProp(prevProp, PROP_REMOVE, 'img'); } if (prevProp.esc) { if (TagRegex.RE_ESC_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'esc'); } else { plainText = text; } } else if (prevProp.raw) { if (TagRegex.RE_RAW_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'raw'); } else { plainText = text; } } else { if (TagRegex.RE_ESC_OPEN.test(text)) { UpdateProp(prevProp, PROP_ADD, 'esc', true); } else if (TagRegex.RE_ESC_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'esc'); } else if (TagRegex.RE_RAW_OPEN.test(text)) { UpdateProp(prevProp, PROP_ADD, 'raw', true); } else if (TagRegex.RE_RAW_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'raw'); } else if (TagRegex.RE_BLOD_OPEN.test(text)) { UpdateProp(prevProp, PROP_ADD, 'b', true); } else if (TagRegex.RE_BLOD_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'b'); } else if (TagRegex.RE_ITALICS_OPEN.test(text)) { UpdateProp(prevProp, PROP_ADD, 'i', true); } else if (TagRegex.RE_ITALICS_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'i'); } else if (TagRegex.RE_WEIGHT_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_WEIGHT_OPEN); UpdateProp(prevProp, PROP_ADD, 'weight', innerMatch[1]); } else if (TagRegex.RE_WEIGHT_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'weight'); } else if (TagRegex.RE_SIZE_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_SIZE_OPEN); UpdateProp(prevProp, PROP_ADD, 'size', `${innerMatch[1]}px`); } else if (TagRegex.RE_SIZE_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'size'); } else if (TagRegex.RE_FAMILY_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_FAMILY_OPEN); UpdateProp(prevProp, PROP_ADD, 'family', innerMatch[1]); } else if (TagRegex.RE_FAMILY_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'family'); } else if (TagRegex.RE_COLOR_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_COLOR_OPEN); UpdateProp(prevProp, PROP_ADD, 'color', innerMatch[1]); } else if (TagRegex.RE_COLOR_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'color'); } else if (TagRegex.RE_UNDERLINE_OPEN.test(text)) { UpdateProp(prevProp, PROP_ADD, 'u', true); } else if (TagRegex.RE_UNDERLINE_OPENC.test(text)) { var innerMatch = text.match(TagRegex.RE_UNDERLINE_OPENC); UpdateProp(prevProp, PROP_ADD, 'u', innerMatch[1]); } else if (TagRegex.RE_UNDERLINE_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'u'); } else if (TagRegex.RE_STRIKETHROUGH_OPEN.test(text)) { UpdateProp(prevProp, PROP_ADD, 's', true); } else if (TagRegex.RE_STRIKETHROUGH_OPENC.test(text)) { var innerMatch = text.match(TagRegex.RE_STRIKETHROUGH_OPENC); UpdateProp(prevProp, PROP_ADD, 's', innerMatch[1]); } else if (TagRegex.RE_STRIKETHROUGH_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 's'); } else if (TagRegex.RE_SHADOW_OPEN.test(text)) { UpdateProp(prevProp, PROP_ADD, 'shadow', true); } else if (TagRegex.RE_SHADOW_OPENC.test(text)) { var innerMatch = text.match(TagRegex.RE_SHADOW_OPENC); UpdateProp(prevProp, PROP_ADD, 'shadow', innerMatch[1]); } else if (TagRegex.RE_SHADOW_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'shadow'); } else if (TagRegex.RE_STROKE_OPEN.test(text)) { UpdateProp(prevProp, PROP_ADD, 'stroke', true); } else if (TagRegex.RE_STROKE_OPENC.test(text)) { var innerMatch = text.match(TagRegex.RE_STROKE_OPENC); UpdateProp(prevProp, PROP_ADD, 'stroke', innerMatch[1]); } else if (TagRegex.RE_STROKE_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'stroke'); } else if (TagRegex.RE_BGCOLOR_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_BGCOLOR_OPEN); UpdateProp(prevProp, PROP_ADD, 'bgcolor', innerMatch[1]); } else if (TagRegex.RE_BGCOLOR_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'bgcolor'); } else if (TagRegex.RE_OFFSETY_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_OFFSETY_OPEN); UpdateProp(prevProp, PROP_ADD, 'y', parseFloat(innerMatch[1])); } else if (TagRegex.RE_OFFSETY_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'y'); } else if (TagRegex.RE_SPACING_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_SPACING_OPEN); UpdateProp(prevProp, PROP_ADD, 'spacing', parseFloat(innerMatch[1])); } else if (TagRegex.RE_SPACING_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'spacing'); } else if (TagRegex.RE_IMAGE_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_IMAGE_OPEN); UpdateProp(prevProp, PROP_ADD, 'img', innerMatch[1]); } else if (TagRegex.RE_IMAGE_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'img'); } else if (TagRegex.RE_AREA_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_AREA_OPEN); UpdateProp(prevProp, PROP_ADD, 'area', innerMatch[1]); } else if (TagRegex.RE_AREA_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'area'); } else if (TagRegex.RE_URL_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_URL_OPEN); UpdateProp(prevProp, PROP_ADD, 'url', innerMatch[1]); } else if (TagRegex.RE_URL_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'url'); } else if (TagRegex.RE_ALIGN_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_ALIGN_OPEN); UpdateProp(prevProp, PROP_ADD, 'align', innerMatch[1]); } else if (TagRegex.RE_ALIGN_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'align'); } else if (TagRegex.RE_ID_OPEN.test(text)) { var innerMatch = text.match(TagRegex.RE_ID_OPEN); UpdateProp(prevProp, PROP_ADD, 'id', innerMatch[1]); } else if (TagRegex.RE_ID_CLOSE.test(text)) { UpdateProp(prevProp, PROP_REMOVE, 'id'); } else { plainText = text; } } var result = GETPROP_RESULT; result.plainText = plainText; result.prop = prevProp; return result; } var UpdateProp = function (prop, op, key, value) { if (op === PROP_ADD) { // PROP_ADD prop[key] = value; } else { // PROP_REMOVE if (prop.hasOwnProperty(key)) { delete prop[key]; } } return prop; }; export default TagTextToProp;