Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(241)

Side by Side Diff: experimental/webtry/webtry.go

Issue 261693003: Use CodeMirror for WebTry snippets. (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: design.md notes Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « experimental/webtry/templates/workspace.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 package main 1 package main
2 2
3 import ( 3 import (
4 "bytes" 4 "bytes"
5 "crypto/md5" 5 "crypto/md5"
6 "database/sql" 6 "database/sql"
7 "encoding/base64" 7 "encoding/base64"
8 "encoding/json" 8 "encoding/json"
9 "flag" 9 "flag"
10 "fmt" 10 "fmt"
11 _ "github.com/go-sql-driver/mysql" 11 _ "github.com/go-sql-driver/mysql"
12 _ "github.com/mattn/go-sqlite3" 12 _ "github.com/mattn/go-sqlite3"
13 htemplate "html/template" 13 htemplate "html/template"
14 "io/ioutil" 14 "io/ioutil"
15 "log" 15 "log"
16 "math/rand" 16 "math/rand"
17 "net/http" 17 "net/http"
18 "os" 18 "os"
19 "os/exec" 19 "os/exec"
20 "path/filepath" 20 "path/filepath"
21 "regexp" 21 "regexp"
22 "strings" 22 "strings"
23 "text/template" 23 "text/template"
24 "time" 24 "time"
25 ) 25 )
26 26
27 const ( 27 const (
28 RESULT_COMPILE = `../../experimental/webtry/safec++ -DSK_GAMMA_SRGB -DSK _GAMMA_APPLY_TO_A8 -DSK_SCALAR_TO_FLOAT_EXCLUDED -DSK_ALLOW_STATIC_GLOBAL_INITIA LIZERS=1 -DSK_SUPPORT_GPU=0 -DSK_SUPPORT_OPENCL=0 -DSK_FORCE_DISTANCEFIELD_FONTS =0 -DSK_SCALAR_IS_FLOAT -DSK_CAN_USE_FLOAT -DSK_SAMPLES_FOR_X -DSK_BUILD_FOR_UNI X -DSK_USE_POSIX_THREADS -DSK_SYSTEM_ZLIB=1 -DSK_DEBUG -DSK_DEVELOPER=1 -I../../ src/core -I../../src/images -I../../tools/flags -I../../include/config -I../../i nclude/core -I../../include/pathops -I../../include/pipe -I../../include/effects -I../../include/ports -I../../src/sfnt -I../../include/utils -I../../src/utils -I../../include/images -g -fno-exceptions -fstrict-aliasing -Wall -Wextra -Winit -self -Wpointer-arith -Wno-unused-parameter -m64 -fno-rtti -Wnon-virtual-dtor -c ../../../cache/%s.cpp -o ../../../cache/%s.o` 28 RESULT_COMPILE = `../../experimental/webtry/safec++ -DSK_GAMMA_SRGB -DSK _GAMMA_APPLY_TO_A8 -DSK_SCALAR_TO_FLOAT_EXCLUDED -DSK_ALLOW_STATIC_GLOBAL_INITIA LIZERS=1 -DSK_SUPPORT_GPU=0 -DSK_SUPPORT_OPENCL=0 -DSK_FORCE_DISTANCEFIELD_FONTS =0 -DSK_SCALAR_IS_FLOAT -DSK_CAN_USE_FLOAT -DSK_SAMPLES_FOR_X -DSK_BUILD_FOR_UNI X -DSK_USE_POSIX_THREADS -DSK_SYSTEM_ZLIB=1 -DSK_DEBUG -DSK_DEVELOPER=1 -I../../ src/core -I../../src/images -I../../tools/flags -I../../include/config -I../../i nclude/core -I../../include/pathops -I../../include/pipe -I../../include/effects -I../../include/ports -I../../src/sfnt -I../../include/utils -I../../src/utils -I../../include/images -g -fno-exceptions -fstrict-aliasing -Wall -Wextra -Winit -self -Wpointer-arith -Wno-unused-parameter -m64 -fno-rtti -Wnon-virtual-dtor -c ../../../cache/%s.cpp -o ../../../cache/%s.o`
29 LINK = `../../experimental/webtry/safec++ -m64 -lstdc++ -lm -o ../../../inout/%s -Wl,--start-group ../../../cache/%s.o obj/experimental/webtry /webtry.main.o obj/gyp/libflags.a libskia_images.a libskia_core.a libskia_effect s.a obj/gyp/libjpeg.a obj/gyp/libwebp_dec.a obj/gyp/libwebp_demux.a obj/gyp/libw ebp_dsp.a obj/gyp/libwebp_enc.a obj/gyp/libwebp_utils.a libskia_utils.a libskia_ opts.a libskia_opts_ssse3.a libskia_ports.a libskia_sfnt.a -Wl,--end-group -lpng -lz -lgif -lpthread -lfontconfig -ldl -lfreetype` 29 LINK = `../../experimental/webtry/safec++ -m64 -lstdc++ -lm -o ../../../inout/%s -Wl,--start-group ../../../cache/%s.o obj/experimental/webtry /webtry.main.o obj/gyp/libflags.a libskia_images.a libskia_core.a libskia_effect s.a obj/gyp/libjpeg.a obj/gyp/libwebp_dec.a obj/gyp/libwebp_demux.a obj/gyp/libw ebp_dsp.a obj/gyp/libwebp_enc.a obj/gyp/libwebp_utils.a libskia_utils.a libskia_ opts.a libskia_opts_ssse3.a libskia_ports.a libskia_sfnt.a -Wl,--end-group -lpng -lz -lgif -lpthread -lfontconfig -ldl -lfreetype`
30 » DEFAULT_SAMPLE = `SkPaint p; 30 » DEFAULT_SAMPLE = `void draw(SkCanvas* canvas) {
31 p.setColor(SK_ColorRED); 31 SkPaint p;
32 p.setAntiAlias(true); 32 p.setColor(SK_ColorRED);
33 p.setStyle(SkPaint::kStroke_Style); 33 p.setAntiAlias(true);
34 p.setStrokeWidth(10); 34 p.setStyle(SkPaint::kStroke_Style);
35 p.setStrokeWidth(10);
35 36
36 canvas->drawLine(20, 20, 100, 100, p); 37 canvas->drawLine(20, 20, 100, 100, p);
37 ` 38 }`
38 // Don't increase above 2^16 w/o altering the db tables to accept someth ing bigger than TEXT. 39 // Don't increase above 2^16 w/o altering the db tables to accept someth ing bigger than TEXT.
39 MAX_TRY_SIZE = 64000 40 MAX_TRY_SIZE = 64000
40 ) 41 )
41 42
42 var ( 43 var (
43 // codeTemplate is the cpp code template the user's code is copied into. 44 // codeTemplate is the cpp code template the user's code is copied into.
44 codeTemplate *template.Template = nil 45 codeTemplate *template.Template = nil
45 46
46 // indexTemplate is the main index.html page we serve. 47 // indexTemplate is the main index.html page we serve.
47 indexTemplate *htemplate.Template = nil 48 indexTemplate *htemplate.Template = nil
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after
341 if _, err := db.Exec("INSERT INTO webtry (code, hash) VALUES(?, ?)", cod e, hash); err != nil { 342 if _, err := db.Exec("INSERT INTO webtry (code, hash) VALUES(?, ?)", cod e, hash); err != nil {
342 log.Printf("ERROR: Failed to insert code into database: %q\n", e rr) 343 log.Printf("ERROR: Failed to insert code into database: %q\n", e rr)
343 } 344 }
344 if workspaceName != "" { 345 if workspaceName != "" {
345 if _, err := db.Exec("INSERT INTO workspacetry (name, hash) VALU ES(?, ?)", workspaceName, hash); err != nil { 346 if _, err := db.Exec("INSERT INTO workspacetry (name, hash) VALU ES(?, ?)", workspaceName, hash); err != nil {
346 log.Printf("ERROR: Failed to insert into workspacetry ta ble: %q\n", err) 347 log.Printf("ERROR: Failed to insert into workspacetry ta ble: %q\n", err)
347 } 348 }
348 } 349 }
349 } 350 }
350 351
351 func cssHandler(w http.ResponseWriter, r *http.Request) {
352 http.ServeFile(w, r, "css/webtry.css")
353 }
354
355 // imageHandler serves up the PNG of a specific try. 352 // imageHandler serves up the PNG of a specific try.
356 func imageHandler(w http.ResponseWriter, r *http.Request) { 353 func imageHandler(w http.ResponseWriter, r *http.Request) {
357 log.Printf("Image Handler: %q\n", r.URL.Path) 354 log.Printf("Image Handler: %q\n", r.URL.Path)
358 if r.Method != "GET" { 355 if r.Method != "GET" {
359 http.NotFound(w, r) 356 http.NotFound(w, r)
360 return 357 return
361 } 358 }
362 match := imageLink.FindStringSubmatch(r.URL.Path) 359 match := imageLink.FindStringSubmatch(r.URL.Path)
363 if len(match) != 2 { 360 if len(match) != 2 {
364 http.NotFound(w, r) 361 http.NotFound(w, r)
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
671 } 668 }
672 } 669 }
673 670
674 func main() { 671 func main() {
675 flag.Parse() 672 flag.Parse()
676 http.HandleFunc("/i/", imageHandler) 673 http.HandleFunc("/i/", imageHandler)
677 http.HandleFunc("/w/", workspaceHandler) 674 http.HandleFunc("/w/", workspaceHandler)
678 http.HandleFunc("/recent/", recentHandler) 675 http.HandleFunc("/recent/", recentHandler)
679 http.HandleFunc("/iframe/", iframeHandler) 676 http.HandleFunc("/iframe/", iframeHandler)
680 http.HandleFunc("/json/", tryInfoHandler) 677 http.HandleFunc("/json/", tryInfoHandler)
681 » http.HandleFunc("/css/", cssHandler) 678
682 » http.Handle("/js/", http.FileServer(http.Dir("./"))) 679 » // Resources are served directly
680 » // TODO add support for caching/etags/gzip
681 » http.Handle("/res/", http.FileServer(http.Dir("./")))
682
683 // TODO Break out /c/ as it's own handler. 683 // TODO Break out /c/ as it's own handler.
684 http.HandleFunc("/", mainHandler) 684 http.HandleFunc("/", mainHandler)
685 log.Fatal(http.ListenAndServe(*port, nil)) 685 log.Fatal(http.ListenAndServe(*port, nil))
686 } 686 }
OLDNEW
« no previous file with comments | « experimental/webtry/templates/workspace.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698