#!/usr/bin/env nomsu -V4.8.10 # This file defines upgrades from Nomsu <2.4 to Nomsu 2.4 use "compatibility/compatibility.nom" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ upgrade %tree to "2.4" as: unless (%tree is "Action" syntax tree): return if %tree.stub is: "when": %conditions = [] %new_lines = [] %body = (..) (%tree.2 upgraded) if (%tree.2 is "Block" syntax tree) else [%tree.2 upgraded] for %line in %body: when: (not (%line is "Action" syntax tree)): %new_lines::add %line (%line.stub is "*"): if ((size of %line) == 2): %conditions::add %line.2 ..else: %new_lines::add %line (%line.stub == "* else"): %new_lines::add (\(else %block) with vars {block:%line.3}) else: %conditions::add %line.2 %action = %line.3 unless (%action is "Block" syntax tree): %action = (=lua "Block(\%action.source, \%action)") %conditions::add %action %new_lines::add (=lua "Action(\%conditions[1].source, unpack(\%conditions))") %conditions = [] return (..) \(when %body) with vars {body:=lua "Block(\%tree[2].source, unpack(\%new_lines))"} "when 1 is ?" "when 1 = ?": %values = [] %new_lines = [] %body = (..) (%tree.5 upgraded) if (%tree.5 is "Block" syntax tree) else [%tree.5 upgraded] for %line in %body: when: (not (%line is "Action" syntax tree)): %new_lines::add %line (%line.stub is "*"): if ((size of %line) == 2): %values::add %line.2 ..else: %new_lines::add %line (%line.stub == "* else"): %new_lines::add (\(else %block) with vars {block:%line.3}) else: %values::add %line.2 %action = %line.3 unless (%action is "Block" syntax tree): %action = \(: %action) %values::add %action %new_lines::add (=lua "Action(\%values[1].source, unpack(\%values))") %values = [] return (..) \(if %var is %body) with vars {..} var:%tree.2 upgraded, body:=lua "Block(\%tree[5].source, unpack(\%new_lines))"