Class: SchemaErd::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/schema_erd.rb

Constant Summary collapse

COLUMN_PATTERN =
/^\s+t\.(\w+)\s+"([^"]+)"(.*)$/
INDEX_PATTERN =
/^\s+t\.index\s+\[(.+)\](.*)$/
TABLE_PATTERN =
/^\s+create_table "([^"]+)"(.*) do \|t\|$/
FOREIGN_KEY_PATTERN =
/^\s+add_foreign_key "([^"]+)", "([^"]+)"(.*)$/

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ Parser

Returns a new instance of Parser.



31
32
33
34
35
36
# File 'lib/schema_erd.rb', line 31

def initialize(source)
  @source = source
  @tables = []
  @relationships = []
  @current_table = nil
end

Class Method Details

.call(source) ⇒ Object



27
28
29
# File 'lib/schema_erd.rb', line 27

def self.call(source)
  new(source).call
end

Instance Method Details

#callObject



38
39
40
41
42
43
# File 'lib/schema_erd.rb', line 38

def call
  source.each_line { |line| parse_line(line) }
  mark_foreign_keys

  Schema.new(version:, tables:, relationships:)
end