Module: Ibex::CLIGenerationErrorMessages

Included in:
CLI
Defined in:
lib/ibex/cli/generation_error_messages.rb,
sig/ibex/cli/generation_error_messages.rbs

Overview

Optional example-keyed error-message support for parser generation.

Instance Method Summary collapse

Instance Method Details

#add_error_messages_generation_option(options) ⇒ void

This method returns an undefined value.

RBS:

  • (OptionParser options) -> void

Parameters:

  • options (OptionParser)


13
14
15
16
17
# File 'lib/ibex/cli/generation_error_messages.rb', line 13

def add_error_messages_generation_option(options)
  options.on("--messages=FILE", "embed example-keyed syntax error messages") do |value|
    @options[:messages] = value
  end
end

#configured_error_messages(automaton) ⇒ Hash[Integer, untyped]

RBS:

  • (IR::Automaton automaton) -> Hash[Integer, untyped]

Parameters:

Returns:

  • (Hash[Integer, untyped])


20
21
22
23
24
25
26
27
28
29
# File 'lib/ibex/cli/generation_error_messages.rb', line 20

def configured_error_messages(automaton)
  path = @options[:messages]
  return {} unless path

  require_relative "../error_messages"
  source = File.binread(path)
  record_generation_input(path, source)
  document = ErrorMessages.parse(source, file: path)
  ErrorMessages.records_for(document, automaton, file: path)
end

#validate_messages_optionsvoid

This method returns an undefined value.

RBS:

  • () -> void



32
33
34
35
36
37
# File 'lib/ibex/cli/generation_error_messages.rb', line 32

def validate_messages_options
  return unless @options[:messages]
  raise Ibex::Error, "(cli):1:1: --messages is available only with --emit=ruby" unless @options[:emit] == "ruby"

  raise Ibex::Error, "(cli):1:1: --messages cannot be combined with --check-only" if @options[:check_only]
end