Merge branch 'develop'
This commit is contained in:
commit
a0085c5732
|
@ -104,12 +104,16 @@ func (slf *Xlsx) GetData() [][]pce.DataInfo {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for i, field := range slf.GetFields() {
|
for i, field := range fields {
|
||||||
var isIndex = i-1 < slf.GetIndexCount()
|
var isIndex = i < slf.GetIndexCount()
|
||||||
|
|
||||||
var value string
|
var value string
|
||||||
if valueCell := slf.get(field.Index, y); valueCell != nil {
|
if valueCell := slf.get(field.Index, y); valueCell != nil {
|
||||||
value = valueCell.String()
|
value = valueCell.String()
|
||||||
|
if isIndex && len(strings.TrimSpace(value)) == 0 {
|
||||||
|
stop = true
|
||||||
|
break
|
||||||
|
}
|
||||||
} else if isIndex {
|
} else if isIndex {
|
||||||
stop = true
|
stop = true
|
||||||
break
|
break
|
||||||
|
@ -118,12 +122,10 @@ func (slf *Xlsx) GetData() [][]pce.DataInfo {
|
||||||
if valueCell == nil {
|
if valueCell == nil {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if len(fields) > i-1 {
|
line = append(line, pce.DataInfo{
|
||||||
line = append(line, pce.DataInfo{
|
DataField: field,
|
||||||
DataField: field,
|
Value: value,
|
||||||
Value: value,
|
})
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if len(line) > 0 {
|
if len(line) > 0 {
|
||||||
data = append(data, line)
|
data = append(data, line)
|
||||||
|
|
|
@ -27,6 +27,7 @@ func (slf *Golang) Render(templates ...*pce.TmplStruct) (string, error) {
|
||||||
import (
|
import (
|
||||||
jsonIter "github.com/json-iterator/go"
|
jsonIter "github.com/json-iterator/go"
|
||||||
"github.com/kercylan98/minotaur/utils/log"
|
"github.com/kercylan98/minotaur/utils/log"
|
||||||
|
"github.com/kercylan98/minotaur/utils/hash"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -192,13 +193,22 @@ func (slf *Golang) Render(templates ...*pce.TmplStruct) (string, error) {
|
||||||
|
|
||||||
// GetConfigs 获取所有配置
|
// GetConfigs 获取所有配置
|
||||||
func GetConfigs() map[Sign]any {
|
func GetConfigs() map[Sign]any {
|
||||||
return configs
|
mutex.Lock()
|
||||||
|
defer mutex.Unlock()
|
||||||
|
return hash.Copy(configs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetConfigSigns 获取所有配置的标识
|
// GetConfigSigns 获取所有配置的标识
|
||||||
func GetConfigSigns() []Sign {
|
func GetConfigSigns() []Sign {
|
||||||
return signs
|
return signs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sync 同步操作配置
|
||||||
|
func Sync(handle func(configs map[Sign]any)) {
|
||||||
|
mutex.Lock()
|
||||||
|
defer mutex.Unlock()
|
||||||
|
handle(hash.Copy(configs))
|
||||||
|
}
|
||||||
`, slf)
|
`, slf)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
154
utils/str/str.go
154
utils/str/str.go
|
@ -19,11 +19,11 @@ var (
|
||||||
// FirstUpper 首字母大写
|
// FirstUpper 首字母大写
|
||||||
func FirstUpper(str string) string {
|
func FirstUpper(str string) string {
|
||||||
var upperStr string
|
var upperStr string
|
||||||
vv := []rune(str) // 后文有介绍
|
vv := []rune(str)
|
||||||
for i := 0; i < len(vv); i++ {
|
for i := 0; i < len(vv); i++ {
|
||||||
if i == 0 {
|
if i == 0 {
|
||||||
if vv[i] >= 97 && vv[i] <= 122 { // 后文有介绍
|
if vv[i] >= 97 && vv[i] <= 122 {
|
||||||
vv[i] -= 32 // string的码表相差32位
|
vv[i] -= 32
|
||||||
upperStr += string(vv[i])
|
upperStr += string(vv[i])
|
||||||
} else {
|
} else {
|
||||||
return str
|
return str
|
||||||
|
@ -34,3 +34,151 @@ func FirstUpper(str string) string {
|
||||||
}
|
}
|
||||||
return upperStr
|
return upperStr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FirstLower 首字母小写
|
||||||
|
func FirstLower(str string) string {
|
||||||
|
var lowerStr string
|
||||||
|
vv := []rune(str)
|
||||||
|
for i := 0; i < len(vv); i++ {
|
||||||
|
if i == 0 {
|
||||||
|
if vv[i] >= 65 && vv[i] <= 90 {
|
||||||
|
vv[i] += 32
|
||||||
|
lowerStr += string(vv[i])
|
||||||
|
} else {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lowerStr += string(vv[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return lowerStr
|
||||||
|
}
|
||||||
|
|
||||||
|
// FirstUpperBytes 首字母大写
|
||||||
|
func FirstUpperBytes(str []byte) []byte {
|
||||||
|
var upperStr []byte
|
||||||
|
vv := []rune(string(str))
|
||||||
|
for i := 0; i < len(vv); i++ {
|
||||||
|
if i == 0 {
|
||||||
|
if vv[i] >= 97 && vv[i] <= 122 {
|
||||||
|
vv[i] -= 32
|
||||||
|
upperStr = append(upperStr, string(vv[i])...)
|
||||||
|
} else {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
upperStr = append(upperStr, string(vv[i])...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return upperStr
|
||||||
|
}
|
||||||
|
|
||||||
|
// FirstLowerBytes 首字母小写
|
||||||
|
func FirstLowerBytes(str []byte) []byte {
|
||||||
|
var lowerStr []byte
|
||||||
|
vv := []rune(string(str))
|
||||||
|
for i := 0; i < len(vv); i++ {
|
||||||
|
if i == 0 {
|
||||||
|
if vv[i] >= 65 && vv[i] <= 90 {
|
||||||
|
vv[i] += 32
|
||||||
|
lowerStr = append(lowerStr, string(vv[i])...)
|
||||||
|
} else {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
lowerStr = append(lowerStr, string(vv[i])...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return lowerStr
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsEmpty 判断字符串是否为空
|
||||||
|
func IsEmpty(str string) bool {
|
||||||
|
return len(str) == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsEmptyBytes 判断字符串是否为空
|
||||||
|
func IsEmptyBytes(str []byte) bool {
|
||||||
|
return len(str) == 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsNotEmpty 判断字符串是否不为空
|
||||||
|
func IsNotEmpty(str string) bool {
|
||||||
|
return !IsEmpty(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsNotEmptyBytes 判断字符串是否不为空
|
||||||
|
func IsNotEmptyBytes(str []byte) bool {
|
||||||
|
return !IsEmptyBytes(str)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SnakeString 蛇形字符串
|
||||||
|
func SnakeString(str string) string {
|
||||||
|
var snakeStr string
|
||||||
|
vv := []rune(str)
|
||||||
|
for i := 0; i < len(vv); i++ {
|
||||||
|
if vv[i] >= 65 && vv[i] <= 90 {
|
||||||
|
vv[i] += 32
|
||||||
|
snakeStr += "_" + string(vv[i])
|
||||||
|
} else {
|
||||||
|
snakeStr += string(vv[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return snakeStr
|
||||||
|
}
|
||||||
|
|
||||||
|
// SnakeStringBytes 蛇形字符串
|
||||||
|
func SnakeStringBytes(str []byte) []byte {
|
||||||
|
var snakeStr []byte
|
||||||
|
vv := []rune(string(str))
|
||||||
|
for i := 0; i < len(vv); i++ {
|
||||||
|
if vv[i] >= 65 && vv[i] <= 90 {
|
||||||
|
vv[i] += 32
|
||||||
|
snakeStr = append(snakeStr, '_')
|
||||||
|
snakeStr = append(snakeStr, string(vv[i])...)
|
||||||
|
} else {
|
||||||
|
snakeStr = append(snakeStr, string(vv[i])...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return snakeStr
|
||||||
|
}
|
||||||
|
|
||||||
|
// CamelString 驼峰字符串
|
||||||
|
func CamelString(str string) string {
|
||||||
|
var camelStr string
|
||||||
|
vv := []rune(str)
|
||||||
|
for i := 0; i < len(vv); i++ {
|
||||||
|
if vv[i] == '_' {
|
||||||
|
i++
|
||||||
|
if vv[i] >= 97 && vv[i] <= 122 {
|
||||||
|
vv[i] -= 32
|
||||||
|
camelStr += string(vv[i])
|
||||||
|
} else {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
camelStr += string(vv[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return camelStr
|
||||||
|
}
|
||||||
|
|
||||||
|
// CamelStringBytes 驼峰字符串
|
||||||
|
func CamelStringBytes(str []byte) []byte {
|
||||||
|
var camelStr []byte
|
||||||
|
vv := []rune(string(str))
|
||||||
|
for i := 0; i < len(vv); i++ {
|
||||||
|
if vv[i] == '_' {
|
||||||
|
i++
|
||||||
|
if vv[i] >= 97 && vv[i] <= 122 {
|
||||||
|
vv[i] -= 32
|
||||||
|
camelStr = append(camelStr, string(vv[i])...)
|
||||||
|
} else {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
camelStr = append(camelStr, string(vv[i])...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return camelStr
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue