Category talk:Wren-dynamic: Difference between revisions

→‎Source code: Added a startsFrom property for enums.
(Enums can now start from any integral value, not just 0.)
(→‎Source code: Added a startsFrom property for enums.)
Line 35:
// Creates a class for the Enum (with an underscore after the name) and
// returns a reference to it.
static create(name, members, startstartsFrom) {
if (name.type != String || name == "") Fiber.abort("Name must be a non-empty string.")
if (members.isEmpty) Fiber.abort("An enum must have at least one member.")
if (startstartsFrom.type != Num || !startstartsFrom.isInteger) Fiber.abort("Start must be an integer."){
Fiber.abort("Must start from an integer.")
}
name = name + "_"
var s = "class %(name) {\n"
for (i in 0...members.count) {
var m = members[i]
s = s + " static %(m) { %(i + startstartsFrom) }\n"
}
var mems = members.map { |m| "\"%(m)\"" }.join(", ")
s = s + " static startsFrom { %(startsFrom) }\n"
s = s + " static members { [%(mems)] }\n}\n"
s = s + "return %(name)"
9,483

edits