Skip to content

Commit 6fa62fe

Browse files
committed
New program headers
1 parent e3a4402 commit 6fa62fe

File tree

2 files changed

+32
-16
lines changed

2 files changed

+32
-16
lines changed

ide/ide.js

Lines changed: 31 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,39 +29,53 @@ $(function () {
2929
function parseVersionHeader( source ) { // null if sourceLines already exists
3030
if (source !== null) sourceLines = source.split("\n")
3131
else source = 'already exists\n'
32-
var header = sourceLines[0]
32+
let header = sourceLines[0]
3333
// Remove a newline or similar character at the end of header:
3434
if (header.charCodeAt(header.length-1) < 32)
3535
header = header.substring(0,header.length-1)
36-
var rest = source.substr( sourceLines[0].length+1 )
37-
var ret = {
36+
let rest = source.substr( sourceLines[0].length+1 )
37+
let ret = {
3838
version: null,
3939
lang: '', // 'vpython' (default) or 'javascript' or a string that is neither (e.g. when editing header)
4040
source: rest,
4141
ok: false,
4242
unpackaged: false,
4343
isCurrent: false
4444
}
45+
// Here are the possible headers (version can be for example 3.2 or 3.3dev)
46+
// 2 entries: 'JavaScript 3.2', 'GlowScript 3.2'
47+
// 3 entries: 'GlowScript 3.2 VPython', 'GlowScript 3.2 JavaScript', 'Web VPython 3.2'
48+
header = header.toLowerCase()
4549
header = header.split(" ")
4650
if (header.length === undefined) return ret
4751
if (header[0] == ' ') return ret
48-
var elements = []
49-
for (var i=0; i<header.length; i++) { // remove empty strings corresponding to spaces
52+
let elements = []
53+
for (let i=0; i<header.length; i++) { // remove empty strings corresponding to spaces
5054
if (header[i] != '') elements.push(header[i])
5155
}
5256
if (elements.length < 2 || elements.length > 3) return ret
53-
if (elements[0] != 'GlowScript') return ret
54-
ret.lang = 'javascript' // the default if no language is specified
55-
if (elements.length == 3) {
56-
ret.lang = elements[2].toLowerCase()
57-
if (!(ret.lang == 'javascript' || ret.lang == 'vpython')) return ret
57+
if (elements[0] != 'glowscript' && elements[0] != 'web' && elements[0] != 'javascript') return ret
58+
let ver
59+
if (elements.length == 2) {
60+
if (elements[0] != 'glowscript' && elements[0] != 'javascript') return ret
61+
ret.lang = 'javascript'
62+
ver = elements[1]
63+
} else {
64+
if (elements[0] == 'web' && elements[1] == 'vpython') {
65+
ret.lang = 'vpython'
66+
ver = elements[2]
67+
} else {
68+
if (elements[0] != 'glowscript') return ret
69+
if (elements[2] != 'javascript' && elements[2] != 'vpython') return ret
70+
ret.lang = elements[2]
71+
ver = elements[1]
72+
}
5873
}
59-
var ver = elements[1]
60-
var okv = parseVersionHeader.okVersions[ver]
74+
let okv = parseVersionHeader.okVersions[ver]
6175
if (okv === undefined) okv = false
6276
// Prior to version 3.0, we stripped the header line from the source:
6377
else if (Number(okv) < 3.0) source = source.substr(sourceLines[0].length+1)
64-
var unpackaged = (okv === "unpackaged")
78+
let unpackaged = (okv === "unpackaged")
6579
return {
6680
version: okv,
6781
lang: ret.lang,
@@ -73,8 +87,9 @@ $(function () {
7387
}
7488

7589
parseVersionHeader.defaultVersion = "3.2"
76-
parseVersionHeader.defaultHeader = "GlowScript " + parseVersionHeader.defaultVersion+' VPython'
77-
parseVersionHeader.errorMessage = "GlowScript " + parseVersionHeader.defaultVersion
90+
parseVersionHeader.defaultHeader = "Web VPython " + parseVersionHeader.defaultVersion
91+
parseVersionHeader.errorMessage = "Web VPython " + parseVersionHeader.defaultVersion +
92+
' (or JavaScript ' + parseVersionHeader.defaultVersion + ')'
7893
// Map each version that can be loaded to a packaged version (usually itself), or "unpackaged" if it is the current development version
7994
parseVersionHeader.okVersions = {
8095
__proto__: null,
@@ -1114,6 +1129,7 @@ $(function () {
11141129
} else {
11151130
page.find(".prog-datetime").text(date_to_string(progData.datetime))
11161131
var header = parseVersionHeader( progData.source )
1132+
console.log(1137, 'header', header)
11171133
if (header.ok) {
11181134
haveScreenshot = progData.screenshot != ""
11191135
sendMessage(JSON.stringify({ program: header.source, version: header.version, lang: header.lang, unpackaged: header.unpackaged, autoscreenshot:isWritable && !haveScreenshot }))

ide/templates/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<!DOCTYPE html>
22
<html>
33
<head>
4-
<title>GlowScript IDE </title>
4+
<title>Web VPython</title>
55

66
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
77
<link type="text/css" href="css/redmond/IDE/jquery-ui.custom.css" rel="stylesheet" />

0 commit comments

Comments
 (0)