Class: Kaitai::Struct::Visualizer::ExternalCompilerVisualizer
- Inherits:
-
Visualizer
- Object
- Visualizer
- Kaitai::Struct::Visualizer::ExternalCompilerVisualizer
- Defined in:
- lib/kaitai/struct/visualizer/visualizer_main.rb
Instance Method Summary collapse
Methods inherited from Visualizer
Constructor Details
This class inherits a constructor from Kaitai::Struct::Visualizer::Visualizer
Instance Method Details
#compile_format(fn) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/kaitai/struct/visualizer/visualizer_main.rb', line 8 def compile_format(fn) main_class_name = nil Dir.mktmpdir { |code_dir| args = ['--debug', '-t', 'ruby', fn, '-d', code_dir] # UNIX-based systems run ksc via a shell wrapper that requires # extra '--' in invocation to disambiguate our '-d' from java runner # '-d' (which allows to pass defines to JVM). Windows-based systems # do not need and do not support this extra '--', so we don't add it # on Windows. args.unshift('--') unless Kaitai::TUI::is_windows? system('kaitai-struct-compiler', *args) if $?.exitstatus != 0 st = $?.exitstatus $stderr.puts("ksv: unable to find and execute kaitai-struct-compiler in your PATH") if st == 127 exit st end puts "Compilation OK" compiled_path = Dir.glob("#{code_dir}/*.rb")[0] require compiled_path puts "Class loaded OK" main_class_name = File.readlines(compiled_path).grep(/^class /)[0].strip.gsub(/^class /, '').gsub(/ <.*$/, '') } return main_class_name end |