| Line 10: |
Line 10: |
| | } | | } |
| | | | |
| − | local colors = { | + | local diff_colors = { |
| | ['Easy'] = '5a5', | | ['Easy'] = '5a5', |
| | ['Medium'] = 'da6', | | ['Medium'] = 'da6', |
| Line 17: |
Line 17: |
| | } | | } |
| | | | |
| − | local diffs = { | + | local diff_names = { |
| | ['Easy'] = 'Easy+', | | ['Easy'] = 'Easy+', |
| | ['Medium'] = 'Medium+', | | ['Medium'] = 'Medium+', |
| Line 26: |
Line 26: |
| | function parseArgs(args) | | function parseArgs(args) |
| | | | |
| − | local table = { nodes = {}, rows = {} } | + | local tbl = { nodes = {}, rows = {} } |
| | | | |
| | -- header args | | -- header args |
| | for node in string.gmatch(args.nodes, args_grammar.comma_list) do | | for node in string.gmatch(args.nodes, args_grammar.comma_list) do |
| | local node = node:match(args_grammar.to_trim) | | local node = node:match(args_grammar.to_trim) |
| − | table.nodes[#table.nodes + 1] = { name = node } | + | table.insert(tbl.nodes, { name = node, boss = node == args.boss }) |
| − | if node == args.boss then
| |
| − | table.nodes[#table.nodes].boss = true
| |
| − | end
| |
| | end | | end |
| | | | |
| Line 42: |
Line 39: |
| | local ship, nodes = arg:match(args_grammar.ship_and_nodes) | | local ship, nodes = arg:match(args_grammar.ship_and_nodes) |
| | -- TODO: check ship existence? | | -- TODO: check ship existence? |
| − | table.rows[ship] = {} | + | table.insert(tbl.rows, 1, {}) |
| − | local row = table.rows[ship] | + | local row = tbl.rows[1] |
| | row.ship = ship | | row.ship = ship |
| | row.nodes = {} | | row.nodes = {} |
| − | for _, node in pairs(table.nodes) do | + | for _, node in pairs(tbl.nodes) do |
| | row.nodes[node.name] = nil | | row.nodes[node.name] = nil |
| | end | | end |
| Line 57: |
Line 54: |
| | -- TODO: check node existence? | | -- TODO: check node existence? |
| | if node then | | if node then |
| − | row.nodes[node] = { color = diff and colors[diff] or colors['?'], diff = diff and diffs[diff] or '?' } | + | row.nodes[node] = { color = diff and diff_colors[diff] or diff_colors['?'], diff = diff and diff_names[diff] or '?' } |
| | end | | end |
| | end | | end |
| Line 63: |
Line 60: |
| | end | | end |
| | | | |
| − | return table | + | return tbl |
| | | | |
| | end | | end |
| Line 77: |
Line 74: |
| | } | | } |
| | | | |
| − | function showTable(table) | + | function showTable(tbl) |
| | | | |
| | local res = table_format.header | | local res = table_format.header |
| | | | |
| | -- header | | -- header |
| − | for _, node in pairs(table.nodes) do | + | for _, node in pairs(tbl.nodes) do |
| | res = res .. string.format(node.boss and table_format.header_boss_node or table_format.header_node, node.name) | | res = res .. string.format(node.boss and table_format.header_boss_node or table_format.header_node, node.name) |
| | end | | end |
| | | | |
| | -- rows | | -- rows |
| − | for ship, row in pairs(table.rows) do | + | for _, row in pairs(tbl.rows) do |
| − | res = res .. string.format(table_format.ship_cell, ship) | + | res = res .. string.format(table_format.ship_cell, row.ship) |
| − | for _, node in pairs(table.nodes) do | + | for _, node in pairs(tbl.nodes) do |
| | local node = row.nodes[node.name] | | local node = row.nodes[node.name] |
| | res = res .. (node and string.format(table_format.node_cell, node.color, node.diff) or table_format.empty_cell) | | res = res .. (node and string.format(table_format.node_cell, node.color, node.diff) or table_format.empty_cell) |