Module: RASN2::SchemaParser
- Defined in:
- lib/rasn2/schema_parser.rb
Overview
Parser for ASN.1 text schema definitions.
Parses ASN.1 module definitions and generates Model subclasses from them.
Defined Under Namespace
Classes: ParseError
Constant Summary collapse
- TYPE_MAP =
ASN.1 type name to RASN2 type DSL method mapping
{ 'BOOLEAN' => :boolean, 'INTEGER' => :integer, 'BIT STRING' => :bit_string, 'OCTET STRING' => :octet_string, 'NULL' => :null, 'OBJECT IDENTIFIER' => :objectid, 'ENUMERATED' => :enumerated, 'UTF8String' => :utf8_string, 'PrintableString' => :printable_string, 'IA5String' => :ia5_string, 'VisibleString' => :visible_string, 'NumericString' => :numeric_string, 'BMPString' => :bmp_string, 'UniversalString' => :universal_string, 'UTCTime' => :utc_time, 'GeneralizedTime' => :generalized_time }.freeze
- CONSTRUCTED_TYPES =
Constructed type names
%w[SEQUENCE SET TAG].freeze
Class Method Summary collapse
-
.parse(schema, namespace: Object) ⇒ Hash{String => Class}
Parse an ASN.1 schema string and generate Model classes.
-
.parse_file(filename, namespace: Object) ⇒ Hash{String => Class}
Parse an ASN.1 schema from a file and generate Model classes.
-
.type_to_class(type_name) ⇒ Class?
Convert an ASN.1 type name to the corresponding RASN2::Types class.
-
.type_to_method(type_name) ⇒ Symbol?
Convert an ASN.1 type name to the corresponding RASN2 Model DSL method symbol.
Class Method Details
.parse(schema, namespace: Object) ⇒ Hash{String => Class}
Parse an ASN.1 schema string and generate Model classes.
68 69 70 71 |
# File 'lib/rasn2/schema_parser.rb', line 68 def parse(schema, namespace: Object) mod = parse_module(schema) build_models(mod, namespace: namespace) end |
.parse_file(filename, namespace: Object) ⇒ Hash{String => Class}
Parse an ASN.1 schema from a file and generate Model classes.
59 60 61 |
# File 'lib/rasn2/schema_parser.rb', line 59 def parse_file(filename, namespace: Object) parse(File.read(filename), namespace: namespace) end |
.type_to_class(type_name) ⇒ Class?
Convert an ASN.1 type name to the corresponding RASN2::Types class
458 459 460 461 462 463 464 465 466 467 468 |
# File 'lib/rasn2/schema_parser.rb', line 458 def self.type_to_class(type_name) method_sym = TYPE_MAP[type_name] return nil unless method_sym class_name = type_name.gsub(/\s+/, '') begin Types.const_get(class_name) rescue NameError nil end end |
.type_to_method(type_name) ⇒ Symbol?
Convert an ASN.1 type name to the corresponding RASN2 Model DSL method symbol
451 452 453 |
# File 'lib/rasn2/schema_parser.rb', line 451 def self.type_to_method(type_name) TYPE_MAP[type_name] end |