mirror of
https://github.com/xiaoqidun/goini.git
synced 2026-09-03 08:10:22 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7914cbd743 |
+37
-40
@@ -145,42 +145,6 @@ func hasSurroundingQuotes(value string) bool {
|
||||
return first == last && (first == '"' || first == '\'' || first == '`')
|
||||
}
|
||||
|
||||
func (ini *GoINI) save(data string) error {
|
||||
if ini.filename == "" {
|
||||
return errFilenameRequired
|
||||
}
|
||||
info, err := os.Stat(ini.filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ini.saveFile(ini.filename, data, info.Mode().Perm())
|
||||
}
|
||||
|
||||
func (ini *GoINI) saveFile(filename string, data string, perm os.FileMode) error {
|
||||
if filename == "" {
|
||||
return errFilenameRequired
|
||||
}
|
||||
perm = perm.Perm()
|
||||
writePerm := perm | 0o200
|
||||
if info, err := os.Stat(filename); err == nil {
|
||||
if info.Mode().IsRegular() {
|
||||
if err := os.Chmod(filename, writePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else if !errors.Is(err, os.ErrNotExist) {
|
||||
return err
|
||||
}
|
||||
if err := os.WriteFile(filename, []byte(data), writePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := os.Chmod(filename, perm); err != nil {
|
||||
return err
|
||||
}
|
||||
ini.filename = filename
|
||||
return nil
|
||||
}
|
||||
|
||||
func (ini *GoINI) rebuildIndexes() {
|
||||
ini.sectionKeys = make(map[string][]string)
|
||||
ini.sectionOrder = nil
|
||||
@@ -245,9 +209,6 @@ func (ini *GoINI) findSectionLineIndex(sectionName string) (int, bool) {
|
||||
}
|
||||
|
||||
func (ini *GoINI) findSectionKeyLineIndex(sectionName string, keyName string) (int, bool) {
|
||||
if ini.sectionKeyLineIndexes[sectionName] == nil {
|
||||
return 0, false
|
||||
}
|
||||
index, ok := ini.sectionKeyLineIndexes[sectionName][keyName]
|
||||
return index, ok
|
||||
}
|
||||
@@ -375,7 +336,7 @@ func commentLines(comment string) []iniLine {
|
||||
|
||||
func formatComment(comment string) string {
|
||||
trimmed := strings.TrimLeftFunc(comment, unicode.IsSpace)
|
||||
if strings.HasPrefix(trimmed, "#") || strings.HasPrefix(trimmed, ";") {
|
||||
if isComment(trimmed) {
|
||||
return comment
|
||||
}
|
||||
if comment == "" {
|
||||
@@ -469,6 +430,42 @@ func formatINIComment(comment string) string {
|
||||
return "# " + comment
|
||||
}
|
||||
|
||||
func (ini *GoINI) save(data string) error {
|
||||
if ini.filename == "" {
|
||||
return errFilenameRequired
|
||||
}
|
||||
info, err := os.Stat(ini.filename)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return ini.saveFile(ini.filename, data, info.Mode().Perm())
|
||||
}
|
||||
|
||||
func (ini *GoINI) saveFile(filename string, data string, perm os.FileMode) error {
|
||||
if filename == "" {
|
||||
return errFilenameRequired
|
||||
}
|
||||
perm = perm.Perm()
|
||||
writePerm := perm | 0o200
|
||||
if info, err := os.Stat(filename); err == nil {
|
||||
if info.Mode().IsRegular() {
|
||||
if err := os.Chmod(filename, writePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
} else if !errors.Is(err, os.ErrNotExist) {
|
||||
return err
|
||||
}
|
||||
if err := os.WriteFile(filename, []byte(data), writePerm); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := os.Chmod(filename, perm); err != nil {
|
||||
return err
|
||||
}
|
||||
ini.filename = filename
|
||||
return nil
|
||||
}
|
||||
|
||||
func matchStrings(items []string, match string) []string {
|
||||
if match == "" {
|
||||
return cloneStrings(items)
|
||||
|
||||
Reference in New Issue
Block a user