If self contains only digits and letters, return the corresponding integer in a given base

assert "120".a_to(3)     == 15

Property definitions

core $ Text :: a_to
	# If `self` contains only digits and letters, return the corresponding integer in a given base
	#
	# ~~~
	# assert "120".a_to(3)     == 15
	# ~~~
	fun a_to(base: Int) : Int
	do
		var i = 0
		var neg = false

		for j in [0..length[ do
			var c = chars[j]
			var v = c.to_i
			if v > base then
				if neg then
					return -i
				else
					return i
				end
			else if v < 0 then
				neg = true
			else
				i = i * base + v
			end
		end
		if neg then
			return -i
		else
			return i
		end
	end
lib/core/text/abstract_text.nit:313,2--343,4