//precompile will load all script and execute the INC cmd. func (c *Compiler) PreCompile(sbys []byte) error { c.Lines = []string{} // sbys = b_reg_cmt.ReplaceAll(sbys, []byte("")) // sbys = l_reg_cmt.ReplaceAll(sbys, []byte("\n")) // sbys = Escape(sbys) var iscmt bool = false R := bufio.NewReader(bytes.NewReader(sbys)) for i := 1; true; i++ { bys, err := util.ReadLine(R, 1024000, false) if err != nil { break } if b_reg_cmt_beg.Match(bys) { iscmt = true } if iscmt && b_reg_cmt_end.Match(bys) { iscmt = false continue } if iscmt { continue } bys = l_reg_cmt.ReplaceAll(bys, []byte("")) line := string(Escape(bys)) line = strings.Trim(line, "\t \n") if len(line) < 1 { continue } // if c_reg_INC.MatchString(line) { // args := empty.Split(line, -1) // if len(args) < 2 { // return errors.New(fmt.Sprintf( // "INC(%v) error:%v", line, "argument is empty")) // } // tpath := "" // if filepath.IsAbs(args[1]) { // tpath = args[1] // } else { // tpath = filepath.Join(c.Cwd, args[1]) // } // err := c.load(tpath) // if err != nil { // return errors.New(fmt.Sprintf("INC(%v) load error:%v", line, err.Error())) // } // continue // } c.addl(line, i) } return nil }
//append file func AppendF(fname string) { log.D("append file:%s", fname) f, err := os.Open(fname) if err != nil { log.W("open file(%v) error:%s", fname, err.Error()) return } defer f.Close() buf := bufio.NewReader(f) for { l, err := util.ReadLine(buf, 102400, false) if err == io.EOF { break } else if err != nil { log.W("read file(%s) error:%s", fname, err.Error()) } else { AppendR(string(l)) } } }