module aurorafw.stdx..string;

public import std..string;

@safe pure
string substr(string s, ptrdiff_t offset, ptrdiff_t length)
{
	size_t end = void;
	if (offset > s.length)
		return "";
	if (offset < 0)
		offset = 0;
	if (length < 0)
		end = s.length;
	else
		end = offset + length;
	if(end > s.length)
		end = s.length;

	return s[offset .. end];
}

@safe pure
pragma(inline) bool isAlpha(string str)
{
	import std.algorithm : all;
	import std.uni : isAlpha;

	return str.all!(x => isAlpha(x));
}

@safe
@("String: substr")
unittest {
	string s = "Aurora Framework";
	assert(s.substr(1,5)=="urora");
}

@safe
@("String: isAlpha")
unittest {
	assert(isAlpha("tunaisgood"));
	assert(!isAlpha("tun41s900d"));
}