#!/usr/bin/env ruby
# -*- coding: utf-8 -*-

exit 1 if ARGV.size<2
File.open(ARGV[0]) {|f|

  data = f.read.unpack("B*")[0]

  puts "<wxHexEditor_XML_TAG><filename>"
  ARGV[1..-1].each {|ss|
    pos = 0
    sbs = (eval ss).to_s(2)
    note_colour = sprintf("#%02X%02X%02X", *(1..3).map{rand(0x7f)+0x80})
  
    while m = data.match(sbs, pos) do
      puts %Q{    <TAG>
      <start_offset>#{m.begin(0)/8}</start_offset>
      <end_offset>#{m.end(0)/8}</end_offset>
      <tag_text>#{sprintf("0x%08X(%d) : %s [%s]", m.begin(0)/8, m.begin(0)%8, ss, sbs)}</tag_text>
      <note_colour>#{note_colour}</note_colour>
    </TAG>}
      pos = m.begin(0) + 1
    end

  }
  puts "</filename></wxHexEditor_XML_TAG>"

}
