Files
herolib/lib/core/texttools/namesplit.v
2024-12-25 09:23:31 +01:00

57 lines
1.5 KiB
V

module texttools
import os
// return (sitename,pagename)
// sitename will be empty string if not specified with site:... or site__...
pub fn name_split(name string) !(string, string) {
mut objname := name.trim(' ')
objname = objname.trim_left('.')
if name.contains('__') {
parts := name.split('__')
if parts.len != 2 {
return error('filename not well formatted. Needs to have 2 parts around "__". Now ${name}.')
}
objname = '${parts[0].trim(' ')}:${parts[1].trim(' ')}'
}
// to deal with things like "img/tf_world.jpg ':size=300x160'"
splitted0 := objname.split(' ')
if splitted0.len > 0 {
objname = splitted0[0]
}
objname = name_fix(objname)
mut sitename := ''
splitted := objname.split(':')
if splitted.len == 1 {
objname = splitted[0]
} else if splitted.len == 2 {
sitename = splitted[0]
objname = splitted[1]
} else {
return error("name needs to be in format 'sitename:filename' or 'filename', now '${objname}'")
}
objname = objname.trim_left('.')
if objname.contains('/') {
objname = os.base(objname)
if objname.trim(' ') == '' {
return error('objname empty for os.base')
}
}
// make sure we don't have the e.g. img/ in
if objname.trim('/ ') == '' {
return error('objname empty: ${name}')
}
if objname.ends_with('/') {
return error("objname cannot end with /: now '${name}'")
}
if objname.trim(' ') == '' {
return error('objname empty: ${name}')
}
// eprintln(" >> namesplit: '$sitename' '$objname'")
return sitename, objname
}