Class: Cabriolet::HLP::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/cabriolet/hlp/parser.rb

Overview

Main parser for HLP files

Detects the HLP format variant and delegates to the appropriate parser:

  • QuickHelp (DOS format with “LN” signature)

  • Windows Help (WinHelp 3.x/4.x format)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(io_system = nil) ⇒ Parser

Initialize parser

Parameters:

  • io_system (System::IOSystem, nil) (defaults to: nil)

    Custom I/O system or nil for default



19
20
21
# File 'lib/cabriolet/hlp/parser.rb', line 19

def initialize(io_system = nil)
  @io_system = io_system || System::IOSystem.new
end

Instance Attribute Details

#io_systemObject (readonly)

Returns the value of attribute io_system.



14
15
16
# File 'lib/cabriolet/hlp/parser.rb', line 14

def io_system
  @io_system
end

Instance Method Details

#parse(filename) ⇒ Models::HLPHeader, Models::WinHelpHeader

Parse an HLP file

Parameters:

  • filename (String)

    Path to HLP file

Returns:

Raises:



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/cabriolet/hlp/parser.rb', line 28

def parse(filename)
  # Detect format
  format = detect_format(filename)

  # Dispatch to appropriate parser
  case format
  when :quickhelp
    QuickHelp::Parser.new(@io_system).parse(filename)
  when :winhelp
    WinHelp::Parser.new(@io_system).parse(filename)
  else
    raise Cabriolet::ParseError,
          "Unknown HLP format in file: #{filename}"
  end
end