Skip to content

Commit 52b886f

Browse files
Use short version number label as before
1 parent c2dfb81 commit 52b886f

File tree

6 files changed

+106
-103
lines changed

6 files changed

+106
-103
lines changed

src/Playground.res

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -918,11 +918,11 @@ module Settings = {
918918
<div className=titleClass> {React.string("ReScript Version")} </div>
919919
<DropdownSelect
920920
name="compilerVersions"
921-
value={CompilerManagerHook.Semver.toString(readyState.selected.id)}
921+
value={Semver.toString(readyState.selected.id)}
922922
onChange={evt => {
923923
ReactEvent.Form.preventDefault(evt)
924924
let id: string = (evt->ReactEvent.Form.target)["value"]
925-
switch id->CompilerManagerHook.Semver.parse {
925+
switch id->Semver.parse {
926926
| Some(v) => onCompilerSelect(v)
927927
| None => ()
928928
}
@@ -946,12 +946,7 @@ module Settings = {
946946
| [] => React.null
947947
| experimentalVersions =>
948948
let versionByOrder = experimentalVersions->Belt.SortArray.stableSortBy((a, b) => {
949-
let cmp = ({
950-
CompilerManagerHook.Semver.major: major,
951-
minor,
952-
patch,
953-
preRelease,
954-
}) => {
949+
let cmp = ({Semver.major: major, minor, patch, preRelease}) => {
955950
let preRelease = switch preRelease {
956951
| Some(preRelease) =>
957952
switch preRelease {
@@ -979,7 +974,7 @@ module Settings = {
979974
</option>
980975
{versionByOrder
981976
->Array.map(version => {
982-
let version = CompilerManagerHook.Semver.toString(version)
977+
let version = Semver.toString(version)
983978
<option className="py-4" key=version value=version>
984979
{React.string(version)}
985980
</option>
@@ -994,7 +989,7 @@ module Settings = {
994989
| [] => React.null
995990
| stableVersions =>
996991
Array.map(stableVersions, version => {
997-
let version = CompilerManagerHook.Semver.toString(version)
992+
let version = Semver.toString(version)
998993
<option className="py-4" key=version value=version>
999994
{React.string(version)}
1000995
</option>
@@ -1405,9 +1400,9 @@ let make = (~versions: array<string>) => {
14051400

14061401
let versions =
14071402
versions
1408-
->Array.filterMap(v => v->CompilerManagerHook.Semver.parse)
1403+
->Array.filterMap(v => v->Semver.parse)
14091404
->Belt.SortArray.stableSortBy((a, b) => {
1410-
let cmp = ({CompilerManagerHook.Semver.major: major, minor, patch, _}) => {
1405+
let cmp = ({Semver.major: major, minor, patch, _}) => {
14111406
[major, minor, patch]
14121407
->Array.map(v => v->Int.toString)
14131408
->Array.join("")
@@ -1420,7 +1415,7 @@ let make = (~versions: array<string>) => {
14201415
let lastStableVersion = versions->Array.find(version => version.preRelease->Option.isNone)
14211416

14221417
let initialVersion = switch Dict.get(router.query, "version") {
1423-
| Some(version) => version->CompilerManagerHook.Semver.parse
1418+
| Some(version) => version->Semver.parse
14241419
| None => lastStableVersion
14251420
}
14261421

src/common/CompilerManagerHook.res

Lines changed: 0 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -34,78 +34,6 @@ module LoadScript = {
3434
}
3535
}
3636

37-
module Semver = {
38-
type preRelease = Alpha(int) | Beta(int) | Dev(int) | Rc(int)
39-
40-
type t = {major: int, minor: int, patch: int, preRelease: option<preRelease>}
41-
42-
/**
43-
Takes a `version` string starting with a "v" and ending in major.minor.patch or
44-
major.minor.patch-prerelease.identifier (e.g. "v10.1.0" or "v10.1.0-alpha.2")
45-
*/
46-
let parse = (versionStr: string) => {
47-
let parsePreRelease = str => {
48-
switch str->String.split("-") {
49-
| [_, identifier] =>
50-
switch identifier->String.split(".") {
51-
| [name, number] =>
52-
switch Int.fromString(number) {
53-
| None => None
54-
| Some(buildIdentifier) =>
55-
switch name {
56-
| "dev" => buildIdentifier->Dev->Some
57-
| "beta" => buildIdentifier->Beta->Some
58-
| "alpha" => buildIdentifier->Alpha->Some
59-
| "rc" => buildIdentifier->Rc->Some
60-
| _ => None
61-
}
62-
}
63-
| _ => None
64-
}
65-
| _ => None
66-
}
67-
}
68-
69-
// Some version contain a suffix. Example: v11.0.0-alpha.5, v11.0.0-beta.1
70-
let isPrerelease = versionStr->String.search(%re("/-/")) != -1
71-
72-
// Get the first part i.e vX.Y.Z
73-
let versionNumber = versionStr->String.split("-")->Array.get(0)->Option.getOr(versionStr)
74-
75-
switch versionNumber->String.replace("v", "")->String.split(".") {
76-
| [major, minor, patch] =>
77-
switch (major->Int.fromString, minor->Int.fromString, patch->Int.fromString) {
78-
| (Some(major), Some(minor), Some(patch)) =>
79-
let preReleaseIdentifier = if isPrerelease {
80-
parsePreRelease(versionStr)
81-
} else {
82-
None
83-
}
84-
Some({major, minor, patch, preRelease: preReleaseIdentifier})
85-
| _ => None
86-
}
87-
| _ => None
88-
}
89-
}
90-
91-
let toString = ({major, minor, patch, preRelease}) => {
92-
let mainVersion = `v${major->Int.toString}.${minor->Int.toString}.${patch->Int.toString}`
93-
94-
switch preRelease {
95-
| None => mainVersion
96-
| Some(identifier) =>
97-
let identifier = switch identifier {
98-
| Dev(number) => `dev.${number->Int.toString}`
99-
| Alpha(number) => `alpha.${number->Int.toString}`
100-
| Beta(number) => `beta.${number->Int.toString}`
101-
| Rc(number) => `rc.${number->Int.toString}`
102-
}
103-
104-
`${mainVersion}-${identifier}`
105-
}
106-
}
107-
}
108-
10937
module CdnMeta = {
11038
let getCompilerUrl = (version): string =>
11139
`https://cdn.rescript-lang.org/${Semver.toString(version)}/compiler.js`

src/common/CompilerManagerHook.resi

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,22 +8,6 @@ module FinalResult: {
88
| Nothing
99
}
1010

11-
module Semver: {
12-
type preRelease =
13-
| Alpha(int)
14-
| Beta(int)
15-
| Dev(int)
16-
| Rc(int)
17-
type t = {
18-
major: int,
19-
minor: int,
20-
patch: int,
21-
preRelease: option<preRelease>,
22-
}
23-
let parse: string => option<t>
24-
let toString: t => string
25-
}
26-
2711
type selected = {
2812
id: Semver.t, // The id used for loading the compiler bundle (ideally should be the same as compilerVersion)
2913
apiVersion: Version.t, // The playground API version in use

src/common/Constants.res

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,16 @@ type versions = {
1212

1313
// This is used for the version dropdown in the manual layouts
1414
let allManualVersions = [
15-
(versions.latest, versions.latest),
15+
(versions.latest, versions.latest->Semver.tryGetMajorString),
1616
("v10.0.0", "v9.1 - v10.1"),
1717
("v9.0.0", "v8.2 - v9.0"),
1818
("v8.0.0", "v6.0 - v8.2"),
1919
]
2020

21-
let nextVersion = versions.latest === versions.next ? None : Some(versions.next, versions.next)
21+
let nextVersion =
22+
versions.latest === versions.next
23+
? None
24+
: Some(versions.next, versions.next->Semver.tryGetMajorString)
2225

2326
let allReactVersions = [("latest", "v0.12.0"), ("v0.11.0", "v0.11.0"), ("v0.10.0", "v0.10.0")]
2427

src/common/Semver.res

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
type preRelease = Alpha(int) | Beta(int) | Dev(int) | Rc(int)
2+
3+
type t = {major: int, minor: int, patch: int, preRelease: option<preRelease>}
4+
5+
/**
6+
Takes a `version` string starting with a "v" and ending in major.minor.patch or
7+
major.minor.patch-prerelease.identifier (e.g. "v10.1.0" or "v10.1.0-alpha.2")
8+
*/
9+
let parse = (versionStr: string) => {
10+
let parsePreRelease = str => {
11+
switch str->String.split("-") {
12+
| [_, identifier] =>
13+
switch identifier->String.split(".") {
14+
| [name, number] =>
15+
switch Int.fromString(number) {
16+
| None => None
17+
| Some(buildIdentifier) =>
18+
switch name {
19+
| "dev" => buildIdentifier->Dev->Some
20+
| "beta" => buildIdentifier->Beta->Some
21+
| "alpha" => buildIdentifier->Alpha->Some
22+
| "rc" => buildIdentifier->Rc->Some
23+
| _ => None
24+
}
25+
}
26+
| _ => None
27+
}
28+
| _ => None
29+
}
30+
}
31+
32+
// Some version contain a suffix. Example: v11.0.0-alpha.5, v11.0.0-beta.1
33+
let isPrerelease = versionStr->String.search(%re("/-/")) != -1
34+
35+
// Get the first part i.e vX.Y.Z
36+
let versionNumber = versionStr->String.split("-")->Array.get(0)->Option.getOr(versionStr)
37+
38+
switch versionNumber->String.replace("v", "")->String.split(".") {
39+
| [major, minor, patch] =>
40+
switch (major->Int.fromString, minor->Int.fromString, patch->Int.fromString) {
41+
| (Some(major), Some(minor), Some(patch)) =>
42+
let preReleaseIdentifier = if isPrerelease {
43+
parsePreRelease(versionStr)
44+
} else {
45+
None
46+
}
47+
Some({major, minor, patch, preRelease: preReleaseIdentifier})
48+
| _ => None
49+
}
50+
| _ => None
51+
}
52+
}
53+
54+
let toString = ({major, minor, patch, preRelease}) => {
55+
let mainVersion = `v${major->Int.toString}.${minor->Int.toString}.${patch->Int.toString}`
56+
57+
switch preRelease {
58+
| None => mainVersion
59+
| Some(identifier) =>
60+
let identifier = switch identifier {
61+
| Dev(number) => `dev.${number->Int.toString}`
62+
| Alpha(number) => `alpha.${number->Int.toString}`
63+
| Beta(number) => `beta.${number->Int.toString}`
64+
| Rc(number) => `rc.${number->Int.toString}`
65+
}
66+
67+
`${mainVersion}-${identifier}`
68+
}
69+
}
70+
71+
let tryGetMajorString = (versionStr: string) =>
72+
switch versionStr->parse {
73+
| None => versionStr // fallback to given version if it cannot be parsed
74+
| Some({major}) => "v" ++ major->Int.toString
75+
}

src/common/Semver.resi

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
type preRelease =
2+
| Alpha(int)
3+
| Beta(int)
4+
| Dev(int)
5+
| Rc(int)
6+
7+
type t = {
8+
major: int,
9+
minor: int,
10+
patch: int,
11+
preRelease: option<preRelease>,
12+
}
13+
14+
let parse: string => option<t>
15+
16+
let toString: t => string
17+
18+
let tryGetMajorString: string => string

0 commit comments

Comments
 (0)