Home Reference Source Test Repository

src/examples/primitive-argument-rules.js

/**
 * @author Gilles Coomans <[email protected]>
 * elenpi rules for primitives function's arguments. aka : "double", 'single', 1.12, 14, true, false
 */
import elenpi from '../index.js';
const r = elenpi.Rule.initializer;

/**
 * example of rules for parsing arguments somewhere
 * @type {Object}
 * @private
 */
const rules = {
	doublestring: r.terminal(/^"([^"]*)"/, (env, descriptor, cap) => {
		descriptor.arguments.push(cap[1]);
	}),
	singlestring: r.terminal(/^'([^']*)'/, (env, descriptor, cap) => {
		descriptor.arguments.push(cap[1]);
	}),
	float: r.terminal(/^[0-9]*\.[0-9]+/, (env, descriptor, cap) => {
		descriptor.arguments.push(parseFloat(cap[0], 10));
	}),
	integer: r.terminal(/^[0-9]+/, (env, descriptor, cap) => {
		descriptor.arguments.push(parseInt(cap[0], 10));
	}),
	bool: r.terminal(/^(true|false)/, (env, descriptor, cap) => {
		descriptor.arguments.push((cap[1] === 'true') ? true : false);
	})
};

export default rules;