Bracket parser
Introduction¶
A lite-weight delimiter parser.
- Author: Rex
- Object
Live demoes¶
Usage¶
Install plugin¶
Load minify file¶
- Load plugin (minify file) in preload stage
scene.load.plugin('rexbracketparserplugin', 'https://raw.githubusercontent.com/rexrainbow/phaser3-rex-notes/master/dist/rexbracketparserplugin.min.js', true); - Add parser object
var parser = scene.plugins.get('rexbracketparserplugin').add(config);
Import plugin¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Install plugin in configuration of game
import BracketParserPlugin from 'phaser3-rex-plugins/plugins/bracketparser-plugin.js'; var config = { // ... plugins: { global: [{ key: 'rexBracketParser', plugin: BracketParserPlugin, start: true }, // ... ] } // ... }; var game = new Phaser.Game(config); - Add parser object
var parser = scene.plugins.get('rexBracketParser').add(config);
Import class¶
- Install rex plugins from npm
npm i phaser3-rex-plugins - Import class
import BracketParser from 'phaser3-rex-plugins/plugins/bracketparser.js'; - Add parser object
var parser = new BracketParser(config);
Create instance¶
var parser = scene.plugins.get('rexBracketParser').add({
// delimiters: '<>', // or ['<', '>']
// valueConvert: true,
// translateTagNameCallback: undefined,
});
delimiters: String of left-delimiter and right-delimiter.- A single string with 2 characters. Default value is
'<>'. - A array with 2 strings
- A single string with 2 characters. Default value is
valueConvert: A callback to convert values.true: Use defaule value converter. Values will be converted to number (include hex number string like '0xFF'), boolean, null, or string.false, ornull: Bypass string value.- Function object:
function(s) { return s; }
translateTagNameCallback: Callback to translate tag-nameundefined: Use original tag-name. Default behavior.- A function, return new tag name.
function(tagName) { return newTagName; }
Tag and content¶
Assume that left-delimiter and right-delimiter is '<>'
- Start-tag :
'<TAG>'- Start-tag with a single value :
'<TAG=value>'value: IfvalueConvertistrue,- Number
- Boolean
- null
- String
- Start-tag with array values, separated via
',':'<TAG=value0,value1,value2>'
- Start-tag with a single value :
- End-tag :
'<\TAG>' - Content : Any string outside of tag-start, or tag-end.
Start parsing¶
parser.start(text);
These events will be emitted under this method.
Pause¶
- Pause
parser.pause(); - Pause until event
parser.pauseUntilEvent(eventEmitter, eventName);- Will invoke
eventEmitter.once(eventName, function() { parser.next(); })
- Will invoke
Invoke this method during tag-start,tag-end, or content events to suspend parsing.
Resume¶
parser.next();
Skip any-tag-start/any-tag-end event¶
parser.skipEvent();
When getting a tag-start, or a tag-end event, parser will emitts
- Start-tag :
'+TAG', then'+' - End-tag :
'-TAG', then'-'
Invoke this medthod under '+TAG', or '-TAG' event to skip '+', or '-' event.
Status¶
- Is parsing
var isRunning = parser.isRunning;true: Has remainder charactersfalse: After parsing last character
- Is paused
var isPaused = parser.isPaused;
Events¶
Tags/Content¶
- Get a specific tag-start
- Start-tag with a single value :
'<TAG=value>'parser.on('+' + TagName, function(value){ /* ... */ }); - Start-tag with array values, separated via
',':'<TAG=value0,value1,value2>'parser.on('+' + TagName, function(value0, value1, value2){ /* ... */ });
- Start-tag with a single value :
- Get any-tag-start
- Start-tag with a single value :
'<TAG=value>'parser.on('+', function(tagName, value){ /* ... */ }); - Start-tag with array values, separated via
',':'<TAG=value0,value1,value2>'parser.on('+', function(tagName, value0, value1, value2){ /* ... */ });
- Start-tag with a single value :
- Get a specific tag-end
parser.on('-' + TagName, function(){ /* ... */ }); - Get a content
parser.on('content', function(content){ /* ... */ });- Previous tag-start :
parser.lastTagStart
- Previous tag-start :
- Get any-tag-end
parser.on('-', function(tagName){ /* ... */ });- Previous tag-start :
parser.lastTagStart - Previous Content :
parser.lastContent
- Previous tag-start :
Control flow¶
- Parsing start
parser.on('start', function(){ /* ... */ }); - Parsing end
parser.on('complete', function(){ /* ... */ }); - On pause
parser.on('pause', function(){ /* ... */ }); - On resume
parser.on('resume', function(){ /* ... */ });