From 6909e38fc85f4cbd11486da194f7513d0749729d Mon Sep 17 00:00:00 2001 From: Neil Fraser Date: Thu, 16 Oct 2014 16:58:32 -0700 Subject: [PATCH] Move Block Factory from apps to demos. Add icons to demos. --- appengine/redirect.html | 5 + apps/code/generated/af.js | 50 ------- apps/code/generated/arz.js | 50 ------- apps/code/generated/bg.js | 50 ------- apps/code/generated/bn.js | 50 ------- apps/code/generated/cdo.js | 50 ------- apps/code/generated/fo.js | 50 ------- apps/code/generated/frr.js | 50 ------- apps/code/generated/ka.js | 50 ------- apps/code/generated/km.js | 50 ------- apps/code/generated/ksh.js | 50 ------- apps/code/generated/ku-latn.js | 50 ------- apps/code/generated/ky.js | 50 ------- apps/code/generated/la.js | 50 ------- apps/code/generated/ml.js | 50 ------- apps/code/generated/mzn.js | 50 ------- apps/code/generated/pa.js | 50 ------- apps/code/generated/ta.js | 50 ------- apps/code/generated/te.js | 50 ------- apps/code/generated/tzm.js | 50 ------- apps/graph/generated/af.js | 50 ------- apps/graph/generated/arz.js | 50 ------- apps/graph/generated/bg.js | 50 ------- apps/graph/generated/bn.js | 50 ------- apps/graph/generated/cdo.js | 50 ------- apps/graph/generated/fo.js | 50 ------- apps/graph/generated/frr.js | 50 ------- apps/graph/generated/ka.js | 50 ------- apps/graph/generated/km.js | 50 ------- apps/graph/generated/ksh.js | 50 ------- apps/graph/generated/ku-latn.js | 50 ------- apps/graph/generated/ky.js | 50 ------- apps/graph/generated/la.js | 50 ------- apps/graph/generated/ml.js | 50 ------- apps/graph/generated/mzn.js | 50 ------- apps/graph/generated/pa.js | 50 ------- apps/graph/generated/ta.js | 50 ------- apps/graph/generated/te.js | 50 ------- apps/graph/generated/tzm.js | 50 ------- apps/index/generated/ace.js | 2 +- apps/index/generated/af.js | 45 ------ apps/index/generated/ar.js | 2 +- apps/index/generated/arz.js | 45 ------ apps/index/generated/az.js | 2 +- apps/index/generated/be-tarask.js | 2 +- apps/index/generated/bg.js | 45 ------ apps/index/generated/bn.js | 45 ------ apps/index/generated/br.js | 2 +- apps/index/generated/ca.js | 2 +- apps/index/generated/cdo.js | 45 ------ apps/index/generated/cs.js | 2 +- apps/index/generated/da.js | 2 +- apps/index/generated/de.js | 2 +- apps/index/generated/diq.js | 2 +- apps/index/generated/el.js | 2 +- apps/index/generated/en.js | 2 +- apps/index/generated/es.js | 2 +- apps/index/generated/eu.js | 2 +- apps/index/generated/fa.js | 2 +- apps/index/generated/fi.js | 2 +- apps/index/generated/fo.js | 45 ------ apps/index/generated/fr.js | 2 +- apps/index/generated/frr.js | 45 ------ apps/index/generated/gl.js | 2 +- apps/index/generated/gn.js | 2 +- apps/index/generated/hak.js | 2 +- apps/index/generated/he.js | 2 +- apps/index/generated/hi.js | 2 +- apps/index/generated/hrx.js | 2 +- apps/index/generated/hu.js | 2 +- apps/index/generated/ia.js | 2 +- apps/index/generated/is.js | 2 +- apps/index/generated/it.js | 2 +- apps/index/generated/ja.js | 2 +- apps/index/generated/ka.js | 45 ------ apps/index/generated/km.js | 45 ------ apps/index/generated/ko.js | 2 +- apps/index/generated/ksh.js | 45 ------ apps/index/generated/ku-latn.js | 45 ------ apps/index/generated/ky.js | 45 ------ apps/index/generated/la.js | 45 ------ apps/index/generated/lb.js | 2 +- apps/index/generated/lrc.js | 2 +- apps/index/generated/lt.js | 2 +- apps/index/generated/lv.js | 2 +- apps/index/generated/mg.js | 2 +- apps/index/generated/mk.js | 2 +- apps/index/generated/ml.js | 45 ------ apps/index/generated/mr.js | 2 +- apps/index/generated/ms.js | 2 +- apps/index/generated/mzn.js | 45 ------ apps/index/generated/nb.js | 2 +- apps/index/generated/ne.js | 2 +- apps/index/generated/nl.js | 2 +- apps/index/generated/oc.js | 2 +- apps/index/generated/pa.js | 45 ------ apps/index/generated/pl.js | 2 +- apps/index/generated/pms.js | 2 +- apps/index/generated/ps.js | 2 +- apps/index/generated/pt-br.js | 2 +- apps/index/generated/pt.js | 2 +- apps/index/generated/ro.js | 2 +- apps/index/generated/ru.js | 2 +- apps/index/generated/sc.js | 2 +- apps/index/generated/sco.js | 2 +- apps/index/generated/si.js | 2 +- apps/index/generated/sk.js | 2 +- apps/index/generated/sr.js | 2 +- apps/index/generated/sv.js | 2 +- apps/index/generated/sw.js | 2 +- apps/index/generated/ta.js | 45 ------ apps/index/generated/te.js | 45 ------ apps/index/generated/th.js | 2 +- apps/index/generated/tlh.js | 2 +- apps/index/generated/tr.js | 2 +- apps/index/generated/tzm.js | 45 ------ apps/index/generated/uk.js | 2 +- apps/index/generated/vi.js | 2 +- apps/index/generated/zh-hans.js | 2 +- apps/index/generated/zh-hant.js | 2 +- apps/index/template.soy | 12 -- apps/json/ace.json | 2 - apps/json/ar.json | 2 - apps/json/be-tarask.json | 2 - apps/json/br.json | 2 - apps/json/ca.json | 2 - apps/json/cs.json | 2 - apps/json/da.json | 2 - apps/json/de.json | 2 - apps/json/el.json | 2 - apps/json/en.json | 4 +- apps/json/es.json | 2 - apps/json/fa.json | 2 - apps/json/fr.json | 2 - apps/json/gl.json | 2 - apps/json/he.json | 2 - apps/json/hi.json | 2 - apps/json/hrx.json | 2 - apps/json/hu.json | 2 - apps/json/ia.json | 2 - apps/json/is.json | 2 - apps/json/it.json | 2 - apps/json/ja.json | 2 - apps/json/keys.json | 2 - apps/json/ko.json | 2 - apps/json/lb.json | 1 - apps/json/mg.json | 2 - apps/json/ms.json | 2 - apps/json/nb.json | 2 - apps/json/ne.json | 1 - apps/json/nl.json | 2 - apps/json/oc.json | 1 - apps/json/pl.json | 2 - apps/json/pms.json | 2 - apps/json/pt-br.json | 2 - apps/json/qqq.json | 2 - apps/json/ro.json | 2 - apps/json/ru.json | 2 - apps/json/sc.json | 2 - apps/json/sco.json | 2 - apps/json/sr.json | 2 - apps/json/sv.json | 2 - apps/json/th.json | 2 - apps/json/tr.json | 2 - apps/json/uk.json | 2 - apps/json/vi.json | 2 - apps/json/zh-hans.json | 2 - apps/json/zh-hant.json | 2 - apps/maze/generated/af.js | 61 -------- apps/maze/generated/arz.js | 61 -------- apps/maze/generated/bg.js | 61 -------- apps/maze/generated/bn.js | 61 -------- apps/maze/generated/cdo.js | 61 -------- apps/maze/generated/fo.js | 61 -------- apps/maze/generated/frr.js | 61 -------- apps/maze/generated/ka.js | 61 -------- apps/maze/generated/km.js | 61 -------- apps/maze/generated/ksh.js | 61 -------- apps/maze/generated/ku-latn.js | 61 -------- apps/maze/generated/ky.js | 61 -------- apps/maze/generated/la.js | 61 -------- apps/maze/generated/ml.js | 61 -------- apps/maze/generated/mzn.js | 61 -------- apps/maze/generated/pa.js | 61 -------- apps/maze/generated/ta.js | 61 -------- apps/maze/generated/te.js | 61 -------- apps/maze/generated/tzm.js | 61 -------- apps/plane/generated/af.js | 68 --------- apps/plane/generated/arz.js | 68 --------- apps/plane/generated/bg.js | 68 --------- apps/plane/generated/bn.js | 68 --------- apps/plane/generated/cdo.js | 68 --------- apps/plane/generated/fo.js | 68 --------- apps/plane/generated/frr.js | 68 --------- apps/plane/generated/ka.js | 68 --------- apps/plane/generated/km.js | 68 --------- apps/plane/generated/ksh.js | 68 --------- apps/plane/generated/ku-latn.js | 68 --------- apps/plane/generated/ky.js | 68 --------- apps/plane/generated/la.js | 68 --------- apps/plane/generated/ml.js | 68 --------- apps/plane/generated/mzn.js | 68 --------- apps/plane/generated/pa.js | 68 --------- apps/plane/generated/ta.js | 68 --------- apps/plane/generated/te.js | 68 --------- apps/plane/generated/tzm.js | 68 --------- apps/turtle/generated/af.js | 50 ------- apps/turtle/generated/arz.js | 50 ------- apps/turtle/generated/bg.js | 50 ------- apps/turtle/generated/bn.js | 50 ------- apps/turtle/generated/cdo.js | 50 ------- apps/turtle/generated/fo.js | 50 ------- apps/turtle/generated/frr.js | 50 ------- apps/turtle/generated/ka.js | 50 ------- apps/turtle/generated/km.js | 50 ------- apps/turtle/generated/ksh.js | 50 ------- apps/turtle/generated/ku-latn.js | 50 ------- apps/turtle/generated/ky.js | 50 ------- apps/turtle/generated/la.js | 50 ------- apps/turtle/generated/ml.js | 50 ------- apps/turtle/generated/mzn.js | 50 ------- apps/turtle/generated/pa.js | 50 ------- apps/turtle/generated/ta.js | 50 ------- apps/turtle/generated/te.js | 50 ------- apps/turtle/generated/tzm.js | 50 ------- {apps => demos}/blockfactory/blocks.js | 0 {apps => demos}/blockfactory/factory.js | 0 .../blockfactory/icon.png | Bin {apps => demos}/blockfactory/index.html | 5 +- {apps => demos}/blockfactory/link.png | Bin {apps => demos}/blockfactory/preview.html | 0 {apps => demos}/blockfactory/preview.js | 0 demos/fixed/icon.png | Bin 0 -> 2130 bytes demos/generator/icon.png | Bin 0 -> 3600 bytes demos/iframe/icon.png | Bin 0 -> 3260 bytes demos/index.html | 131 +++++++++++++++--- demos/interpreter/icon.png | Bin 0 -> 3200 bytes demos/maxBlocks/icon.png | Bin 0 -> 2003 bytes demos/prettify.css | 1 + demos/prettify.js | 30 ++++ demos/rtl/icon.png | Bin 0 -> 3140 bytes demos/storage/icon.png | Bin 0 -> 3268 bytes demos/toolbox/icon.png | Bin 0 -> 2827 bytes 243 files changed, 213 insertions(+), 6344 deletions(-) delete mode 100644 apps/code/generated/af.js delete mode 100644 apps/code/generated/arz.js delete mode 100644 apps/code/generated/bg.js delete mode 100644 apps/code/generated/bn.js delete mode 100644 apps/code/generated/cdo.js delete mode 100644 apps/code/generated/fo.js delete mode 100644 apps/code/generated/frr.js delete mode 100644 apps/code/generated/ka.js delete mode 100644 apps/code/generated/km.js delete mode 100644 apps/code/generated/ksh.js delete mode 100644 apps/code/generated/ku-latn.js delete mode 100644 apps/code/generated/ky.js delete mode 100644 apps/code/generated/la.js delete mode 100644 apps/code/generated/ml.js delete mode 100644 apps/code/generated/mzn.js delete mode 100644 apps/code/generated/pa.js delete mode 100644 apps/code/generated/ta.js delete mode 100644 apps/code/generated/te.js delete mode 100644 apps/code/generated/tzm.js delete mode 100644 apps/graph/generated/af.js delete mode 100644 apps/graph/generated/arz.js delete mode 100644 apps/graph/generated/bg.js delete mode 100644 apps/graph/generated/bn.js delete mode 100644 apps/graph/generated/cdo.js delete mode 100644 apps/graph/generated/fo.js delete mode 100644 apps/graph/generated/frr.js delete mode 100644 apps/graph/generated/ka.js delete mode 100644 apps/graph/generated/km.js delete mode 100644 apps/graph/generated/ksh.js delete mode 100644 apps/graph/generated/ku-latn.js delete mode 100644 apps/graph/generated/ky.js delete mode 100644 apps/graph/generated/la.js delete mode 100644 apps/graph/generated/ml.js delete mode 100644 apps/graph/generated/mzn.js delete mode 100644 apps/graph/generated/pa.js delete mode 100644 apps/graph/generated/ta.js delete mode 100644 apps/graph/generated/te.js delete mode 100644 apps/graph/generated/tzm.js delete mode 100644 apps/index/generated/af.js delete mode 100644 apps/index/generated/arz.js delete mode 100644 apps/index/generated/bg.js delete mode 100644 apps/index/generated/bn.js delete mode 100644 apps/index/generated/cdo.js delete mode 100644 apps/index/generated/fo.js delete mode 100644 apps/index/generated/frr.js delete mode 100644 apps/index/generated/ka.js delete mode 100644 apps/index/generated/km.js delete mode 100644 apps/index/generated/ksh.js delete mode 100644 apps/index/generated/ku-latn.js delete mode 100644 apps/index/generated/ky.js delete mode 100644 apps/index/generated/la.js delete mode 100644 apps/index/generated/ml.js delete mode 100644 apps/index/generated/mzn.js delete mode 100644 apps/index/generated/pa.js delete mode 100644 apps/index/generated/ta.js delete mode 100644 apps/index/generated/te.js delete mode 100644 apps/index/generated/tzm.js delete mode 100644 apps/maze/generated/af.js delete mode 100644 apps/maze/generated/arz.js delete mode 100644 apps/maze/generated/bg.js delete mode 100644 apps/maze/generated/bn.js delete mode 100644 apps/maze/generated/cdo.js delete mode 100644 apps/maze/generated/fo.js delete mode 100644 apps/maze/generated/frr.js delete mode 100644 apps/maze/generated/ka.js delete mode 100644 apps/maze/generated/km.js delete mode 100644 apps/maze/generated/ksh.js delete mode 100644 apps/maze/generated/ku-latn.js delete mode 100644 apps/maze/generated/ky.js delete mode 100644 apps/maze/generated/la.js delete mode 100644 apps/maze/generated/ml.js delete mode 100644 apps/maze/generated/mzn.js delete mode 100644 apps/maze/generated/pa.js delete mode 100644 apps/maze/generated/ta.js delete mode 100644 apps/maze/generated/te.js delete mode 100644 apps/maze/generated/tzm.js delete mode 100644 apps/plane/generated/af.js delete mode 100644 apps/plane/generated/arz.js delete mode 100644 apps/plane/generated/bg.js delete mode 100644 apps/plane/generated/bn.js delete mode 100644 apps/plane/generated/cdo.js delete mode 100644 apps/plane/generated/fo.js delete mode 100644 apps/plane/generated/frr.js delete mode 100644 apps/plane/generated/ka.js delete mode 100644 apps/plane/generated/km.js delete mode 100644 apps/plane/generated/ksh.js delete mode 100644 apps/plane/generated/ku-latn.js delete mode 100644 apps/plane/generated/ky.js delete mode 100644 apps/plane/generated/la.js delete mode 100644 apps/plane/generated/ml.js delete mode 100644 apps/plane/generated/mzn.js delete mode 100644 apps/plane/generated/pa.js delete mode 100644 apps/plane/generated/ta.js delete mode 100644 apps/plane/generated/te.js delete mode 100644 apps/plane/generated/tzm.js delete mode 100644 apps/turtle/generated/af.js delete mode 100644 apps/turtle/generated/arz.js delete mode 100644 apps/turtle/generated/bg.js delete mode 100644 apps/turtle/generated/bn.js delete mode 100644 apps/turtle/generated/cdo.js delete mode 100644 apps/turtle/generated/fo.js delete mode 100644 apps/turtle/generated/frr.js delete mode 100644 apps/turtle/generated/ka.js delete mode 100644 apps/turtle/generated/km.js delete mode 100644 apps/turtle/generated/ksh.js delete mode 100644 apps/turtle/generated/ku-latn.js delete mode 100644 apps/turtle/generated/ky.js delete mode 100644 apps/turtle/generated/la.js delete mode 100644 apps/turtle/generated/ml.js delete mode 100644 apps/turtle/generated/mzn.js delete mode 100644 apps/turtle/generated/pa.js delete mode 100644 apps/turtle/generated/ta.js delete mode 100644 apps/turtle/generated/te.js delete mode 100644 apps/turtle/generated/tzm.js rename {apps => demos}/blockfactory/blocks.js (100%) rename {apps => demos}/blockfactory/factory.js (100%) rename apps/index/blockfactory.png => demos/blockfactory/icon.png (100%) rename {apps => demos}/blockfactory/index.html (96%) rename {apps => demos}/blockfactory/link.png (100%) rename {apps => demos}/blockfactory/preview.html (100%) rename {apps => demos}/blockfactory/preview.js (100%) create mode 100644 demos/fixed/icon.png create mode 100644 demos/generator/icon.png create mode 100644 demos/iframe/icon.png create mode 100644 demos/interpreter/icon.png create mode 100644 demos/maxBlocks/icon.png create mode 100644 demos/prettify.css create mode 100644 demos/prettify.js create mode 100644 demos/rtl/icon.png create mode 100644 demos/storage/icon.png create mode 100644 demos/toolbox/icon.png diff --git a/appengine/redirect.html b/appengine/redirect.html index 5e9bd5bb7..c35c9aa94 100644 --- a/appengine/redirect.html +++ b/appengine/redirect.html @@ -77,6 +77,11 @@ if (loc.match('/apps/puzzle/')) { loc = 'https://blockly-games.appspot.com/puzzle'; } +if (loc.match('/apps/blockfactory/')) { + // Block Factory moved from apps to demos on 16 Oct 2014. + loc = loc.replace('/apps/', '/demos/'); +} + if (loc.match('/apps/turtle/turtle.html')) { // Turtle moved to index.html on 7 Aug 2013. loc = loc.replace('/turtle.html', '/index.html'); diff --git a/apps/code/generated/af.js b/apps/code/generated/af.js deleted file mode 100644 index 13b50e194..000000000 --- a/apps/code/generated/af.js +++ /dev/null @@ -1,50 +0,0 @@ -// This file was automatically generated from common.soy. -// Please don't edit this file by hand. - -if (typeof apps == 'undefined') { var apps = {}; } - - -apps.messages = function(opt_data, opt_ignored, opt_ijData) { - return '
a visual programming environmentBlocklySee generated JavaScript code.Save and link to blocks.Run the program defined by the blocks in the workspace.Run ProgramResetOKCancelLogicLoopsMathTextListsColourVariablesFunctionsThere was a problem with the request.Share your blocks with this link:\\n\\n%1Sorry, \'%1\' doesn\'t correspond with any saved program.Could not load your saved file. Perhaps it was created with a different version of Blockly?listtext
'; -}; - - -apps.dialog = function(opt_data, opt_ignored, opt_ijData) { - return '
'; -}; - - -apps.codeDialog = function(opt_data, opt_ignored, opt_ijData) { - return '
' + apps.ok(null, null, opt_ijData) + '
'; -}; - - -apps.storageDialog = function(opt_data, opt_ignored, opt_ijData) { - return '
' + apps.ok(null, null, opt_ijData) + '
'; -}; - - -apps.ok = function(opt_data, opt_ignored, opt_ijData) { - return '
'; -}; - -; -// This file was automatically generated from template.soy. -// Please don't edit this file by hand. - -if (typeof codepage == 'undefined') { var codepage = {}; } - - -codepage.messages = function(opt_data, opt_ignored, opt_ijData) { - return apps.messages(null, null, opt_ijData) + '
Error parsing XML:\\n%1\\n\\nSelect \'OK\' to abandon your changes or \'Cancel\' to further edit the XML.Program error:\\n%1Maximum execution iterations exceeded.Delete all %1 blocks?
'; -}; - - -codepage.start = function(opt_data, opt_ignored, opt_ijData) { - return codepage.messages(null, null, opt_ijData) + ' @@ -80,7 +80,8 @@
-

Blockly : Block Factory

+

Blockly > + Demos > Block Factory

diff --git a/apps/blockfactory/link.png b/demos/blockfactory/link.png similarity index 100% rename from apps/blockfactory/link.png rename to demos/blockfactory/link.png diff --git a/apps/blockfactory/preview.html b/demos/blockfactory/preview.html similarity index 100% rename from apps/blockfactory/preview.html rename to demos/blockfactory/preview.html diff --git a/apps/blockfactory/preview.js b/demos/blockfactory/preview.js similarity index 100% rename from apps/blockfactory/preview.js rename to demos/blockfactory/preview.js diff --git a/demos/fixed/icon.png b/demos/fixed/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..01f251d5934ef96ee59e86029fdfc7dab0b1dec5 GIT binary patch literal 2130 zcmZvd_d6R38-}CyDo4Tlom-tYUo*ZmJXiH1lhCz~J}007{G>EAP^r4wxpS(s>-!uo|m z3nm9R^d8{+-yt@aWY7$&uRbaO0AL6HyL5ou{L3`S90)VeWu9Z>z9e~}fBUlr&CJ8@ z>6kv6+R6_%92w{PsFi0OoQ+BEu4po~KpQIXbVK7zKi0JC3wp_aMF!Pub=8o8kRZja zKqqy^>rRrv-y{p1ji-vzV4HA=mjU)w%36vmBAMmRce0FJdzP+sm$m&QhWgQG`C92^ zqQnZ;`GD)ksbAz_NXubPe)p>+0rd6|>cx`Mp4y0Vhg z-IFd13FeqSdzRzua4jZ5G=@ctMgk2{8vlvkZ%0m{z!sqOWEe(TWI-Kvp%)9qyY5P| zF()BYTc6CluK4RAIO5Wj)m8;c6Y8G;3esUXy0cX!OSWA-?ZniC)WOI-+nY;Ix%tZ& z+i=4&{8zNC0yu@ehFtHaBJj7^JBxZ-S}Kv_6DGOok1xC^ zkuWlzRotEY)Jt5j8fFnH9$0o=IAlD3b;05nf`9rO2lgbpb=NGY*QFL|ccXqv|n zH@^4OB+TkCXZCu+{P!Wb(t@qX-<~E=#wC>*B`xR%KPI7 z9Z`k2Sa9kxxx23Q$R(1MAS*|xOn;OlxJ+vFYnV~B_C~8@Di|p6|K(+{(TF@s(G(O? zj?znwZu_t&kVlmY4EMHU8LifY0HaW2Ynx%q)CwD3-RU_0z;%G1Q3jN9t!yD%*e96l zRzu?ev$mHB6=yIrJvRvVA#906Iy1G-%BRX#I^6Ey)KBw^oy;t28T0Y9dC^a(%<+@w0&CJ!~JU4(7sXAZcyJiBd~7sVlH$W zO%O82yA@~_;c&r{8`Vl~L8^(#c*QWC5qAtkBQDqr03_+h5_zn={~9&F1S@)_Z!SKG5K^|96o^#}nlz z|J;32g9~Y?Dl1Dm*s&yCEM0P?`p;Pbbz>w5p_9&tD5?XW)~pGuHrbi+NI-HCoSwAm zmV))6I_B&z1W!yF8>)ZT^f9-=pf;U&z=>^qU=*ppE^Xk7&>0uQRZ$(Z!S^Pk9{Ljh6_xVo>e#zfVy$PfekqA2RZAY1Q8Z?FAWkF`X2E1P;O#Qv1@){xccD1a_7 zXTN**ceZ#$zFICHgFeFSBESnHArDH>w2ON+J`PtJFZ}?aAq56Ihs5y| z4i)$6j0-9QA~e$IhLz)eJu(FCuQ=ak6ho;nZrcPFoEW8BhJZjLBe3A zyqs+E3z59?()C14P*3N58)?W;Jv-d@jf8y_*ltx1xazI9J8F9S%g_-}co6?CB||&P zn(-lcB0Z+h^O{OEfxcGD1_dtae$&6(0mlwkFZMO zx$;C()#Gub$Ez){k4V5G)8cdIXIX-Y{9375tD)mNhV#Kwv20mo&u3k-jzQ9=Mm$WP zShYtx){gD?Mn-#{9HN>xIP~tzcrcT%S=wmwT`_nYyC!kVowaU$5Rj_;-6W8#OrpfQa^kqVUl!JZnR z0v9GA=V{RmDl|?K*k5}2>%u|U!4ze2q>Mi;ZPCF0q^a8zkqnx9&4|8oQ^$ zX3E<=urIiU_l>>!a{lRFE^|pa(B&hi<#c754R;i*M?Q^m`jbBVK14z~o;SHl#TzVL z@+gxGg--{GrQBAvF4(`Qx*+wg)c$K>wWNixBAwb^t%J?`l&CcJOm)51yv^O?e;THa z)TBACivV~{!kC{*qwDt$UbdmQe@7Trs590Xw ANB{r; literal 0 HcmV?d00001 diff --git a/demos/generator/icon.png b/demos/generator/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..132016e3f23c860b4fc09c6352f7c0064cdf80ab GIT binary patch literal 3600 zcmV+r4)5`aP)M4a;%X*grn=8R_UBWsuAxsa5B?B21UEM+05vra><*Mk#S9Z>d{A~( zv{+}o-bh)6mW%miXsT+TOvv%Cix7*&NF*XopD8Bi|9>KC?odKT_NL%kg4cw8Co+%!3srfwbw*QDMR(txI7yw5NJKbE zq%;@}7%|acG$56^*d=4;)IrE(600^<;TiHST}7i8p&UGcumRpbkCRF8>)r{!?w!ay zehpQ*ws}Iz)mlU%5p}f&02)kUQa``Q{~owZO^t!R{#~pF1rPIWIT_ChV@C8~|Kabg z?$_07=-M~%;dP_VVu=%CKyNhQxzea+qph>g&a3m88x+*de!Tyad&rnnEzY0$sSsVEuB5P zx?3+&eV#wZXCn?>NBWw#@DS-Zv93P}8-B;c;39%LH(1FelSU31~4_(%RUM$HhY9!<4K_VvfV(qs7CL;V*BHs!j z@{N8Rym+Tgt;F43W_8chU_dH$YPHS^H|x1nd0+4&5cglx@o0MS{`fxtWM3((gzWv=sW{Ojhi=!mN)od3(4Qnycx&yL1KduLiSgni3S?_Sl${2dele9&WcNx)LseifYFy z{Hb~* zdBwh&_y3Ite(flJ>7QaNtj+2W*((DH0a8C4M?^?3{uIB7tMz{L_j9*1;`apjS-SzL zjh>x{3?Xuu)aES1#`b4KuMR?CXzgSJ`S_axb|0j?d*{@dJ0D!sJOw{mw&a%e> zRvpG>s#YtPrD)*CtoQia|D8jly^pH+0(l2O+_`P5c=x`6%$XkOuw}@d6+AE)+D7L- zVZ0@Ry)jEUeZ7R61&8=kbTas@VWgkbv7p|qi#rvS)wsAi!Cf#K9#CFZKy9@eFYg|> zcIeZhi9CiZW@*GJHm!e~j7Q?cmL=nm(O_dlS4-t+`2&`_NF65B#npobqaKjk)VZ6d zAMTy}TQ-@=kNF4xj%wN;SiNA(!<#eNy<;v49Eimy=m#hlIlHy!8eLA0Eul2>r zQ`v#V@4m*8_y0mgSqTvnf{FcLCLJDDv#vJY#V z#*Hs5A?*&#=tY5$0;+{gGASo${-o1MZF6&ui;>3x}n>Ww=w?rZ#AtB*~CZpX4 z^|^EB5*Qe0buAF`yo3{riH?rO)6%S(flUM6eJ6ElPXC!omPpvSbM}XU+s5 zJ3E_CKKaCa-4LoJsI9HFDqKJK-~&#dK22R+9Xg$kbLY+x9UV<&Wu>`a zZEY>5PMsnqCWhqXWEvV8>=RN~SI5qsJK42s7gbeN4heqz_;J)~+s6=|wN*Td)YMdV z?b_w=_>`0sjvP6HQmG^*C56PqM2q%}j11IjHGTT@Vb7jD?BBnifddDk)oR(dZ=bne zVqzjGDJdwGN)8=5#Lk^NZCC1Yxg3Q;!HE+m0O;1O8&y?R==FLFrE+p|C@n2TEEePM z?@w%OEIoVnv~o$0UfUw$?Afzy-MW>^%1Zk7?aR`oOY!mXY4HQ9tgIw8HI?({&vWnI zJroKBy?gg&!h{J-oH)^@43Epv)INIjXhK3lNJ~pYtyU8d5Wt5Yeu%es<2jG(*RON% z;6dEn+(=AJM5$C-&6|_c_`~$5s3^R=ywK@%xVtx=AUl8lyhY!B{ra(G%N7UP=FOWOdgGQa zUruRhDSEx0%a<>coSfXM@vBy?;@GicXfzs(MkDv`-Q&WA3*5eayVbIM_uY3SBqUH$ zQi5KuCqF-*q@*Ns`{Bcf0f>x@v`GeFUN;~hfID~Y5EBzaettdxDwWErzn7Pn*|j&# zZ($(@gMpx+Af`>5hC-oW(4aw9glyWh$$Wk5)-C4Foy+y>*Dc<@rnl}%?rGMnS-kVk zI~+T9jO65Gu3Wj&s)u;v#ti`0tXadTQKOJZBrURr$J@ig!l(nVHG< z?c4eO`=1Z_U%GS&fU#r8+LfoSuJQN8YPFiUxH#l;IXiajVE+91=ybM!M?7ZC7}CUZt z)KpflUd=17yu#qYgBd@5JflX9a!8&zbLJotiI_BL65F?Lw~(hPCVF~$+8yuW;zC_r z9q+&YJ_7~}AU;0coJ6>|*glZdG+)#Ft=jEfyLPRGFKl`vTwN^>!%HL*j7B3`t=8;A z?N#DUvC9$6o;{nPLx+-;l|^1&9w$$pABAe;zkt0XAcI_HjSy>kM0|Ek?jT?>>r-6ZiWMyTMotq}3^%k;x`EvUA?~ha}rAwDC#Kgof zbm&lmZpzKgeX6-~b8}78r%yM9hK8EfuU~JzFYNZV0(!lk4I4I? z3+Dj?1~{}Y_TGE%QBY6-z_@YaShj2#QmM4{G2~^3OeSO1s#S!ChjZxAA#;}4T6FB# zk>KE9rcRy8h!Gc)zkBS-LK#4ZnXeSnlx$Bq)C$|O`0@mnph&u1mnb@Sy@@BL?rnAey=Es z{=&k-uQD?;O#o0-RMerF7RbxXv*hRJw~aZFyu3V1AP{(rh|(BiEsU`iQ52gbNiqRw zl4W^+K|w)dI2b)QH#dfeW)V>|5itM;##jsy#R4Enl3pk*EUX!9dBSiik)NO6X1CiJ z5iKF22mogoW6>PPZD))X34%}xAS{3=iek~}bXfp$i71(fOhgpT7?T-e`-n&gHheZ_ zKmdR-)Z8urNjhgos)hV;%q=01C%(Hc65iIy*a0huc^YbV)9|-JZ-CQvehbQF73g z`-f5%H-dU}F~&M%S$>x>_8Nd^&1UmDqtO_bk&z*W;Q)S}APBGWJpTa^y~J@`v?z*A zg@uJ*g#<_+S9Q$caJ&iN1|nJ+I}wa~$Uv1R)MUT_6ysY;JDu9&;cG2?-stEY}nk7FPFMbGcmQVFYDB7-eN; zQgd_jxum3|)3PjA9XfRA%(tCse{Ds>0meuR=EtJ8mw8Va(+0%h5*R-^>_=Ym25DqXx2Ba?(0E-1dsHm^6Z<+{Q z!)~`vC!#w66on#UXVQRZKs1eL3~BPTv9~@c!KpSM=A^~p*1TDWFzE>Z&UN_N)(;M8Rt&1O z{sh`u>meE=5S?%pOjp>>-|K4kjt-Dr2dlyJJQRhn>!1_63#*V{T*dMhOrygUL)hta zWiGbcWCKSB>0dxlgyNg#Bt_tuVqX zA0EN|zki>-^5J20bV=yw8cg!aL;Y+&JYF9>ULU;Y)H1DcDcH1eexJ#M(U?HsU=jcb zJWK;lnT^(aRQWs3!DKXG{p#fe05j5)=(XQHKsPOnLF>t*(DMxOF_T8#LnxTWbowte zy00q$0H}1G8dAljQ}uZ8`6IpMPtV2Q)+fLm6$LvOItQvlS}NAhv_S_2O%;c+%PCyc z8@_jaEKGs|PeV06E>Rm%&)iH$pZs@DS{y(Z?sQE`i-UzaaNOBvg9x)>PP!i6YB%Z! z@m(F~&R}|4B0leTy$4WZb1R!VC5A=}gy+>(Bn6Z)@w-ZeUo~7nMjHtIx2mjIvjQ9D zT+w@B;WVtQt;B<`A61RHcnLNykLz`X3#Z{Gdp&;p*M9DlCE|%kbC7NTB=-rt(6g0~ zWnk0o^AL>=eDvgYYzxBs$xp9EP87lE_!v*^9^6*t1+%Ar?Y+Uk_*SAUF(MY5?^vq- z+_M}nKAr|E0FTp!1V!+sJ{2~aW$yue|4*=$< zMBF-G?ZF7h=w?%~B?!akuEpJ3kM(&;87i6qz=XN0qEtp~HfBT-051;g_KmM7Yt&_k z#LSe)i!SR7#*41qJ1-glP`-N`o^j{_RAJYtrFe6743bllF!z=ySONGN%JIv$O922C z!g6fMwIV*nruIA`0{1<74Xg&h=dQ*BTZ=Dx&&#D}uw=?4B&VbTIE|E*Q`B86ECE)r`=gCrGtK4A7pK4Vm+% zU`|}`nCCsEx}D^lY}_zF#6?t%;(8f?35!e9C;j264V zMFw1vY6?aw7w$`L>tX;*NY3e9%SuW$LJWd+dDXH^*4{xsbFCelZn0y-5=##b{PFo6 z*b^Kl)@;lguvYJssC&d`=1fC80B=JbipOK7&Vmifs23pxx_Vo>zZ0U~IP^i?nuMn} z#-9J(VvU4Z0DyKJ_|ya3-23d#sx~Z%vSRMawRkwH9Od0pa8vGNbzCVaz_F9r@Xk+% zHDv*w-eASCP8+^E#{j^OvVCpHn4y-F42D;?mSe$FGhvNN!4u1Bu)Y6xmN?qpf5Bt7S9B=@Zo08k?eYJyo%S1bNI#Oz&f zia>E`<%PX&&vEwaSN_L#9H_!adrJqkkatOHO`bOP<|id+_ITl}s=}G38W{9E9{>3r zSTt`Ip8eWe< zE6K-W|M3hxUU8qq_7@+a(&}cmeSal{U=A0MWqf(;82<3k_b-``45}NowVz|R+_f11 zuxi;gxM%$;SRx|`=v~5{$O}|Sa~EO5d>fKdEHJ~17oXe(#|XmRw1i2BG#L<(Wq8hZ zz~gO4YeO}DvvD;R&7DCb4tsly4*;KU`wJer|MHrpjZTll%oH^?t~-2mL@)rLvGprh zBD&%6wnOPN!BKqt#5l}D#-WPdb>O*D3($5F#qN~guvCoGWuFl1T& zhr{7`4-?}LbpU`(o;=yl7<1`#y2wyK;WZfFERV+{+ibSZP(k4}7~=~HufZ5!P5?wBrCmdi56-st?_Ozs=B%z_9!8hhWGBYzxq9`sSqQ%kC(N3Gq zCWQlxK|m=3)B{3AQCth4yS~1@HdKjWJP~DzqL>;^FnUy0Rwi|JcDj8&-!{hBexB#o z=jG*H4}j-+J{9U2jL{)+S5 zjEoF7fNhbHkqQyr$#EP9z{D6cgk&yDk|cfbT-r%Qw19{>#+W5HH+N}PR#s}bK`|PQ zlSNTXP!#2Cu#qne9u*ri)Ut-tLrAaJTZ2H(1&@l2<~Z(0L{!J~{1@5T+3z1bc(5uQ zVA$>U3;?T%D3jy3Rf?i`pdJw`2W>RwKp0~zz!Blockly Demos @@ -23,30 +30,114 @@

These demos are intended for developers who want to integrate Blockly with their own applications.

-
-
Fixed Blockly
-
Inject Blockly into a page as a fixed element.
+
+ + + + -
Resizable Blockly
-
Inject Blockly into a page as a resizable element.
+ + + + -
Defining the Toolbox
-
Organize blocks into categories for the user.
+ + + + -
RTL
-
See what Blockly looks like in right-to-left mode (for Arabic and Hebrew).
+ + + + -
Maximum Block Limit
-
Limit the total number of blocks allowed (for academic exercises).
+ + + + -
Generate JavaScript
-
Turn blocks into code and execute it.
+ + + + -
JS Interpreter
-
Step by step execution in JavaScript.
+ + + + -
Cloud Storage
-
Save and load blocks with App Engine.
- + + + + + + + + + +
+ + + + + +
Inject Blockly into a page as a fixed element.
+
+ + + + + +
Inject Blockly into a page as a resizable element.
+
+ + + + + +
Organize blocks into categories for the user.
+
+ + + + + +
See what Blockly looks like in right-to-left mode (for Arabic and Hebrew).
+
+ + + + + +
Limit the total number of blocks allowed (for academic exercises).
+
+ + + + + +
Turn blocks into code and execute it.
+
+ + + + + +
Step by step execution in JavaScript.
+
+ + + + + +
Save and load blocks with App Engine.
+
+ + + + + +
Build custom blocks using Blockly.
+
diff --git a/demos/interpreter/icon.png b/demos/interpreter/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..02962833bd88cedf9ef75ecbafaf745832ee079f GIT binary patch literal 3200 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 literal 0 HcmV?d00001 diff --git a/demos/maxBlocks/icon.png b/demos/maxBlocks/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..13bf65a9c8f88792396a023a4131e21a10aa24b8 GIT binary patch literal 2003 zcmaKti9Ztx0LM4E_sDA|_fZikR0`WNLYT9foXe3V&B*4cXs(2ug*R%3hoVxk7|qO) zqw$hCa||s?+U6b~cOyZGD+wG@2Yt^8fgx- z>D}aQbCw!~%>=<_ag3p4qUQg(_)^}EqDx=wIP1qX8JtL~3Ltedmv_EY&dSQ_%t==v zI48sWO1RIP{tR=SD2aFD(H6>L82ZH;Sixk%zFN{imkNZw^F__WDwNX{oF=PUgfAu}FjcZUS!q2po}z9^Tm?OLzQ&SG}+d zT0JQ;BdI~l0PNGJpzyw#)Z%U@oB*c2-Q|Wl)pmcfvTEL?qc*wxy8~&6_IL$ zW^UM>-cNzET)hLcZlr#dErO|P4DtC5V=r343n{xQ)LkfY7SWnK6AI6_k5L`i&;zY7 zkL)9>LY+twj^IJuQ%YzeXyC|7`~sHDgg*?U({^?gpFO-lkqFM@7{ut*zau8~r)L*@ z97{(SZy!MCpKXuW(2$EmJ^yO9ru4T~*ibG_^7U@IFv4`LO;?LnG-LJLw~a*kx<0`I zr=SfrQ#guzZ%y|yH zl);uGW0e&bJRg6=3_C%b>gc{cS2an@{qYyOAAe-joi>F?7ur0Yhd8#VNwTkQbNJ!+ z`~FJu&#~|D9Gt2UeRtcu4-~}FVl-H{wh)Vn);IO&0=10<5quu(5@2X8tZ5%(17$RF zxd{=TGPJ!AyAhRmsAO}@Qlq^>Io|&69M1en`e_q0mwwSa$rHaXzk>mgY#Zj4z~NfU;1VJ>uJ9hf{V&+snw{G| zc;U_JjDd^4%&3ufy!<@UX4R#hWuAdQn0Y>HaM_KH*1k|GnxoB(g^(ZODxg5t-?GUS z70BJQC#w0Ts1y;!f?P!*hH1|CYHoj|NQI~8s>OSQwu#bmh_xn!X znZXbC4$BNs0M%+Ejm+4(DnWoE0_I~ucK-edM0cYscz23|!8i!oEIM40)Y!i&mN2*U z3%|J>D0U?kLEMb3r2 z+9x|gYKUmHEH`9rrnjpSj=gQX>ef6q-?c8xF3Q5N5`X>?zS*YqiGt%=3v5&Y*XvJ7 zgBLd>OqG@ds7(DgXWddiM8a|s68iAaF{{AoKl(Hf*B4l9GQ$rQ1NlxHxDFP}8Cc^` z&enLmnv*XNwHVup#BU=pkPZjP`kN;F+kjA6e@I$B0?=BgcA1zpb zUd~Nh_A}|34;r63_$%38LO5Vq zTAki8`lc`#b{21zRkza|FfugMF+E*^pXLgK2+3Q({+X8z@rl24%4H|-{h4Lf>Vck~ zTt2pix;kU75?cCw?j+FHsBPNMOmV>>KTo)Ozg~mOo48Y;9VHEaago^?2Mp*o Wb?0tV@9o_$z~08$`t^Cg#D4+qHO?de literal 0 HcmV?d00001 diff --git a/demos/prettify.css b/demos/prettify.css new file mode 100644 index 000000000..d44b3a228 --- /dev/null +++ b/demos/prettify.css @@ -0,0 +1 @@ +.pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} \ No newline at end of file diff --git a/demos/prettify.js b/demos/prettify.js new file mode 100644 index 000000000..7b990496d --- /dev/null +++ b/demos/prettify.js @@ -0,0 +1,30 @@ +!function(){var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function S(a){function d(e){var b=e.charCodeAt(0);if(b!==92)return b;var a=e.charAt(1);return(b=r[a])?b:"0"<=a&&a<="7"?parseInt(e.substring(1),8):a==="u"||a==="x"?parseInt(e.substring(2),16):e.charCodeAt(1)}function g(e){if(e<32)return(e<16?"\\x0":"\\x")+e.toString(16);e=String.fromCharCode(e);return e==="\\"||e==="-"||e==="]"||e==="^"?"\\"+e:e}function b(e){var b=e.substring(1,e.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),e=[],a= +b[0]==="^",c=["["];a&&c.push("^");for(var a=a?1:0,f=b.length;a122||(l<65||h>90||e.push([Math.max(65,h)|32,Math.min(l,90)|32]),l<97||h>122||e.push([Math.max(97,h)&-33,Math.min(l,122)&-33]))}}e.sort(function(e,a){return e[0]-a[0]||a[1]-e[1]});b=[];f=[];for(a=0;ah[0]&&(h[1]+1>h[0]&&c.push("-"),c.push(g(h[1])));c.push("]");return c.join("")}function s(e){for(var a=e.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),c=a.length,d=[],f=0,h=0;f=2&&e==="["?a[f]=b(l):e!=="\\"&&(a[f]=l.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return a.join("")}for(var x=0,m=!1,j=!1,k=0,c=a.length;k=5&&"lang-"===w.substring(0,5))&&!(t&&typeof t[1]==="string"))f=!1,w="src";f||(r[z]=w)}h=c;c+=z.length;if(f){f=t[1];var l=z.indexOf(f),B=l+f.length;t[2]&&(B=z.length-t[2].length,l=B-f.length);w=w.substring(5);H(j+h,z.substring(0,l),g,k);H(j+h+l,f,I(w,f),k);H(j+h+B,z.substring(B),g,k)}else k.push(j+h,w)}a.g=k}var b={},s;(function(){for(var g=a.concat(d),j=[],k={},c=0,i=g.length;c=0;)b[n.charAt(e)]=r;r=r[1];n=""+r;k.hasOwnProperty(n)||(j.push(r),k[n]=q)}j.push(/[\S\s]/);s=S(j)})();var x=d.length;return g}function v(a){var d=[],g=[];a.tripleQuotedStrings?d.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?d.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&g.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var b=a.hashComments;b&&(a.cStyleComments?(b>1?d.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):d.push(["com",/^#(?:(?:define|e(?:l|nd)if|else|error|ifn?def|include|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),g.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h(?:h|pp|\+\+)?|[a-z]\w*)>/,q])):d.push(["com", +/^#[^\n\r]*/,q,"#"]));a.cStyleComments&&(g.push(["com",/^\/\/[^\n\r]*/,q]),g.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));if(b=a.regexLiterals){var s=(b=b>1?"":"\n\r")?".":"[\\S\\s]";g.push(["lang-regex",RegExp("^(?:^^\\.?|[+-]|[!=]=?=?|\\#|%=?|&&?=?|\\(|\\*=?|[+\\-]=|->|\\/=?|::?|<>?>?=?|,|;|\\?|@|\\[|~|{|\\^\\^?=?|\\|\\|?=?|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*("+("/(?=[^/*"+b+"])(?:[^/\\x5B\\x5C"+b+"]|\\x5C"+s+"|\\x5B(?:[^\\x5C\\x5D"+b+"]|\\x5C"+ +s+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&g.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&g.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),q]);d.push(["pln",/^\s+/,q," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");g.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/, +q],["pun",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if("br"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d= +c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,j=a.ownerDocument,k=j.createElement("li");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=["break,continue,do,else,for,if,return,while"],E=[[y,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],M=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],N=[E,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"], +O=[N,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,internal,into,is,let,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var,virtual,where"],E=[E,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],P=[y,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +Q=[y,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],W=[y,"as,assert,const,copy,drop,enum,extern,fail,false,fn,impl,let,log,loop,match,mod,move,mut,priv,pub,pure,ref,self,static,struct,true,trait,type,unsafe,use"],y=[y,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],R=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)\b/, +V=/\S/,X=v({keywords:[M,O,E,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",P,Q,y],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),F={};p(X,["default-code"]);p(C([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-", +/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);p(C([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/], +["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css",/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);p(C([],[["atv",/^[\S\s]+/]]),["uq.val"]);p(v({keywords:M,hashComments:!0,cStyleComments:!0,types:R}),["c","cc","cpp","cxx","cyc","m"]);p(v({keywords:"null,true,false"}),["json"]);p(v({keywords:O,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:R}), +["cs"]);p(v({keywords:N,cStyleComments:!0}),["java"]);p(v({keywords:y,hashComments:!0,multiLineStrings:!0}),["bash","bsh","csh","sh"]);p(v({keywords:P,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}),["cv","py","python"]);p(v({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:2}),["perl","pl","pm"]);p(v({keywords:Q, +hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb","ruby"]);p(v({keywords:E,cStyleComments:!0,regexLiterals:!0}),["javascript","js"]);p(v({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,throw,true,try,unless,until,when,while,yes",hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);p(v({keywords:W,cStyleComments:!0,multilineStrings:!0}),["rc","rs","rust"]); +p(C([],[["str",/^[\S\s]+/]]),["regex"]);var Y=D.PR={createSimpleLexer:C,registerLangHandler:p,sourceDecorator:v,PR_ATTRIB_NAME:"atn",PR_ATTRIB_VALUE:"atv",PR_COMMENT:"com",PR_DECLARATION:"dec",PR_KEYWORD:"kwd",PR_LITERAL:"lit",PR_NOCODE:"nocode",PR_PLAIN:"pln",PR_PUNCTUATION:"pun",PR_SOURCE:"src",PR_STRING:"str",PR_TAG:"tag",PR_TYPE:"typ",prettyPrintOne:D.prettyPrintOne=function(a,d,g){var b=document.createElement("div");b.innerHTML="
"+a+"
";b=b.firstChild;g&&J(b,g,!0);K({h:d,j:g,c:b,i:1}); +return b.innerHTML},prettyPrint:D.prettyPrint=function(a,d){function g(){for(var b=D.PR_SHOULD_USE_CONTINUATION?c.now()+250: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 literal 0 HcmV?d00001