Class: EventEngine::EventSchemaWriter
- Inherits:
-
Object
- Object
- EventEngine::EventSchemaWriter
- Defined in:
- lib/event_engine/event_schema_writer.rb
Constant Summary collapse
- HEADER =
<<~RUBY.freeze # This file is authoritative in production. # It is generated from EventDefinitions via: # # bin/rails event_engine:schema:dump # # Do not edit manually. RUBY
Class Method Summary collapse
- .indent(io, spaces) ⇒ Object
- .write(path, event_schema) ⇒ Object
- .write_definition(io, definition) ⇒ Object
Class Method Details
.indent(io, spaces) ⇒ Object
38 39 40 41 42 43 44 45 |
# File 'lib/event_engine/event_schema_writer.rb', line 38 def self.indent(io, spaces) padding = " " * spaces yield.each_line do |line| io.write(padding) io.write(line) io.write("\n") end end |
.write(path, event_schema) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/event_engine/event_schema_writer.rb', line 13 def self.write(path, event_schema) schemas = event_schema .schemas_by_event .flat_map { |_event, versions| versions.values } .sort_by { |s| [s.event_name.to_s, s.event_version] } File.open(path, "w") do |io| io.write(HEADER) io.write("EventEngine::EventSchema.define do |schema|\n") schemas.each do |definition| write_definition(io, definition) end io.write("end\n") end end |
.write_definition(io, definition) ⇒ Object
32 33 34 35 36 |
# File 'lib/event_engine/event_schema_writer.rb', line 32 def self.write_definition(io, definition) io.write(" schema.register(\n") indent(io, 4) { definition.to_ruby } io.write(" )\n") end |