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

Overview

Experimental data-only authority for executable parser tables.

Defined Under Namespace

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

Constant Summary collapse

ARTIFACT_TYPE =

@rbs! interface _Reader def read: (Integer length) -> String? end

"ibex.parser-table"
SCHEMA_VERSION =

: String

1
DEFAULT_MAX_BYTES =

: Integer

16 * 1024 * 1024

Class Method Summary collapse

Class Method Details

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



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) ⇒ Object



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