Module:IC10: Difference between revisions
From Stationeers Wiki
More actions
m tweaking colours - comments grey |
m adding highlighting for parameters |
||
| Line 23: | Line 23: | ||
} | } | ||
-- Build lookup table | -- Build lookup table for opcodes | ||
local opcode_lookup = {} | local opcode_lookup = {} | ||
for _, op in ipairs(opcodes) do | for _, op in ipairs(opcodes) do | ||
opcode_lookup[op] = true | opcode_lookup[op] = true | ||
end | |||
-- list of parameters | |||
local parameters = { | |||
"On","Activate","Lock","Mode","ClearMemory","Open","Setting", | |||
"Combustion","ExportCount","ImportCount","Maximum","PrefabHash", | |||
"Pressure","Ratio","RatioCarbonDioxide","RatioNitrogen","RatioNitrousOxide","RatioOxygen","RatioPollutant","RatioVolatiles","RatioWater", | |||
"Reagents","RecipeHash","Temperature","TotalMoles","Power","Error","RequiredPower", | |||
"PressureInput","TemperatureInput","RatioOxygenInput","RatioCarbonDioxideInput","RatioNitrogenInput", | |||
"RatioPollutantInput","RatioVolatilesInput","RatioWaterInput","RatioNitrousOxideInput","TotalMolesInput", | |||
"PressureOutput","TemperatureOutput","RatioOxygenOutput","RatioCarbonDioxideOutput","RatioNitrogenOutput", | |||
"RatioPollutantOutput","RatioVolatilesOutput","RatioWaterOutput","RatioNitrousOxideOutput","TotalMolesOutput", | |||
"PressureOutput2","TemperatureOutput2","RatioOxygenOutput2","RatioCarbonDioxideOutput2","RatioNitrogenOutput2", | |||
"RatioPollutantOutput2","RatioVolatilesOutput2","RatioWaterOutput2","RatioNitrousOxideOutput2","TotalMolesOutput2", | |||
"CombustionInput","CombustionOutput","CombustionOutput2" | |||
} | |||
-- Build lookup table for parameters | |||
local parameter_lookup = {} | |||
for _, par in ipairs(parameters) do | |||
parameter_lookup[par] = true | |||
end | end | ||
| Line 75: | Line 96: | ||
"%f[%w]("..op..")%f[%W]", | "%f[%w]("..op..")%f[%W]", | ||
'<span style="color: #b58900; font-weight: bold;">%1</span>') | '<span style="color: #b58900; font-weight: bold;">%1</span>') | ||
end | |||
-- parameters | |||
for par,_ in pairs(parameter_lookup) do | |||
line = string.gsub(line, | |||
"%f[%w]("..par..")%f[%W]", | |||
'<span style="color: #F39C12; font-weight: bold;">%1</span>') | |||
end | end | ||
Revision as of 08:39, 21 February 2026
local p = {}
-- List of IC10 opcodes (all strings) local opcodes = {
"alias","define","hcf","yield", "abs","add","ceil","div","pow","exp","floor","log","max","min","mod","move","mul","rand","round","sqrt","sub","trunc","lerp", "acos","asin","atan","atan2","cos","sin","tan", "clr","clrd","get","getd","peek","poke","pop","push","put","putd", "l","lr","ls","s","ss","rmap", "lb","lbn","lbns","lbs","sb","sbn","sbs", "and","nor","not","or","sla","sll","sra","srl","xor","ext","ins", "select","sdns","sdse","sap","sapz","seq","seqz","sge","sgez","sgt","sgtz","sle","slez","slt","sltz","sna","snan","snanz","snaz","sne","snez", "j","jal","jr", "bdnvl","bdnvs","bdns","bdnsal","bdse","bdseal","brdns","brdse", "bap","brap","bapal","bapz","brapz","bapzal", "beq","breq","beqal","beqz","breqz","beqzal", "bge","brge","bgeal","bgez","brgez","bgezal", "bgt","brgt","bgtal","bgtz","brgtz","bgtzal", "ble","brle","bleal","blez","brlez","blezal", "blt","brlt","bltal","bltz","brltz","bltzal", "bna","brna","bnaal","bnan","brnan","bnaz","brnaz","bnazal", "bne","brne","bneal","bnez","brnez","bnezal"
}
-- Build lookup table for opcodes local opcode_lookup = {} for _, op in ipairs(opcodes) do
opcode_lookup[op] = true
end
-- list of parameters local parameters = {
"On","Activate","Lock","Mode","ClearMemory","Open","Setting", "Combustion","ExportCount","ImportCount","Maximum","PrefabHash", "Pressure","Ratio","RatioCarbonDioxide","RatioNitrogen","RatioNitrousOxide","RatioOxygen","RatioPollutant","RatioVolatiles","RatioWater", "Reagents","RecipeHash","Temperature","TotalMoles","Power","Error","RequiredPower", "PressureInput","TemperatureInput","RatioOxygenInput","RatioCarbonDioxideInput","RatioNitrogenInput", "RatioPollutantInput","RatioVolatilesInput","RatioWaterInput","RatioNitrousOxideInput","TotalMolesInput", "PressureOutput","TemperatureOutput","RatioOxygenOutput","RatioCarbonDioxideOutput","RatioNitrogenOutput", "RatioPollutantOutput","RatioVolatilesOutput","RatioWaterOutput","RatioNitrousOxideOutput","TotalMolesOutput", "PressureOutput2","TemperatureOutput2","RatioOxygenOutput2","RatioCarbonDioxideOutput2","RatioNitrogenOutput2", "RatioPollutantOutput2","RatioVolatilesOutput2","RatioWaterOutput2","RatioNitrousOxideOutput2","TotalMolesOutput2", "CombustionInput","CombustionOutput","CombustionOutput2"
}
-- Build lookup table for parameters local parameter_lookup = {} for _, par in ipairs(parameters) do
parameter_lookup[par] = true
end
local function highlight_line(line)
-- breaks strings in IC10 as it escapes "" line = mw.text.nowiki(line)
--minimal replacement instead
line = line
:gsub("&", "&")
:gsub("<", "<")
:gsub(">", ">")
-- comments
line = string.gsub(line, "(#.*)",
'%1')
-- labels
line = string.gsub(line, "^(%w+:)",
'%1')
-- r0–r9
line = string.gsub(line, "%f[%w]r[0-9]%f[%W]", '%0')
-- r10–r15
line = string.gsub(line, "%f[%w]r1[0-5]%f[%W]", '%0')
-- placeholder r?
line = string.gsub(line, "%f[%w]r%?", '%0')
-- real devices d0–d5
line = string.gsub(line, "%f[%w]d[0-5]%f[%W]",
'%0')
-- placeholder d?
line = string.gsub(line, "%f[%w]d%?",
'%0')
-- numbers hex
line = string.gsub(line, "(%$[%da-fA-F]+)%f[%W]",
'%1')
-- numbers decimal
line = string.gsub(line, "%f[%w](%-?%d+)%f[%W]",
'%1')
-- opcodes
for op,_ in pairs(opcode_lookup) do
line = string.gsub(line,
"%f[%w]("..op..")%f[%W]",
'%1')
end
-- parameters
for par,_ in pairs(parameter_lookup) do
line = string.gsub(line,
"%f[%w]("..par..")%f[%W]",
'%1')
end
return line
end
function p.highlight(frame)
local text = frame.args[1] or "" local lines = mw.text.split(text, "\n")
for i,line in ipairs(lines) do
lines[i] = highlight_line(line)
end
return '
'
.. table.concat(lines, "\n") .. ''
end
return p