Module: Ibex::TableArtifact

Defined in:
lib/ibex/table_artifact.rb,
lib/ibex/table_artifact/builder.rb,
lib/ibex/table_artifact/document.rb,
lib/ibex/table_artifact/executor.rb,
lib/ibex/table_artifact/validator.rb,
lib/ibex/table_artifact/serializer.rb,
lib/ibex/table_artifact/cst_projection.rb,
lib/ibex/table_artifact/validator/tables.rb,
lib/ibex/table_artifact/validator/support.rb,
lib/ibex/table_artifact/validator/metadata.rb,
sig/ibex/table_artifact.rbs,
sig/ibex/table_artifact/builder.rbs,
sig/ibex/table_artifact/document.rbs,
sig/ibex/table_artifact/executor.rbs,
sig/ibex/table_artifact/validator.rbs,
sig/ibex/table_artifact/serializer.rbs,
sig/ibex/table_artifact/cst_projection.rbs,
sig/ibex/table_artifact/validator/tables.rbs,
sig/ibex/table_artifact/validator/support.rbs,
sig/ibex/table_artifact/validator/metadata.rbs

Overview

Experimental data-only authority for executable parser tables.

Defined Under Namespace

Modules: CSTProjection, Serializer, ValidationSupport, _Reader Classes: Builder, Document, Executor, MetadataValidator, TableValidator, ValidationError, Validator

Constant Summary collapse

ARTIFACT_TYPE =

RBS:

  • interface _Reader
      def read: (Integer length) -> String?
    end

Returns:

  • (String)
"ibex.parser-table"
SCHEMA_VERSION =

Signature:

  • String

Returns:

  • (Integer)
1
DEFAULT_MAX_BYTES =

Signature:

  • Integer

Returns:

  • (Integer)
16 * 1024 * 1024

Class Method Summary collapse

Class Method Details

.build(automaton, representation: :compact, cst_trivia: nil, omit_action_call: nil) ⇒ Document

RBS:

  • (IR::Automaton automaton, ?representation: Symbol | String, ?cst_trivia: Symbol | String?, ?omit_action_call: bool?) -> Document

Parameters:

  • automaton (IR::Automaton)
  • representation: (Symbol, String) (defaults to: :compact)
  • cst_trivia: (Symbol, String, nil) (defaults to: nil)
  • omit_action_call: (Boolean, nil) (defaults to: nil)

Returns:



35
36
37
38
39
40
41
42
# File 'lib/ibex/table_artifact.rb', line 35

def build(automaton, representation: :compact, cst_trivia: nil, omit_action_call: nil)
  Builder.new(
    automaton,
    representation: representation,
    cst_trivia: cst_trivia,
    omit_action_call: omit_action_call
  ).build
end

.load(source, max_bytes: DEFAULT_MAX_BYTES) ⇒ Document

RBS:

  • (String | _Reader source, ?max_bytes: Integer) -> Document

Parameters:

  • source (String, _Reader)
  • max_bytes: (Integer) (defaults to: DEFAULT_MAX_BYTES)

Returns:



45
46
47
48
49
50
51
52
53
54
# File 'lib/ibex/table_artifact.rb', line 45

def load(source, max_bytes: DEFAULT_MAX_BYTES)
  bytes = read_bounded(source, max_bytes)
  unless bytes.dup.force_encoding(Encoding::UTF_8).valid_encoding?
    raise ValidationError, "table artifact must be UTF-8 JSON"
  end

  Document.new(JSON.parse(bytes))
rescue JSON::ParserError => e
  raise ValidationError, "invalid table artifact JSON: #{e.message}"
end