add readall, readall test
This commit is contained in:
		
							parent
							
								
									be6ebfceb6
								
							
						
					
					
						commit
						6d1211c2fd
					
				| 
						 | 
					@ -1,2 +1,2 @@
 | 
				
			||||||
bin/*
 | 
					bin/*
 | 
				
			||||||
*.html
 | 
					./*.html
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@
 | 
				
			||||||
      "request": "launch",
 | 
					      "request": "launch",
 | 
				
			||||||
      "mode": "auto",
 | 
					      "mode": "auto",
 | 
				
			||||||
      "program": "main.go",
 | 
					      "program": "main.go",
 | 
				
			||||||
      "args": ["examples/http_hello_world.vqe"]
 | 
					      "args": ["examples/http_read.vqe"]
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
  ]
 | 
					  ]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					"examples/test.html" readall disp
 | 
				
			||||||
 | 
					} ":3333" servehttp
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					<!DOCTYPE html>
 | 
				
			||||||
 | 
					<html lang="en">
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					    <meta charset="UTF-8">
 | 
				
			||||||
 | 
					    <meta http-equiv="X-UA-Compatible" content="IE=edge">
 | 
				
			||||||
 | 
					    <meta name="viewport" content="width=device-width, initial-scale=1.0">
 | 
				
			||||||
 | 
					    <title>Document</title>
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					    <h1>test</h1>
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
| 
						 | 
					@ -4,6 +4,7 @@ import (
 | 
				
			||||||
	"bufio"
 | 
						"bufio"
 | 
				
			||||||
	"fmt"
 | 
						"fmt"
 | 
				
			||||||
	"io"
 | 
						"io"
 | 
				
			||||||
 | 
						"io/ioutil"
 | 
				
			||||||
	"math"
 | 
						"math"
 | 
				
			||||||
	"math/rand"
 | 
						"math/rand"
 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
| 
						 | 
					@ -1243,18 +1244,32 @@ func Interpret(code Expr, argv []string, w io.Writer) error {
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			http.ListenAndServe(str.Value.(string), http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 | 
								http.ListenAndServe(str.Value.(string), http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
 | 
				
			||||||
				w.Header().Set("Content-Type", "text/html; charset=utf-8")
 | 
									req := make([]string, 0)
 | 
				
			||||||
 | 
									req = append(req, r.RequestURI)
 | 
				
			||||||
				fun, e := pop()
 | 
									fun, e := pop()
 | 
				
			||||||
				if e != nil {
 | 
									if e != nil {
 | 
				
			||||||
					return
 | 
										return
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				if fun.Tok == FUNCTION {
 | 
									if fun.Tok == FUNCTION {
 | 
				
			||||||
					Interpret(fun, nil, w)
 | 
										Interpret(fun, req, w)
 | 
				
			||||||
				} else {
 | 
									} else {
 | 
				
			||||||
					return
 | 
										return
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}))
 | 
								}))
 | 
				
			||||||
 | 
							case READALL:
 | 
				
			||||||
 | 
								str, e := pop()
 | 
				
			||||||
 | 
								if e != nil {
 | 
				
			||||||
 | 
									return e
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								if str.Tok != STRING {
 | 
				
			||||||
 | 
									return fmt.Errorf("cannot `servehttp` exptected a string for the port @%v", idx)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								filedata, err := ioutil.ReadFile(str.Value.(string)) // the file is inside the local directory
 | 
				
			||||||
 | 
								if err != nil {
 | 
				
			||||||
 | 
									return err
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
								push(Expr{STRING, nil, string(filedata), 0})
 | 
				
			||||||
		case VERSION:
 | 
							case VERSION:
 | 
				
			||||||
			fmt.Fprintf(w, "var'aq -- 0.9.1 Martoq")
 | 
								fmt.Fprintf(w, "var'aq -- 0.9.1 Martoq")
 | 
				
			||||||
		case ARGV:
 | 
							case ARGV:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -182,6 +182,7 @@ var keywords = map[string]TokenType{
 | 
				
			||||||
	"depth":     DEPTH,
 | 
						"depth":     DEPTH,
 | 
				
			||||||
	"juv":       DEPTH,
 | 
						"juv":       DEPTH,
 | 
				
			||||||
	"servehttp": SERVEHTTP,
 | 
						"servehttp": SERVEHTTP,
 | 
				
			||||||
 | 
						"readall":   READALL,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func isDigit(s string) bool {
 | 
					func isDigit(s string) bool {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -106,6 +106,7 @@ const (
 | 
				
			||||||
	ROT
 | 
						ROT
 | 
				
			||||||
	DEPTH
 | 
						DEPTH
 | 
				
			||||||
	SERVEHTTP
 | 
						SERVEHTTP
 | 
				
			||||||
 | 
						READALL
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var tokens = [...]string{
 | 
					var tokens = [...]string{
 | 
				
			||||||
| 
						 | 
					@ -211,6 +212,7 @@ var tokens = [...]string{
 | 
				
			||||||
	ROT:            "ROT",
 | 
						ROT:            "ROT",
 | 
				
			||||||
	DEPTH:          "DEPTH",
 | 
						DEPTH:          "DEPTH",
 | 
				
			||||||
	SERVEHTTP:      "SERVEHTTP",
 | 
						SERVEHTTP:      "SERVEHTTP",
 | 
				
			||||||
 | 
						READALL:        "READALL",
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (me TokenType) String() string {
 | 
					func (me TokenType) String() string {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue