/** Helper functions for the SU(M)O-KIF file format.
 *
 * SUO-KIF is used the default encoding of the SUMO ontology.
 */
module nxt.sumo_kif;

@safe:

bool isFormat(scope const(char)[] chars) pure nothrow @nogc
{
	import nxt.algorithm.searching : findSkip;
	while (chars.findSkip('%'))
	{
		import std.ascii : isDigit;
		if (chars.length >= 1 &&
			(isDigit(chars[0]) ||
			 chars[0] == '*'))
		{
			return true;
		}
	}
	return false;
}

pure @safe unittest {
	assert("%1".isFormat);
	assert(" %1 ".isFormat);

	assert("%2".isFormat);
	assert(" %2 ".isFormat);

	assert("%*".isFormat);
	assert(" %* ".isFormat);

	assert(!"%".isFormat);
	assert(!"% ".isFormat);
	assert(!" % ".isFormat);

	assert("%n %1".isFormat);
	assert("%n %1".isFormat);
	assert("%n %*".isFormat);
}

bool isTermFormat(scope const(char)[] chars) pure nothrow @nogc
{
	return !isFormat(chars);
}