12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package js
- import (
- "github.com/robertkrimen/otto"
- "io/ioutil"
- )
- func readDir(call otto.FunctionCall) otto.Value {
- argv := call.ArgumentList
- argc := len(argv)
- if argc != 1 {
- return ReportError("readDir: expected 1 argument, %d given instead.", argc)
- }
- path := argv[0].String()
- dir, err := ioutil.ReadDir(path)
- if err != nil {
- return ReportError("Could not read directory %s: %s", path, err)
- }
- entry_list := []string{}
- for _, file := range dir {
- entry_list = append(entry_list, file.Name())
- }
- v, err := otto.Otto.ToValue(*call.Otto, entry_list)
- if err != nil {
- return ReportError("Could not convert to array: %s", err)
- }
- return v
- }
- func readFile(call otto.FunctionCall) otto.Value {
- argv := call.ArgumentList
- argc := len(argv)
- if argc != 1 {
- return ReportError("readFile: expected 1 argument, %d given instead.", argc)
- }
- filename := argv[0].String()
- raw, err := ioutil.ReadFile(filename)
- if err != nil {
- return ReportError("Could not read file %s: %s", filename, err)
- }
- v, err := otto.ToValue(string(raw))
- if err != nil {
- return ReportError("Could not convert to string: %s", err)
- }
- return v
- }
- func writeFile(call otto.FunctionCall) otto.Value {
- argv := call.ArgumentList
- argc := len(argv)
- if argc != 2 {
- return ReportError("writeFile: expected 2 arguments, %d given instead.", argc)
- }
- filename := argv[0].String()
- data := argv[1].String()
- err := ioutil.WriteFile(filename, []byte(data), 0644)
- if err != nil {
- return ReportError("Could not write %d bytes to %s: %s", len(data), filename, err)
- }
- return otto.NullValue()
- }
|