Skip to content

Commit ce136c6

Browse files
committed
Add life demo
1 parent eff56c6 commit ce136c6

File tree

3 files changed

+244
-0
lines changed

3 files changed

+244
-0
lines changed

docs/index.html

+112
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
<!DOCTYPE html>
2+
<html lang="en-US">
3+
<head>
4+
<meta charset='utf-8'>
5+
<meta http-equiv="X-UA-Compatible" content="chrome=1">
6+
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
7+
<link href='https://fonts.googleapis.com/css?family=Architects+Daughter' rel='stylesheet' type='text/css'>
8+
<link rel="stylesheet" href="http://greyblake.com/blablabla/assets/css/style.css?v=e9b1cf394c8decca13410c03ce9153d6ee8234af" media="screen" type="text/css">
9+
<link rel="stylesheet" href="http://greyblake.com/blablabla/assets/css/print.css" media="print" type="text/css">
10+
11+
<!--[if lt IE 9]>
12+
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
13+
<![endif]-->
14+
15+
<!-- Begin Jekyll SEO tag v2.3.0 -->
16+
<title>Whatlang - natural language detection for Rust</title>
17+
<meta property="og:title" content="Whatlang - natural language detection for Rust" />
18+
<meta property="og:locale" content="en_US" />
19+
<meta name="description" content="Natural language detection for Rust with focus on simplicity and performance." />
20+
<meta property="og:description" content="Natural language detection for Rust with focus on simplicity and performance." />
21+
<link rel="canonical" href="http://greyblake.com/whatlang-rs/" />
22+
<meta property="og:url" content="http://greyblake.com/whatlang-rs/" />
23+
<meta property="og:site_name" content="Whatlang demo" />
24+
<script type="application/ld+json">
25+
{"name":"Whatlang","description":"Natural language detection for Rust with focus on simplicity and performance.","author":null,"@type":"WebSite","url":"http://greyblake.com/whatlang-rs/","image":null,"publisher":null,"headline":"Hello Bla","dateModified":null,"datePublished":null,"sameAs":null,"mainEntityOfPage":null,"@context":"http://schema.org"}</script>
26+
<!-- End Jekyll SEO tag -->
27+
28+
</head>
29+
30+
<body>
31+
<header>
32+
<div class="inner">
33+
<a href="http://greyblake.com/whatlang-rs/">
34+
<h1>Whatlang-rs</h1>
35+
</a>
36+
<h2>Natural language detection for Rust</h2>
37+
38+
<a href="https://github.com/greyblake/whatlang-rs" class="button"><small>View project on</small> GitHub</a>
39+
40+
41+
</div>
42+
</header>
43+
44+
<div id="content-wrapper">
45+
<div class="inner clearfix">
46+
<section id="main-content">
47+
48+
<div class="form">
49+
<textarea id="input" cols="80", rows="10">Type something here to see whatlang in action =)</textarea>
50+
</div>
51+
52+
53+
Language: <span id="lang-name"></span>
54+
<br>
55+
Script: <span id="script-name"></span>
56+
<br>
57+
Confidence: <span id="confidence"></span>
58+
<br>
59+
Is reliable: <span id="isReliable"></span>
60+
61+
62+
</section>
63+
64+
<aside id="sidebar">
65+
66+
67+
68+
<p class="repo-owner"><a href="https://github.com/greyblake/whatlang-rs">whatlang-rs</a> is maintained by <a href="https://github.com/greyblake">Sergey Potapov</a>.</p>
69+
70+
71+
</aside>
72+
</div>
73+
</div>
74+
75+
<script src="whatlang-demo.js"></script>
76+
<script>
77+
78+
Rust.whatlang_demo.then( function(demo) {
79+
function setInfo(info) {
80+
var langName = document.getElementById("lang-name");
81+
var scriptName = document.getElementById("script-name");
82+
var confidence = document.getElementById("confidence");
83+
var isReliable = document.getElementById("isReliable");
84+
85+
if(info) {
86+
langName.innerText = info.lang_eng_name;
87+
scriptName.innerText = info.script_name;
88+
confidence.innerText = info.confidence;
89+
isReliable.innerText = info.is_reliable;
90+
} else {
91+
langName.innerText = "None";
92+
scriptName.innerText = "";
93+
confidence.innerText = "";
94+
isReliable.innerText = "";
95+
}
96+
}
97+
98+
function react() {
99+
var input = document.getElementById( "input" );
100+
var info = demo.detect(input.value);
101+
setInfo(info);
102+
}
103+
104+
react();
105+
input.addEventListener("keyup", function( event ) {
106+
react();
107+
});
108+
});
109+
</script>
110+
111+
</body>
112+
</html>

