56 lines
		
	
	
		
			940 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			940 B
		
	
	
	
		
			V
		
	
	
module semver
 | 
						|
 | 
						|
// * Private functions.
 | 
						|
[inline]
 | 
						|
fn is_version_valid(input string) bool {
 | 
						|
	raw_ver := parse(input)
 | 
						|
	return raw_ver.is_valid()
 | 
						|
}
 | 
						|
 | 
						|
[inline]
 | 
						|
fn coerce_version(input string) ?Version {
 | 
						|
	raw_ver := parse(input)
 | 
						|
	ver := raw_ver.coerce() or { return error('Invalid version for input "$input"') }
 | 
						|
	return ver
 | 
						|
}
 | 
						|
 | 
						|
[inline]
 | 
						|
fn increment_version(ver Version, typ Increment) Version {
 | 
						|
	mut major := ver.major
 | 
						|
	mut minor := ver.minor
 | 
						|
	mut patch := ver.patch
 | 
						|
	match typ {
 | 
						|
		.major {
 | 
						|
			major++
 | 
						|
			minor = 0
 | 
						|
			patch = 0
 | 
						|
		}
 | 
						|
		.minor {
 | 
						|
			minor++
 | 
						|
			patch = 0
 | 
						|
		}
 | 
						|
		.patch {
 | 
						|
			patch++
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return Version{major, minor, patch, ver.prerelease, ver.metadata}
 | 
						|
}
 | 
						|
 | 
						|
fn is_valid_string(input string) bool {
 | 
						|
	for c in input {
 | 
						|
		if !(c.is_letter() || c.is_digit() || c == `.` || c == `-`) {
 | 
						|
			return false
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return true
 | 
						|
}
 | 
						|
 | 
						|
fn is_valid_number(input string) bool {
 | 
						|
	for c in input {
 | 
						|
		if !c.is_digit() {
 | 
						|
			return false
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return true
 | 
						|
}
 |