nomsu/lib/compatibility/2.4.nom
Bruce Hill a1849da175 Autoformat (mostly just to do with the new
blank-line-after-end-of-multi-indent-block rule
2019-03-27 15:22:46 -07:00

75 lines
3.0 KiB
Plaintext

#!/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)))