46 lines
980 B
V
46 lines
980 B
V
module util
|
|
|
|
[inline]
|
|
pub fn is_name_char(c byte) bool {
|
|
return (c >= `a` && c <= `z`) || (c >= `A` && c <= `Z`) || c == `_`
|
|
}
|
|
|
|
[inline]
|
|
pub fn is_func_char(c byte) bool {
|
|
return (c >= `a` && c <= `z`) || (c >= `A` && c <= `Z`) || c == `_` || (c >= `0` && c <= `9`)
|
|
}
|
|
|
|
pub fn contains_capital(s string) bool {
|
|
for c in s {
|
|
if c >= `A` && c <= `Z` {
|
|
return true
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
// HTTPRequest bad
|
|
// HttpRequest good
|
|
[direct_array_access]
|
|
pub fn good_type_name(s string) bool {
|
|
if s.len < 4 {
|
|
return true
|
|
}
|
|
for i in 2 .. s.len {
|
|
if s[i].is_capital() && s[i - 1].is_capital() && s[i - 2].is_capital() {
|
|
return false
|
|
}
|
|
}
|
|
return true
|
|
}
|
|
|
|
// is_generic_type_name returns true if the current token is a generic type name.
|
|
[direct_array_access; inline]
|
|
pub fn is_generic_type_name(name string) bool {
|
|
return name.len == 1 && name[0] != `C` && (name[0] >= `A` && name[0] <= `Z`)
|
|
}
|
|
|
|
pub fn cescaped_path(s string) string {
|
|
return s.replace('\\', '\\\\')
|
|
}
|