Class: Solrengine::Programs::IdlParser

Inherits:
Object
  • Object
show all
Defined in:
lib/solrengine/programs/idl_parser.rb

Defined Under Namespace

Classes: ParsedAccount, ParsedAccountMeta, ParsedError, ParsedField, ParsedIdl, ParsedInstruction, ParsedSeed, ParsedType, UnsupportedVersionError

Constant Summary collapse

SUPPORTED_SPEC =
"0.1.0"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(json_string) ⇒ IdlParser

Returns a new instance of IdlParser.



58
59
60
# File 'lib/solrengine/programs/idl_parser.rb', line 58

def initialize(json_string)
  @data = JSON.parse(json_string)
end

Class Method Details

.parse(json_string) ⇒ Object



50
51
52
# File 'lib/solrengine/programs/idl_parser.rb', line 50

def self.parse(json_string)
  new(json_string).parse
end

.parse_file(path) ⇒ Object



54
55
56
# File 'lib/solrengine/programs/idl_parser.rb', line 54

def self.parse_file(path)
  parse(File.read(path))
end

Instance Method Details

#parseObject



62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/solrengine/programs/idl_parser.rb', line 62

def parse
  validate_spec_version!

  ParsedIdl.new(
    program_id: @data["address"],
    name: @data.dig("metadata", "name"),
    version: @data.dig("metadata", "version"),
    instructions: parse_instructions,
    accounts: parse_accounts,
    types: parse_types,
    errors: parse_errors
  )
end