string: title() and small fixes
parent
754b8082fb
commit
db525524ee
|
@ -818,7 +818,6 @@ fn new_v(args[]string) *V {
|
||||||
dir: dir
|
dir: dir
|
||||||
lang_dir: vroot
|
lang_dir: vroot
|
||||||
table: new_table(obfuscate)
|
table: new_table(obfuscate)
|
||||||
out_name: out_name
|
|
||||||
out_name_c: out_name_c
|
out_name_c: out_name_c
|
||||||
cgen: new_cgen(out_name_c)
|
cgen: new_cgen(out_name_c)
|
||||||
vroot: vroot
|
vroot: vroot
|
||||||
|
|
|
@ -321,7 +321,7 @@ pub fn (s string) left(n int) string {
|
||||||
}
|
}
|
||||||
return s.substr(0, n)
|
return s.substr(0, n)
|
||||||
}
|
}
|
||||||
|
// 'hello'.right(2) => 'llo'
|
||||||
pub fn (s string) right(n int) string {
|
pub fn (s string) right(n int) string {
|
||||||
if n >= s.len {
|
if n >= s.len {
|
||||||
return ''
|
return ''
|
||||||
|
@ -447,6 +447,9 @@ pub fn (s string) count(substr string) int {
|
||||||
if s.len == 0 || substr.len == 0 {
|
if s.len == 0 || substr.len == 0 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
if substr.len > s.len {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
mut n := 0
|
mut n := 0
|
||||||
mut i := 0
|
mut i := 0
|
||||||
for {
|
for {
|
||||||
|
@ -480,7 +483,7 @@ pub fn (s string) ends_with(p string) bool {
|
||||||
|
|
||||||
// TODO only works with ASCII
|
// TODO only works with ASCII
|
||||||
pub fn (s string) to_lower() string {
|
pub fn (s string) to_lower() string {
|
||||||
mut b := malloc(s.len)// TODO + 1 ??
|
mut b := malloc(s.len + 1)
|
||||||
for i := 0; i < s.len; i++ {
|
for i := 0; i < s.len; i++ {
|
||||||
b[i] = C.tolower(s.str[i])
|
b[i] = C.tolower(s.str[i])
|
||||||
}
|
}
|
||||||
|
@ -488,13 +491,31 @@ pub fn (s string) to_lower() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (s string) to_upper() string {
|
pub fn (s string) to_upper() string {
|
||||||
mut b := malloc(s.len)// TODO + 1 ??
|
mut b := malloc(s.len + 1)
|
||||||
for i := 0; i < s.len; i++ {
|
for i := 0; i < s.len; i++ {
|
||||||
b[i] = C.toupper(s.str[i])
|
b[i] = C.toupper(s.str[i])
|
||||||
}
|
}
|
||||||
return tos(b, s.len)
|
return tos(b, s.len)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn (s string) capitalize() string {
|
||||||
|
sl := s.to_lower()
|
||||||
|
cap := sl[0].str().to_upper() + sl.right(1)
|
||||||
|
return cap
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (s string) title() string {
|
||||||
|
words := s.split(' ')
|
||||||
|
mut tit := []string
|
||||||
|
|
||||||
|
for word in words {
|
||||||
|
tit << word.capitalize()
|
||||||
|
}
|
||||||
|
title := tit.join(' ')
|
||||||
|
|
||||||
|
return title
|
||||||
|
}
|
||||||
|
|
||||||
// 'hey [man] how you doin'
|
// 'hey [man] how you doin'
|
||||||
// find_between('[', ']') == 'man'
|
// find_between('[', ']') == 'man'
|
||||||
pub fn (s string) find_between(start, end string) string {
|
pub fn (s string) find_between(start, end string) string {
|
||||||
|
|
|
@ -39,12 +39,12 @@ fn test_lt() {
|
||||||
d := 'b'
|
d := 'b'
|
||||||
e := 'aa'
|
e := 'aa'
|
||||||
f := 'ab'
|
f := 'ab'
|
||||||
assert a<(b)
|
assert a < (b)
|
||||||
assert !(b<c)
|
assert !(b < c)
|
||||||
assert c<(d)
|
assert c < (d)
|
||||||
assert !(d<e)
|
assert !(d < e)
|
||||||
assert c<(e)
|
assert c < (e)
|
||||||
assert e<(f)
|
assert e < (f)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_ge() {
|
fn test_ge() {
|
||||||
|
@ -53,11 +53,11 @@ fn test_ge() {
|
||||||
c := 'ab'
|
c := 'ab'
|
||||||
d := 'abc'
|
d := 'abc'
|
||||||
e := 'aaa'
|
e := 'aaa'
|
||||||
assert b>=(a)
|
assert b >= (a)
|
||||||
assert c>=(b)
|
assert c >= (b)
|
||||||
assert d>=(c)
|
assert d >= (c)
|
||||||
assert !(c>=d)
|
assert !(c >= d)
|
||||||
assert e>=(a)
|
assert e >= (a)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn test_compare_strings() {
|
fn test_compare_strings() {
|
||||||
|
@ -91,15 +91,15 @@ fn test_split() {
|
||||||
mut s := 'volt/twitch.v:34'
|
mut s := 'volt/twitch.v:34'
|
||||||
mut vals := s.split(':')
|
mut vals := s.split(':')
|
||||||
assert vals.len == 2
|
assert vals.len == 2
|
||||||
assert vals[0]== 'volt/twitch.v'
|
assert vals[0] == 'volt/twitch.v'
|
||||||
assert vals[1]== '34'
|
assert vals[1] == '34'
|
||||||
// /////////
|
// /////////
|
||||||
s = '2018-01-01z13:01:02'
|
s = '2018-01-01z13:01:02'
|
||||||
vals = s.split('z')
|
vals = s.split('z')
|
||||||
assert vals.len == 2
|
assert vals.len == 2
|
||||||
assert vals[0]=='2018-01-01'
|
assert vals[0] =='2018-01-01'
|
||||||
assert vals[1]== '13:01:02'
|
assert vals[1] == '13:01:02'
|
||||||
// /////////////
|
// //////////
|
||||||
s = '4627a862c3dec29fb3182a06b8965e0025759e18___1530207969___blue'
|
s = '4627a862c3dec29fb3182a06b8965e0025759e18___1530207969___blue'
|
||||||
vals = s.split('___')
|
vals = s.split('___')
|
||||||
assert vals.len == 3
|
assert vals.len == 3
|
||||||
|
@ -214,7 +214,6 @@ fn test_runes() {
|
||||||
assert u.substr(1, 2) == 'р'
|
assert u.substr(1, 2) == 'р'
|
||||||
assert s2.ustring().at(1) == 'r'
|
assert s2.ustring().at(1) == 'r'
|
||||||
assert u.at(1) == 'р'
|
assert u.at(1) == 'р'
|
||||||
// ///////
|
|
||||||
first := u.at(0)
|
first := u.at(0)
|
||||||
last := u.at(u.len - 1)
|
last := u.at(u.len - 1)
|
||||||
assert first.len == 2
|
assert first.len == 2
|
||||||
|
@ -236,6 +235,22 @@ fn test_lower() {
|
||||||
assert s.to_lower() == 'hi'
|
assert s.to_lower() == 'hi'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_upper() {
|
||||||
|
mut s := 'a'
|
||||||
|
assert s.to_upper() == 'A'
|
||||||
|
assert s.to_upper().len == 1
|
||||||
|
s = 'hello'
|
||||||
|
assert s.to_upper() == 'HELLO'
|
||||||
|
assert s.to_upper().len == 5
|
||||||
|
s = 'Aloha'
|
||||||
|
assert s.to_upper() == 'ALOHA'
|
||||||
|
s = 'have a nice day!'
|
||||||
|
assert s.to_upper() == 'HAVE A NICE DAY!'
|
||||||
|
s = 'hi'
|
||||||
|
assert s.to_upper() == 'HI'
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
fn test_left_right() {
|
fn test_left_right() {
|
||||||
s := 'ALOHA'
|
s := 'ALOHA'
|
||||||
assert s.left(3) == 'ALO'
|
assert s.left(3) == 'ALO'
|
||||||
|
@ -355,3 +370,21 @@ fn test_count() {
|
||||||
assert 'aabbaa'.count('aa') == 2
|
assert 'aabbaa'.count('aa') == 2
|
||||||
assert 'bbaabb'.count('aa') == 1
|
assert 'bbaabb'.count('aa') == 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_capitalize() {
|
||||||
|
mut s := 'hello'
|
||||||
|
assert s.capitalize() == 'Hello'
|
||||||
|
s = 'test'
|
||||||
|
assert s.capitalize() == 'Test'
|
||||||
|
s = 'i am ray'
|
||||||
|
assert s.capitalize() == 'I am ray'
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_title() {
|
||||||
|
mut s := 'hello world'
|
||||||
|
assert s.title() == 'Hello World'
|
||||||
|
s.to_upper()
|
||||||
|
assert s.title() == 'Hello World'
|
||||||
|
s.to_lower()
|
||||||
|
assert s.title() == 'Hello World'
|
||||||
|
}
|
||||||
|
|
|
@ -2,6 +2,8 @@ module stats
|
||||||
|
|
||||||
import math
|
import math
|
||||||
|
|
||||||
|
// TODO: Implement all of them with generics
|
||||||
|
|
||||||
// This module defines the following statistical operations on f64 array
|
// This module defines the following statistical operations on f64 array
|
||||||
// ---------------------------
|
// ---------------------------
|
||||||
// | Summary of Functions |
|
// | Summary of Functions |
|
||||||
|
|
Loading…
Reference in New Issue