goProject/trunk/goutil/ini-config/ini.go
皮蛋13361098506 1b77f62820 初始化项目
2025-01-06 16:01:02 +08:00

104 lines
1.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package ini_config
import (
"bufio"
"errors"
"fmt"
"io"
"os"
"strings"
)
// ParseFile
// @description: 从文件读取配置文件并转化为map对象
// parameter:
// @filePath:文件路径
// return:
// @map[string]string: 配置信息
// @error:错误信息
func ParseFile(filePath string) (map[string]string, error) {
fn, err := os.Open(filePath)
if err != nil {
panic(err)
}
defer fn.Close()
kvMap := make(map[string]string)
rd := bufio.NewReader(fn)
for {
data, _, err := rd.ReadLine()
if err != nil || io.EOF == err {
break
}
line := strings.TrimSpace(string(data))
if line == "" || line[0:1] == "#" {
continue
}
var k string
var v string
k, v, err = Parse(line)
if err != nil {
return nil, err
}
kvMap[k] = v
}
return kvMap, nil
}
// Parse
// @description: 转换单行字符串为配置对象
// parameter:
// @line:单行内容
// return:
// @string:key
// @string:value
// @error:错误信息
func Parse(line string) (string, string, error) {
ls := strings.SplitN(line, "=", 2)
if len(ls) != 2 {
return "", "", errors.New(fmt.Sprintf("配置%s中未找到=分隔符", line))
}
var key = strings.TrimSpace(ls[0])
var value string
i := strings.LastIndex(ls[1], "#")
if i < 0 {
value = strings.TrimSpace(ls[1])
} else {
s := ls[1][:i]
value = strings.TrimSpace(s)
}
return key, value, nil
}
// ParseMultipleLines
// @description: 转换多行字符串为配置对象
// parameter:
// @content:多行内容(通过\n换行)
// return:
// @map[string]string:配置信息
// @error:错误信息
func ParseMultipleLines(content string) (map[string]string, error) {
lines := strings.Split(content, "\n")
kvMap := make(map[string]string)
for _, line := range lines {
if line == "" || line[0:1] == "#" {
continue
}
k, v, err := Parse(line)
if err != nil {
return nil, err
}
kvMap[k] = v
}
return kvMap, nil
}