Class: Cabriolet::HLP::QuickHelp::StructureBuilder

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

Overview

Builds complete QuickHelp structure from file data

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version: 2, database_name: "", control_char: 0x3A, case_sensitive: false) ⇒ StructureBuilder

Initialize structure builder

Parameters:

  • version (Integer) (defaults to: 2)

    QuickHelp format version

  • database_name (String) (defaults to: "")

    Database name for external links

  • control_char (Integer) (defaults to: 0x3A)

    Control character

  • case_sensitive (Boolean) (defaults to: false)

    Case-sensitive contexts



19
20
21
22
23
24
25
# File 'lib/cabriolet/hlp/quickhelp/structure_builder.rb', line 19

def initialize(version: 2, database_name: "", control_char: 0x3A,
case_sensitive: false)
  @version = version
  @database_name = database_name
  @control_char = control_char
  @case_sensitive = case_sensitive
end

Instance Attribute Details

#case_sensitiveObject (readonly)

Returns the value of attribute case_sensitive.



11
12
13
# File 'lib/cabriolet/hlp/quickhelp/structure_builder.rb', line 11

def case_sensitive
  @case_sensitive
end

#control_charObject (readonly)

Returns the value of attribute control_char.



11
12
13
# File 'lib/cabriolet/hlp/quickhelp/structure_builder.rb', line 11

def control_char
  @control_char
end

#database_nameObject (readonly)

Returns the value of attribute database_name.



11
12
13
# File 'lib/cabriolet/hlp/quickhelp/structure_builder.rb', line 11

def database_name
  @database_name
end

#versionObject (readonly)

Returns the value of attribute version.



11
12
13
# File 'lib/cabriolet/hlp/quickhelp/structure_builder.rb', line 11

def version
  @version
end

Instance Method Details

#build(topics) ⇒ Hash

Build complete QuickHelp structure from topics

Parameters:

  • topics (Array<Hash>)

    Topic data with :text, :context, :compress keys

Returns:

  • (Hash)

    Complete QuickHelp structure



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/cabriolet/hlp/quickhelp/structure_builder.rb', line 31

def build(topics)
  structure = {}

  # Compress topics
  structure[:topics] = compress_topics(topics)

  # Build context data
  structure[:contexts] = topics.map { |t| t[:context] }
  structure[:context_map] = topics.map.with_index { |_t, i| i }

  # Calculate offsets
  structure[:offsets] = OffsetCalculator.calculate(
    topics: structure[:topics],
    contexts: structure[:contexts],
    context_map: structure[:context_map],
  )

  # Build header
  structure[:header] = build_header(structure)

  structure
end