Răsfoiți Sursa

demo3 initial

kpmy 10 ani în urmă
părinte
comite
3d70957d8e

+ 7 - 0
demo3/.gitignore

@@ -0,0 +1,7 @@
+.buildlog
+.DS_Store
+.idea
+.pub/
+build/
+packages
+pubspec.lock

+ 13 - 0
demo3/LICENSE

@@ -0,0 +1,13 @@
+           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+                   Version 2, December 2004
+
+Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+Everyone is permitted to copy and distribute verbatim or modified
+copies of this license document, and changing it is allowed as long
+as the name is changed.
+
+           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. You just DO WHAT THE FUCK YOU WANT TO.

+ 3 - 0
demo3/README.md

@@ -0,0 +1,3 @@
+# ODF in your browser DEMO
+
+golang gopherjs kpmy/odf dartlang html web worker

+ 66 - 0
demo3/demo3.go

@@ -0,0 +1,66 @@
+package main
+
+import (
+	"github.com/gopherjs/gopherjs/js"
+	"github.com/kpmy/ypk/assert"
+	"github.com/mitchellh/mapstructure"
+	"log"
+	_ "odf/model/stub" //don't forget pimpl
+	"sync"
+)
+
+type Msg struct {
+	Typ string
+}
+
+type Handler func(m *Msg)
+
+var wg *sync.WaitGroup = &sync.WaitGroup{}
+var busChan chan *Msg
+
+//этот хэндлер только пишет сообщения в канал главной горутины
+func busHandler(m *Msg) {
+	busChan <- m
+}
+
+//этот хэндлер обрабатывает сообщения в рамках главной горутины
+func handle(m *Msg) {
+	switch m.Typ {
+	case "init":
+		panic("not implemented")
+	}
+}
+
+func Process(m *Msg) {
+	assert.For(m != nil, 20)
+	js.Global.Call("postMessage", m)
+}
+
+func Init(handler Handler) {
+	js.Global.Set("onmessage", func(oEvent *js.Object) {
+		data := oEvent.Get("data").Interface()
+		m := &Msg{}
+		err := mapstructure.Decode(data, m)
+		assert.For(err == nil, 40)
+		handler(m)
+	})
+}
+
+func main() {
+	log.Println("odf loading... ")
+	Init(busHandler)
+	busChan = make(chan *Msg)
+	wg.Add(1)
+	go func(wg *sync.WaitGroup, c chan *Msg) {
+		log.Println("done")
+		Process(&Msg{Typ: "init"})
+		for {
+			select {
+			case m := <-c:
+				handle(m)
+			}
+		}
+	}(wg, busChan)
+	wg.Wait()
+	log.Println("odf closed")
+}

+ 2 - 0
demo3/deploy.bat

@@ -0,0 +1,2 @@
+@echo off 
+xcopy build\web\* gh-pages /E /Y

+ 4 - 0
demo3/gopherjs_build.bat

@@ -0,0 +1,4 @@
+@echo off
+gopherjs build
+copy demo3.js web\ /Y
+copy demo3.js.map web\ /Y

+ 9 - 0
demo3/pubspec.yaml

@@ -0,0 +1,9 @@
+name: 'demo3'
+version: 0.0.1
+description: An absolute bare-bones web app.
+#author: <your name> <email@example.com>
+#homepage: https://www.example.com
+environment:
+  sdk: '>=1.0.0 <2.0.0'
+dependencies:
+  browser: '>=0.10.0 <0.11.0'

+ 22 - 0
demo3/report.go

@@ -0,0 +1,22 @@
+package main
+
+import (
+	"bytes"
+	"io"
+	"odf/generators"
+	"odf/mappers"
+	"odf/model"
+	"odf/xmlns"
+)
+
+func report() (io.Reader, error) {
+	output := bytes.NewBuffer(nil)
+	m := model.ModelFactory()
+	fm := &mappers.Formatter{}
+	fm.ConnectTo(m)
+	fm.MimeType = xmlns.MimeText
+	fm.Init()
+	fm.WriteString("Hello, World!")
+	generators.GeneratePackage(m, nil, output, fm.MimeType)
+	return output, nil
+}

+ 26 - 0
demo3/web/index.html

@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+
+<!--
+  Copyright (c) 2015, <your name>. All rights reserved. Use of this source code
+  is governed by a BSD-style license that can be found in the LICENSE file.
+-->
+
+<html>
+<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">
+    <meta name="scaffolded-by" content="https://github.com/google/stagehand">
+    <title>demo kpmy/odf</title>
+
+    <link rel="stylesheet" href="styles/main.css">
+</head>
+
+<body>
+
+  <div id="output">golang gopherjs kpmy/odf dartlang html web workers kpmy/odf/demo3</div>
+
+<script type="application/dart" src="main.dart"></script>
+<script data-pub-inline src="packages/browser/dart.js"></script>
+</body>
+</html>

+ 18 - 0
demo3/web/main.dart

@@ -0,0 +1,18 @@
+import 'dart:html';
+
+class OdfWorker{
+
+  Worker inner;
+
+  OdfWorker(){
+    this.inner = new Worker("demo3.js");
+    this.inner.onMessage.listen((m){
+      print("worker initialized, sending responce...");
+      this.inner.postMessage({'Typ': 'init'});
+    });
+  }
+}
+
+void main() {
+  new OdfWorker();
+}

+ 9 - 0
demo3/web/styles/main.css

@@ -0,0 +1,9 @@
+@import url(https://fonts.googleapis.com/css?family=Roboto);
+
+html, body {
+    width: 100%;
+    height: 100%;
+    margin: 0;
+    padding: 0;
+    font-family: 'Roboto', sans-serif;
+}