// Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package transfer import ( "bufio" "io" "os" "strings" ) const middle = "->" type ConfigManager struct { Mymap map[string]string strcet string } func (c *ConfigManager) Init(path string) { c.Mymap = make(map[string]string) f, err := os.Open(path) if err != nil { panic(err) } defer f.Close() r := bufio.NewReader(f) for { b, _, err := r.ReadLine() if err != nil { if err == io.EOF { break } panic(err) } s := strings.TrimSpace(string(b)) if strings.Index(s, "#") == 0 { continue } n1 := strings.Index(s, "[") n2 := strings.LastIndex(s, "]") if n1 > -1 && n2 > -1 && n2 > n1+1 { c.strcet = strings.TrimSpace(s[n1+1 : n2]) continue } if len(c.strcet) == 0 { continue } index := strings.Index(s, ":") if index < 0 { continue } frist := strings.TrimSpace(s[:index]) if len(frist) == 0 { continue } second := strings.TrimSpace(s[index+1:]) pos := strings.Index(second, "\t#") if pos > -1 { second = second[0:pos] } pos = strings.Index(second, " #") if pos > -1 { second = second[0:pos] } pos = strings.Index(second, "\t//") if pos > -1 { second = second[0:pos] } pos = strings.Index(second, " //") if pos > -1 { second = second[0:pos] } if len(second) == 0 { continue } key := c.strcet + middle + frist c.Mymap[key] = strings.TrimSpace(second) } } func (c ConfigManager) Read(node, key string) string { key = node + middle + key v, found := c.Mymap[key] if !found { return "" } return v }