docs/whatlang-demo.js

+132
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
"use strict";
2+
3+
if( typeof Rust === 'undefined' ) {
4+
var Rust = {};
5+
}
6+
7+
(function( root, factory ) {
8+
if( typeof define === "function" && define.amd ) {
9+
define( [], factory );
10+
} else if( typeof module === "object" && module.exports ) {
11+
module.exports = factory();
12+
} else {
13+
factory();
14+
}
15+
}( this, function() {
16+
const Module = {};
17+
let HEAP8 = null;
18+
let HEAP16 = null;
19+
let HEAP32 = null;
20+
let HEAPU8 = null;
21+
let HEAPU16 = null;
22+
let HEAPU32 = null;
23+
let HEAPF32 = null;
24+
let HEAPF64 = null;
25+
26+
Object.defineProperty( Module, 'nodejs', { value: (typeof window === 'undefined') } );
27+
Object.defineProperty( Module, 'exports', { value: {} } );
28+
29+
const __imports = {
30+
env: {
31+
"__extjs_ff2c75b4783fd5c9d8c934bbd4a03e66527e05e4": function($0) {
32+
Module.STDWEB.tmp = Module.STDWEB.to_js( $0 );
33+
},
34+
"__extjs_de942ef9ccd064c41dc92d5b5bf83c61aeb00278": function($0) {
35+
Module.STDWEB.increment_refcount( $0 );
36+
},
37+
"__extjs_d8a439451216bbc6cd9f3012f189d2ad6a2e9459": function($0) {
38+
Module.STDWEB.decrement_refcount( $0 );
39+
},
40+
"__extjs_dcc28a1d067f81d96c559505e230eaec847de188": function($0, $1) {
41+
Module.STDWEB.from_js($0, (function(){Module.exports.detect = Module.STDWEB.to_js($1);})());
42+
},
43+
"__extjs_d0f9580b9cfe82e2ee67d3707e52d87bbabe59f2": function() {
44+
Module.STDWEB = {};
45+
},
46+
"__extjs_4985c7263834081d123cc7eff225fe2010747092": function() {
47+
Module.STDWEB.alloc = Module.web_malloc ; Module.STDWEB.dyncall = function (signature , ptr , args){return Module.web_table.get (ptr). apply (null , args);}; Module.STDWEB.utf8_len = function utf8_len (str){let len = 0 ; for (let i = 0 ; i < str.length ; ++i){let u = str.charCodeAt (i); if (u >= 0xD800 && u <= 0xDFFF){u = 0x10000 + ((u & 0x3FF)<< 10)| (str.charCodeAt (++i)& 0x3FF);}if (u <= 0x7F){++len ;}else if (u <= 0x7FF){len += 2 ;}else if (u <= 0xFFFF){len += 3 ;}else if (u <= 0x1FFFFF){len += 4 ;}else if (u <= 0x3FFFFFF){len += 5 ;}else {len += 6 ;}}return len ;};
48+
},
49+
"__extjs_a986a787f7d7d1abc8c97008ceb5c6945d3f620f": function() {
50+
Module.STDWEB.to_utf8 = function to_utf8 (str , addr){for (var i = 0 ; i < str.length ; ++i){var u = str.charCodeAt (i); if (u >= 0xD800 && u <= 0xDFFF){u = 0x10000 + ((u & 0x3FF)<< 10)| (str.charCodeAt (++i)& 0x3FF);}if (u <= 0x7F){HEAPU8 [addr ++]= u ;}else if (u <= 0x7FF){HEAPU8 [addr ++]= 0xC0 | (u >> 6); HEAPU8 [addr ++]= 0x80 | (u & 63);}else if (u <= 0xFFFF){HEAPU8 [addr ++]= 0xE0 | (u >> 12); HEAPU8 [addr ++]= 0x80 | ((u >> 6)& 63); HEAPU8 [addr ++]= 0x80 | (u & 63);}else if (u <= 0x1FFFFF){HEAPU8 [addr ++]= 0xF0 | (u >> 18); HEAPU8 [addr ++]= 0x80 | ((u >> 12)& 63); HEAPU8 [addr ++]= 0x80 | ((u >> 6)& 63); HEAPU8 [addr ++]= 0x80 | (u & 63);}else if (u <= 0x3FFFFFF){HEAPU8 [addr ++]= 0xF8 | (u >> 24); HEAPU8 [addr ++]= 0x80 | ((u >> 18)& 63); HEAPU8 [addr ++]= 0x80 | ((u >> 12)& 63); HEAPU8 [addr ++]= 0x80 | ((u >> 6)& 63); HEAPU8 [addr ++]= 0x80 | (u & 63);}else {HEAPU8 [addr ++]= 0xFC | (u >> 30); HEAPU8 [addr ++]= 0x80 | ((u >> 24)& 63); HEAPU8 [addr ++]= 0x80 | ((u >> 18)& 63); HEAPU8 [addr ++]= 0x80 | ((u >> 12)& 63); HEAPU8 [addr ++]= 0x80 | ((u >> 6)& 63); HEAPU8 [addr ++]= 0x80 | (u & 63);}}};
51+
},
52+
"__extjs_da4d8e153d6e312a947afb9d256a49eaf1c1648e": function() {
53+
Module.STDWEB.to_js = function to_js (address){var kind = HEAPU8 [address + 12]; if (kind ===0){return undefined ;}else if (kind ===1){return null ;}else if (kind ===2){return HEAP32 [address / 4];}else if (kind ===3){return HEAPF64 [address / 8];}else if (kind ===4){var pointer = HEAPU32 [address / 4]; var length = HEAPU32 [(address + 4)/ 4]; return Module.STDWEB.to_js_string (pointer , length);}else if (kind ===5){return false ;}else if (kind ===6){return true ;}else if (kind ===7){var pointer = HEAPU32 [address / 4]; var length = HEAPU32 [(address + 4)/ 4]; var output = []; for (var i = 0 ; i < length ; ++i){output.push (Module.STDWEB.to_js (pointer + i * 16));}return output ;}else if (kind ===8){var value_array_pointer = HEAPU32 [address / 4]; var length = HEAPU32 [(address + 4)/ 4]; var key_array_pointer = HEAPU32 [(address + 8)/ 4]; var output = {}; for (var i = 0 ; i < length ; ++i){var key_pointer = HEAPU32 [(key_array_pointer + i * 8)/ 4]; var key_length = HEAPU32 [(key_array_pointer + 4 + i * 8)/ 4]; var key = Module.STDWEB.to_js_string (key_pointer , key_length); var value = Module.STDWEB.to_js (value_array_pointer + i * 16); output [key]= value ;}return output ;}else if (kind ===9 || kind == 11 || kind == 12){return Module.STDWEB.acquire_js_reference (HEAP32 [address / 4]);}else if (kind ===10){var adapter_pointer = HEAPU32 [address / 4]; var pointer = HEAPU32 [(address + 4)/ 4]; var deallocator_pointer = HEAPU32 [(address + 8)/ 4]; var output = function (){var args = Module.STDWEB.alloc (16); Module.STDWEB.serialize_array (args , arguments); Module.STDWEB.dyncall ("vii" , adapter_pointer , [pointer , args]); var result = Module.STDWEB.tmp ; Module.STDWEB.tmp = null ; return result ;}; output.drop = function (){output.drop = null ; Module.STDWEB.dyncall ("vi" , deallocator_pointer , [pointer]);}; return output ;}};
54+
},
55+
"__extjs_2171fbf7dcd6cce3ad90767662e531aee9577813": function() {
56+
Module.STDWEB.serialize_object = function serialize_object (address , value){var keys = Object.keys (value); var length = keys.length ; var key_array_pointer = Module.STDWEB.alloc (length * 8); var value_array_pointer = Module.STDWEB.alloc (length * 16); HEAPU8 [address + 12]= 8 ; HEAPU32 [address / 4]= value_array_pointer ; HEAPU32 [(address + 4)/ 4]= length ; HEAPU32 [(address + 8)/ 4]= key_array_pointer ; for (var i = 0 ; i < length ; ++i){var key = keys [i]; var key_length = Module.STDWEB.utf8_len (key); var key_pointer = Module.STDWEB.alloc (key_length); Module.STDWEB.to_utf8 (key , key_pointer); var key_address = key_array_pointer + i * 8 ; HEAPU32 [key_address / 4]= key_pointer ; HEAPU32 [(key_address + 4)/ 4]= key_length ; Module.STDWEB.from_js (value_array_pointer + i * 16 , value [key]);}}; Module.STDWEB.serialize_array = function serialize_array (address , value){var length = value.length ; var pointer = Module.STDWEB.alloc (length * 16); HEAPU8 [address + 12]= 7 ; HEAPU32 [address / 4]= pointer ; HEAPU32 [(address + 4)/ 4]= length ; for (var i = 0 ; i < length ; ++i){Module.STDWEB.from_js (pointer + i * 16 , value [i]);}}; Module.STDWEB.from_js = function from_js (address , value){var kind = Object.prototype.toString.call (value); if (kind ==="[object String]"){var length = Module.STDWEB.utf8_len (value); var pointer = 0 ; if (length > 0){pointer = Module.STDWEB.alloc (length); Module.STDWEB.to_utf8 (value , pointer);}HEAPU8 [address + 12]= 4 ; HEAPU32 [address / 4]= pointer ; HEAPU32 [(address + 4)/ 4]= length ;}else if (kind ==="[object Number]"){if (value ===(value | 0)){HEAPU8 [address + 12]= 2 ; HEAP32 [address / 4]= value ;}else {HEAPU8 [address + 12]= 3 ; HEAPF64 [address / 8]= value ;}}else if (value ===null){HEAPU8 [address + 12]= 1 ;}else if (value ===undefined){HEAPU8 [address + 12]= 0 ;}else if (value ===false){HEAPU8 [address + 12]= 5 ;}else if (value ===true){HEAPU8 [address + 12]= 6 ;}else {var refid = Module.STDWEB.acquire_rust_reference (value); var id = 9 ; if (kind ==="[object Object]"){id = 11 ;}else if (kind ==="[object Array]" || kind ==="[object Arguments]"){id = 12 ;}HEAPU8 [address + 12]= id ; HEAP32 [address / 4]= refid ;}};
57+
},
58+
"__extjs_8a13e041b26592fd43280496ac01f5f3e049218e": function() {
59+
Module.STDWEB.to_js_string = function to_js_string (index , length){index = index | 0 ; length = length | 0 ; var end = (index | 0)+ (length | 0); var output = "" ; while (index < end){var x = HEAPU8 [index ++]; if (x < 128){output += String.fromCharCode (x); continue ;}var init = (x & (0x7F >> 2)); var y = 0 ; if (index < end){y = HEAPU8 [index ++];}var ch = (init << 6)| (y & 63); if (x >= 0xE0){var z = 0 ; if (index < end){z = HEAPU8 [index ++];}var y_z = ((y & 63)<< 6)| (z & 63); ch = init << 12 | y_z ; if (x >= 0xF0){var w = 0 ; if (index < end){w = HEAPU8 [index ++];}ch = (init & 7)<< 18 | ((y_z << 6)| (w & 63));}}output += String.fromCharCode (ch); continue ;}return output ;};
60+
},
61+
"__extjs_b67f2836bfcab57acb8e21dbe580790ff03192f9": function() {
62+
var id_to_ref_map = {}; var id_to_refcount_map = {}; var ref_to_id_map = new WeakMap (); var ref_to_id_symbol_map = {}; var last_refid = 1 ; Module.STDWEB.acquire_rust_reference = function (reference){if (reference ===undefined || reference ===null){return 0 ;}var refid = ref_to_id_map.get (reference); if (refid ===undefined){refid = ref_to_id_symbol_map [reference];}if (refid ===undefined){refid = last_refid ++; if (typeof reference ==="symbol"){ref_to_id_symbol_map [reference]= refid ;}else {ref_to_id_map.set (reference , refid);}id_to_ref_map [refid]= reference ; id_to_refcount_map [refid]= 1 ;}else {id_to_refcount_map [refid]++;}return refid ;}; Module.STDWEB.acquire_js_reference = function (refid){return id_to_ref_map [refid];}; Module.STDWEB.increment_refcount = function (refid){id_to_refcount_map [refid]++;}; Module.STDWEB.decrement_refcount = function (refid){id_to_refcount_map [refid]--; if (id_to_refcount_map [refid]===0){var reference = id_to_ref_map [refid]; delete id_to_ref_map [refid]; delete id_to_refcount_map [refid]; if (typeof reference ==="symbol"){delete ref_to_id_symbol_map [reference];}else {ref_to_id_map.delete (reference);}}};
63+
},
64+
"__extjs_dc2fd915bd92f9e9c6a3bd15174f1414eee3dbaf": function() {
65+
console.error( 'Encountered a panic!' );
66+
},
67+
"__extjs_b00b05929b445348eab177b6d3f509bcaa28782e": function($0, $1) {
68+
console.error( 'Panic error message:', Module.STDWEB.to_js_string( $0, $1 ) );
69+
},
70+
"__extjs_20637d8f642203b38c263a5d0f43b9d88ec67c31": function($0, $1, $2) {
71+
console.error( 'Panic location:', Module.STDWEB.to_js_string( $0, $1 ) + ':' + $2 );
72+
},
73+
"__extjs_2cb8f8b2763d8d6a8b8ac2ab55fce29a7fe32f32": function($0, $1) {
74+
Module.STDWEB.from_js($0, (function(){return Module.STDWEB.to_js($1);})());
75+
},
76+
"__web_on_grow": function() {
77+
const buffer = Module.instance.exports.memory.buffer;
78+
HEAP8 = new Int8Array( buffer );
79+
HEAP16 = new Int16Array( buffer );
80+
HEAP32 = new Int32Array( buffer );
81+
HEAPU8 = new Uint8Array( buffer );
82+
HEAPU16 = new Uint16Array( buffer );
83+
HEAPU32 = new Uint32Array( buffer );
84+
HEAPF32 = new Float32Array( buffer );
85+
HEAPF64 = new Float64Array( buffer );
86+
}
87+
}
88+
};
89+
90+
function __load( instance ) {
91+
Object.defineProperty( Module, 'instance', { value: instance } );
92+
Object.defineProperty( Module, 'web_malloc', { value: Module.instance.exports.__web_malloc } );
93+
Object.defineProperty( Module, 'web_free', { value: Module.instance.exports.__web_free } );
94+
Object.defineProperty( Module, 'web_table', { value: Module.instance.exports.__web_table } );
95+
96+
if( typeof module !== 'undefined' && module.exports ) {
97+
module.exports = Module.exports;
98+
} else {
99+
Rust.whatlang_demo.exports = Module.exports;
100+
}
101+
102+
__imports.env.__web_on_grow();
103+
Module.instance.exports.__web_main();
104+
}
105+
106+
if( Module.nodejs ) {
107+
const fs = require( 'fs' );
108+
const path = require( 'path' );
109+
const wasm_path = path.join( __dirname, "whatlang-demo.wasm" );
110+
const buffer = fs.readFileSync( wasm_path );
111+
const mod = new WebAssembly.Module( buffer );
112+
const instance = new WebAssembly.Instance( mod, __imports );
113+
__load( instance );
114+
return Module.exports;
115+
} else {
116+
const __promise = fetch( "whatlang-demo.wasm" )
117+
.then( response => response.arrayBuffer() )
118+
.then( bytes => WebAssembly.instantiate( bytes, __imports ) )
119+
.then( results => {
120+
__load( results.instance );
121+
console.log( "Finished loading Rust wasm module 'whatlang_demo'" );
122+
return Module.exports;
123+
})
124+
.catch( error => {
125+
console.log( "Error loading Rust wasm module 'whatlang_demo':", error );
126+
throw error;
127+
});
128+
129+
Rust.whatlang_demo = __promise;
130+
return __promise;
131+
}
132+
}));

docs/whatlang-demo.wasm

399 KB
Binary file not shown.

0 commit comments

Comments
 (0)