From f9008bcfed2537bf2e4d6d33a98a72a115388d93 Mon Sep 17 00:00:00 2001 From: Paul Duncan Date: Sat, 26 May 2018 09:26:37 -0400 Subject: separate op switches, remove inline op code, strip whitespace --- gen.rb | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'gen.rb') diff --git a/gen.rb b/gen.rb index 4b02320..6d579ca 100644 --- a/gen.rb +++ b/gen.rb @@ -6,14 +6,15 @@ require 'erb' # load template data DATA = YAML.load_file(File.join(__dir__, 'ops.yaml')) -switches = DATA['ops'].reduce([]) do |r, set| - prefix = (set.first == 'cb') ? 0xCB00 : 0x0000 - - set.last.reduce(r) do |r, op| +switches = Hash.new { |h, k| h[k] = [] } +DATA['ops'].each do |set_id, ops| + switches[set_id] = ops.select { |op| + op['op'] != 'PREFIX' + }.map { |op| # op hex string - hex = (prefix + op['hex']).to_s(16).upcase.rjust(4, '0') + hex = op['hex'].to_s(16).upcase.rjust(2, '0') - r << case op['op'] + case op['op'] when 'XX' [ "case 0x%s: /* op: %s, cat: %s */", @@ -50,8 +51,8 @@ switches = DATA['ops'].reduce([]) do |r, set| time_expr, ] end - end -end.join("\n") + }.join("\n") +end t = ERB.new(DATA['templates']['main']) puts t.run(binding) -- cgit v1.2.3