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 =
"ibex.parser-table"- SCHEMA_VERSION =
1- DEFAULT_MAX_BYTES =
16 * 1024 * 1024
Class Method Summary collapse
- .build(automaton, representation: :compact, cst_trivia: nil, omit_action_call: nil) ⇒ Document
- .load(source, max_bytes: DEFAULT_MAX_BYTES) ⇒ Document
Class Method Details
.build(automaton, representation: :compact, cst_trivia: nil, omit_action_call: nil) ⇒ Document
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
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.}" end |