mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
make trim use cutset like trim_right/trim_left
This commit is contained in:
parent
3db50f724b
commit
02fc7e14cd
@ -325,8 +325,8 @@ pub fn (v mut V) cc_msvc() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
arg := if lowest != -1 {
|
arg := if lowest != -1 {
|
||||||
rest = base.right(lowest).trim_space().trim(`,`)
|
rest = base.right(lowest).trim_space().trim(',')
|
||||||
base.left(lowest).trim_space().trim(`,`)
|
base.left(lowest).trim_space().trim(',')
|
||||||
} else {
|
} else {
|
||||||
rest = ''
|
rest = ''
|
||||||
base.trim_space()
|
base.trim_space()
|
||||||
|
@ -9,12 +9,12 @@ import strings
|
|||||||
fn sql_params2params_gen(sql_params []string, sql_types []string, qprefix string) string {
|
fn sql_params2params_gen(sql_params []string, sql_types []string, qprefix string) string {
|
||||||
mut params_gen := ''
|
mut params_gen := ''
|
||||||
for i, mparam in sql_params {
|
for i, mparam in sql_params {
|
||||||
param := mparam.trim(` `)
|
param := mparam.trim_space()
|
||||||
paramtype := sql_types[ i ]
|
paramtype := sql_types[ i ]
|
||||||
if param[0].is_digit() {
|
if param[0].is_digit() {
|
||||||
params_gen += '${qprefix}params[$i] = int_str($param).str;\n'
|
params_gen += '${qprefix}params[$i] = int_str($param).str;\n'
|
||||||
}else if param[0] == `\'` {
|
}else if param[0] == `\'` {
|
||||||
sparam := param.trim(`\'`)
|
sparam := param.trim('\'')
|
||||||
params_gen += '${qprefix}params[$i] = "$sparam";\n'
|
params_gen += '${qprefix}params[$i] = "$sparam";\n'
|
||||||
} else {
|
} else {
|
||||||
// A variable like q.nr_orders
|
// A variable like q.nr_orders
|
||||||
|
@ -28,8 +28,8 @@ fn test_flag_parsing() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
arg := if lowest != -1 {
|
arg := if lowest != -1 {
|
||||||
rest = base.right(lowest).trim_space().trim(`,`)
|
rest = base.right(lowest).trim_space().trim(',')
|
||||||
base.left(lowest).trim_space().trim(`,`)
|
base.left(lowest).trim_space().trim(',')
|
||||||
} else {
|
} else {
|
||||||
rest = ''
|
rest = ''
|
||||||
base.trim_space()
|
base.trim_space()
|
||||||
|
@ -590,30 +590,38 @@ pub fn (s string) trim_space() string {
|
|||||||
return res
|
return res
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (s string) trim(c byte) string {
|
pub fn (s string) trim(cutset string) string {
|
||||||
if s == '' {
|
if s.len == 0 || cutset.len == 0 {
|
||||||
return ''
|
return s
|
||||||
}
|
}
|
||||||
mut i := 0
|
cs_arr := cutset.bytes()
|
||||||
for i < s.len && c == s[i] {
|
mut pos_left := 0
|
||||||
i++
|
mut pos_right := s.len - 1
|
||||||
|
mut cs_match := true
|
||||||
|
for pos_left <= s.len && pos_right >= -1 && cs_match {
|
||||||
|
cs_match = false
|
||||||
|
if s[pos_left] in cs_arr {
|
||||||
|
pos_left++
|
||||||
|
cs_match = true
|
||||||
|
}
|
||||||
|
if s[pos_right] in cs_arr {
|
||||||
|
pos_right--
|
||||||
|
cs_match = true
|
||||||
|
}
|
||||||
|
if pos_left > pos_right {
|
||||||
|
return ''
|
||||||
|
}
|
||||||
}
|
}
|
||||||
mut res := s.right(i)
|
return s.substr(pos_left, pos_right+1)
|
||||||
mut end := res.len - 1
|
|
||||||
for end >= 0 && c == res[end] {
|
|
||||||
end--
|
|
||||||
}
|
|
||||||
res = res.left(end + 1)
|
|
||||||
return res
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (s string) trim_left(cutset string) string {
|
pub fn (s string) trim_left(cutset string) string {
|
||||||
if s.len == 0 || cutset.len == 0 {
|
if s.len == 0 || cutset.len == 0 {
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
mut pos := 0
|
|
||||||
cs_arr := cutset.bytes()
|
cs_arr := cutset.bytes()
|
||||||
for s[pos] in cs_arr {
|
mut pos := 0
|
||||||
|
for pos <= s.len && s[pos] in cs_arr {
|
||||||
pos++
|
pos++
|
||||||
}
|
}
|
||||||
return s.right(pos)
|
return s.right(pos)
|
||||||
@ -623,9 +631,9 @@ pub fn (s string) trim_right(cutset string) string {
|
|||||||
if s.len == 0 || cutset.len == 0 {
|
if s.len == 0 || cutset.len == 0 {
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
mut pos := s.len - 1
|
|
||||||
cs_arr := cutset.bytes()
|
cs_arr := cutset.bytes()
|
||||||
for s[pos] in cs_arr {
|
mut pos := s.len - 1
|
||||||
|
for pos >= -1 && s[pos] in cs_arr {
|
||||||
pos--
|
pos--
|
||||||
}
|
}
|
||||||
return s.left(pos+1)
|
return s.left(pos+1)
|
||||||
|
@ -302,6 +302,12 @@ fn test_hash() {
|
|||||||
assert s5.hash() % ((1 << 20) -1) == 592861
|
assert s5.hash() % ((1 << 20) -1) == 592861
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_trim() {
|
||||||
|
assert 'banana'.trim('bna') == ''
|
||||||
|
assert 'abc'.trim('ac') == 'b'
|
||||||
|
assert 'aaabccc'.trim('ac') == 'b'
|
||||||
|
}
|
||||||
|
|
||||||
fn test_trim_left() {
|
fn test_trim_left() {
|
||||||
mut s := 'module main'
|
mut s := 'module main'
|
||||||
assert s.trim_left(' ') == 'module main'
|
assert s.trim_left(' ') == 'module main'
|
||||||
|
Loading…
Reference in New Issue
Block a user