@@ -47,6 +47,7 @@ class Application @Inject() (
47
47
val scalafiddleUrl = new URL (config.get[String ](" scalafiddle.scalafiddleURL" ))
48
48
val compilerUrl = config.get[String ](" scalafiddle.compilerURL" )
49
49
val scalaVersions = config.get[Seq [String ]](" scalafiddle.scalaVersions" )
50
+ val scalaJSVersions = config.get[Seq [String ]](" scalafiddle.scalaJSVersions" )
50
51
51
52
Kamon .start()
52
53
@@ -133,6 +134,7 @@ class Application @Inject() (
133
134
val allLibs = fd.libraries.flatMap(lib => Library .stringify(lib) +: lib.extraDeps)
134
135
sourceCode.append(allLibs.map(lib => s " // $$ FiddleDependency $lib" ).mkString(" \n " , " \n " , " \n " ))
135
136
sourceCode.append(s " // $$ ScalaVersion ${fd.scalaVersion}\n " )
137
+ sourceCode.append(s " // $$ ScalaJSVersion ${fd.scalaJSVersion}\n " )
136
138
nameOpt.foreach(name => sourceCode.append(s " // $$ FiddleName $name\n " ))
137
139
138
140
Ok (sourceCode.toString).withHeaders(CACHE_CONTROL -> " max-age=7200" )
@@ -317,7 +319,7 @@ class Application @Inject() (
317
319
318
320
private def loadFiddle (id : String , version : Int , sourceOpt : Option [String ] = None ): Future [Try [FiddleData ]] = {
319
321
if (id == " " ) {
320
- val (source, libs, scalaVersion) = parseFiddle(sourceOpt.fold(defaultSource)(identity))
322
+ val (source, libs, scalaVersion, scalaJSVersion ) = parseFiddle(sourceOpt.fold(defaultSource)(identity))
321
323
Future .successful(
322
324
Success (
323
325
FiddleData (
@@ -329,6 +331,9 @@ class Application @Inject() (
329
331
scalaVersion
330
332
.flatMap(v => scalaVersions.find(_ == v))
331
333
.getOrElse(config.get[String ](" scalafiddle.defaultScalaVersion" )),
334
+ scalaJSVersion
335
+ .flatMap(v => scalaJSVersions.find(_ == v))
336
+ .getOrElse(config.get[String ](" scalafiddle.defaultScalaJSVersion" )),
332
337
None ,
333
338
System .currentTimeMillis()
334
339
)
@@ -346,6 +351,7 @@ class Application @Inject() (
346
351
f.libraries.flatMap(librarian.findLibrary),
347
352
librarian.libraries,
348
353
f.scalaVersion,
354
+ f.scalaJSVersion,
349
355
None ,
350
356
f.created
351
357
)
@@ -363,6 +369,7 @@ class Application @Inject() (
363
369
f.libraries.flatMap(librarian.findLibrary),
364
370
librarian.libraries,
365
371
f.scalaVersion,
372
+ f.scalaJSVersion,
366
373
Some (user),
367
374
f.created
368
375
)
@@ -376,6 +383,7 @@ class Application @Inject() (
376
383
f.libraries.flatMap(librarian.findLibrary),
377
384
librarian.libraries,
378
385
f.scalaVersion,
386
+ f.scalaJSVersion,
379
387
None ,
380
388
f.created
381
389
)
@@ -387,16 +395,20 @@ class Application @Inject() (
387
395
}
388
396
}
389
397
390
- private def parseFiddle (source : String ): (String , Seq [Library ], Option [String ]) = {
391
- val dependencyRE = """ *// \$FiddleDependency +(.+)""" .r
392
- val versionRE = """ *// \$ScalaVersion +([0-9]+\.[0-9]+)""" .r
393
- val lines = source.split(" \n " )
398
+ private def parseFiddle (source : String ): (String , Seq [Library ], Option [String ], Option [String ]) = {
399
+ val dependencyRE = """ *// \$FiddleDependency +(.+)""" .r
400
+ val scalaVersionRE = """ *// \$ScalaVersion +([0-9]+\.[0-9]+)""" .r
401
+ val scalaJSVersionRE = """ *// \$ScalaJSVersion +([0-9]+(?:\.[0-9]+)?)""" .r
402
+ val lines = source.split(" \n " )
394
403
val (libLines, codeLines) = lines.partition { line =>
395
- dependencyRE.findFirstIn(line).isDefined || versionRE.findFirstIn(line).isDefined
404
+ dependencyRE.findFirstIn(line).isDefined ||
405
+ scalaVersionRE.findFirstIn(line).isDefined ||
406
+ scalaVersionRE.findFirstIn(line).isDefined
396
407
}
397
- val libs = libLines.flatMap(line => dependencyRE.findFirstMatchIn(line).flatMap(d => librarian.findLibrary(d.group(1 ))))
398
- val version = libLines.flatMap(line => versionRE.findFirstMatchIn(line).map(_.group(1 ))).headOption
399
- (codeLines.mkString(" \n " ), libs, version)
408
+ val libs = libLines.flatMap(line => dependencyRE.findFirstMatchIn(line).flatMap(d => librarian.findLibrary(d.group(1 ))))
409
+ val scalaVersion = libLines.flatMap(line => scalaVersionRE.findFirstMatchIn(line).map(_.group(1 ))).headOption
410
+ val scalaJSVersion = libLines.flatMap(line => scalaJSVersionRE.findFirstMatchIn(line).map(_.group(1 ))).headOption
411
+ (codeLines.mkString(" \n " ), libs, scalaVersion, scalaJSVersion)
400
412
}
401
413
402
414
private def decodeSource (b64 : String ): Option [String ] = {
0 commit comments