Class: Expressir::Express::Builders::SchemaVersionBuilder
- Inherits:
-
Object
- Object
- Expressir::Express::Builders::SchemaVersionBuilder
- Defined in:
- lib/expressir/express/builders/schema_version_builder.rb
Overview
Builds schema_version_id nodes into SchemaVersion objects.
Instance Method Summary collapse
Instance Method Details
#call(ast_data) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/expressir/express/builders/schema_version_builder.rb', line 8 def call(ast_data) string_val = Builder.build_optional(ast_data[:string_literal]) value = string_val.is_a?(Expressir::Model::Literals::String) ? string_val.value : string_val.to_s items = nil if value.start_with?("{") && value.end_with?("}") parts = value[1..-2].split items = parts.map do |part| if (match = part.match(/^(.+)\((\d+)\)$/)) Expressir::Model::Declarations::SchemaVersionItem.new( name: match[1], value: match[2], ) elsif /^\d+$/.match?(part) Expressir::Model::Declarations::SchemaVersionItem.new(value: part) else Expressir::Model::Declarations::SchemaVersionItem.new(name: part) end end end Expressir::Model::Declarations::SchemaVersion.new(value: value, items: items) end |