parser.js

/** @module parser */

import Tokenizer from "./tokenizer.js"
import Token from "./token.js"
import Fragment from "./message/fragment.js"
import Message from "./message.js"

/**
 * @memberof: module:parser
 */
class Parser {

	static parse(text) {
		const tokens = Tokenizer.tokenize(text)
		const message = new Message()
		for(const token of tokens) {
			if(token.type === Token.TYPE.USER) {
				message.users.push(token.buffer.slice(Tokenizer.CHANNEL_PREFIX.length))
			} else if(token.type === Token.TYPE.CHANNEL) {
				message.channels.push(token.buffer.slice(Tokenizer.USER_PREFIX.length))
			}
			message.fragments.push(new Fragment(token.type, token.buffer))
		}
		return message
	}

}

export default Parser