/**
 * https://tools.ietf.org/html/rfc5429
 */

import {
	ActionCommand,
	GrammarQuotedString,
	GrammarString
} from 'Sieve/Grammar';

/**
 * https://tools.ietf.org/html/rfc5429#section-2.1
 */
export class ErejectCommand extends ActionCommand
{
	constructor()
	{
		super();
		this._reason = new GrammarQuotedString;
	}

	get require() { return 'ereject'; }

	toString()
	{
		return 'ereject ' + this._reason + ';';
	}

	get reason()
	{
		return this._reason.value;
	}

	set reason(value)
	{
		this._reason.value = value;
	}

	pushArguments(args)
	{
		if (args[0] instanceof GrammarString) {
			this._reason = args[0];
		}
	}
}

/**
 * https://tools.ietf.org/html/rfc5429#section-2.2
 */
export class RejectCommand extends ActionCommand
{
	constructor()
	{
		super();
		this._reason = new GrammarQuotedString;
	}

	get require() { return 'reject'; }

	toString()
	{
		return 'reject ' + this._reason + ';';
	}

	get reason()
	{
		return this._reason.value;
	}

	set reason(value)
	{
		this._reason.value = value;
	}

	pushArguments(args)
	{
		if (args[0] instanceof GrammarString) {
			this._reason = args[0];
		}
	}
}
