Does self look like a package name?

assert "gamnit".is_package_name
assert "n1t".is_package_name
assert not ".".is_package_name
assert not "./gamnit".is_package_name
assert not "https://github.com/nitlang/nit.git".is_package_name
assert not "git://github.com/nitlang/nit".is_package_name
assert not "git@gitlab.com:xymus/gamnit.git".is_package_name
assert not "4it".is_package_name

Property definitions

nitc :: nitpm_shared $ Text :: is_package_name
	# Does `self` look like a package name?
	#
	# ~~~
	# assert "gamnit".is_package_name
	# assert "n1t".is_package_name
	# assert not ".".is_package_name
	# assert not "./gamnit".is_package_name
	# assert not "https://github.com/nitlang/nit.git".is_package_name
	# assert not "git://github.com/nitlang/nit".is_package_name
	# assert not "git@gitlab.com:xymus/gamnit.git".is_package_name
	# assert not "4it".is_package_name
	# ~~~
	fun is_package_name: Bool
	do
		if is_empty then return false
		if not chars.first.is_alpha then return false

		for c in chars do
			if not (c.is_alphanumeric or c == '_') then return false
		end

		return true
	end
src/nitpm_shared.nit:29,2--51,4