@@ -29,39 +29,53 @@ $(function () {
29
29
function parseVersionHeader ( source ) { // null if sourceLines already exists
30
30
if ( source !== null ) sourceLines = source . split ( "\n" )
31
31
else source = 'already exists\n'
32
- var header = sourceLines [ 0 ]
32
+ let header = sourceLines [ 0 ]
33
33
// Remove a newline or similar character at the end of header:
34
34
if ( header . charCodeAt ( header . length - 1 ) < 32 )
35
35
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 = {
38
38
version : null ,
39
39
lang : '' , // 'vpython' (default) or 'javascript' or a string that is neither (e.g. when editing header)
40
40
source : rest ,
41
41
ok : false ,
42
42
unpackaged : false ,
43
43
isCurrent : false
44
44
}
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 ( )
45
49
header = header . split ( " " )
46
50
if ( header . length === undefined ) return ret
47
51
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
50
54
if ( header [ i ] != '' ) elements . push ( header [ i ] )
51
55
}
52
56
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
+ }
58
73
}
59
- var ver = elements [ 1 ]
60
- var okv = parseVersionHeader . okVersions [ ver ]
74
+ let okv = parseVersionHeader . okVersions [ ver ]
61
75
if ( okv === undefined ) okv = false
62
76
// Prior to version 3.0, we stripped the header line from the source:
63
77
else if ( Number ( okv ) < 3.0 ) source = source . substr ( sourceLines [ 0 ] . length + 1 )
64
- var unpackaged = ( okv === "unpackaged" )
78
+ let unpackaged = ( okv === "unpackaged" )
65
79
return {
66
80
version : okv ,
67
81
lang : ret . lang ,
@@ -73,8 +87,9 @@ $(function () {
73
87
}
74
88
75
89
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 + ')'
78
93
// Map each version that can be loaded to a packaged version (usually itself), or "unpackaged" if it is the current development version
79
94
parseVersionHeader . okVersions = {
80
95
__proto__ : null ,
@@ -1114,6 +1129,7 @@ $(function () {
1114
1129
} else {
1115
1130
page . find ( ".prog-datetime" ) . text ( date_to_string ( progData . datetime ) )
1116
1131
var header = parseVersionHeader ( progData . source )
1132
+ console . log ( 1137 , 'header' , header )
1117
1133
if ( header . ok ) {
1118
1134
haveScreenshot = progData . screenshot != ""
1119
1135
sendMessage ( JSON . stringify ( { program : header . source , version : header . version , lang : header . lang , unpackaged : header . unpackaged , autoscreenshot :isWritable && ! haveScreenshot } ) )
0 commit comments