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