Sfoglia il codice sorgente

it works!

e.g. you can send some go code over, and you will get a result back. (or
an error.)
Lucas Stadler 11 anni fa
parent
commit
c63398d641
1 ha cambiato i file con 62 aggiunte e 0 eliminazioni
  1. 62 0
      go/linguaevalia.go

+ 62 - 0
go/linguaevalia.go

@ -6,6 +6,7 @@ package main
6 6
7 7
import (
8 8
	"fmt"
9
	"html/template"
9 10
	"io/ioutil"
10 11
	"log"
11 12
	"net/http"
@ -73,14 +74,75 @@ func runCodeHandler(w http.ResponseWriter, r *http.Request) {
73 74
	w.Write(res)
74 75
}
75 76
77
func homePageHandler(w http.ResponseWriter, r *http.Request) {
78
	homePageTemplate.Execute(w, nil)
79
}
80
81
var homePageTemplate = template.Must(template.New("homepage").Parse(homePageTemplateStr))
82
76 83
func main() {
77 84
	addr, port := "localhost", 8000
78 85
	fmt.Printf("running on %s:%d\n", addr, port)
79 86
80 87
	http.HandleFunc("/run", runCodeHandler)
88
	http.HandleFunc("/", homePageHandler)
81 89
82 90
	err := http.ListenAndServe(fmt.Sprintf("%s:%d", addr, port), nil)
83 91
	if err != nil {
84 92
		log.Fatal(err)
85 93
	}
86 94
}
95
96
const homePageTemplateStr = `
97
<!doctype html>
98
<html>
99
  <head>
100
    <title>lingua evalia</title>
101
    <meta charset="utf-8" />
102
    <style type="text/css">
103
    #code {
104
      border: none;
105
    }
106
    </style>
107
  </head>
108
109
  <body>
110
    <textarea id="code" rows="20" cols="80">package main
111
112
import (
113
	"fmt"
114
)
115
116
func main() {
117
	fmt.Println("Hello, World!")
118
}
119
</textarea>
120
    <pre id="result"></pre>
121
122
    <script>
123
      var codeEl = document.getElementById("code");
124
      var resultEl = document.getElementById("result");
125
126
      codeEl.onkeydown = function(ev) {
127
        if (ev.ctrlKey && ev.keyCode == 13) {
128
          resultEl.textContent = "";
129
          sendCode(codeEl.value, function(result) {
130
            resultEl.textContent = result;
131
          });
132
        }
133
      }
134
135
      function sendCode(code, cb) {
136
        var xhr = new XMLHttpRequest();
137
        xhr.open("POST", "/run");
138
        xhr.onreadystatechange = function(ev) {
139
          if (xhr.readyState == XMLHttpRequest.DONE) {
140
            cb(xhr.response);
141
          }
142
        };
143
        xhr.send(code);
144
      }
145
    </script>
146
  </body>
147
</html>
148
`