Class: BqCoaster::Generators::DataflowConverter::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/bq_coaster/generators/dataflow_converter/context.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(renderer) ⇒ Context

Returns a new instance of Context.



12
13
14
# File 'lib/bq_coaster/generators/dataflow_converter/context.rb', line 12

def initialize(renderer)
  @renderer = renderer
end

Instance Attribute Details

#rendererObject (readonly)

Returns the value of attribute renderer.



10
11
12
# File 'lib/bq_coaster/generators/dataflow_converter/context.rb', line 10

def renderer
  @renderer
end

Instance Method Details

#definitionsObject



16
17
18
# File 'lib/bq_coaster/generators/dataflow_converter/context.rb', line 16

def definitions
  renderer.definitions
end

#field_name(name) ⇒ Object



20
21
22
# File 'lib/bq_coaster/generators/dataflow_converter/context.rb', line 20

def field_name(name)
  "#{prefix}.#{name}".sub(/src\./, "").tr(".", "_")
end

#nested?(definition) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
27
28
# File 'lib/bq_coaster/generators/dataflow_converter/context.rb', line 24

def nested?(definition)
  !(
    definition.nil? || BqCoaster.edge_properties.any? { |c| definition.include?(c) }
  )
end

#prefixObject



30
31
32
# File 'lib/bq_coaster/generators/dataflow_converter/context.rb', line 30

def prefix
  renderer.prefix
end

#render_converter(name, definition) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/bq_coaster/generators/dataflow_converter/context.rb', line 34

def render_converter(name, definition)
  ConverterRenderer.new(
    definition,
    prefix: "#{prefix}.#{name}",
    indent: 1
  ).render
end

#string?(definition) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
46
47
48
49
50
51
# File 'lib/bq_coaster/generators/dataflow_converter/context.rb', line 42

def string?(definition)
  return false if nested?(definition)
  return true if definition.nil?
  if definition.key?(:_original_type)
    definition._original_type == "String"
  else
    return true unless definition.key?(:_type)
    definition._type.casecmp("string").zero?
  end
end

#value(name, definition) ⇒ Object



53
54
55
56
57
58
59
# File 'lib/bq_coaster/generators/dataflow_converter/context.rb', line 53

def value(name, definition)
  if definition&.key?(:_convert)
    definition._convert.gsub(/%s/, "#{prefix}.#{name}")
  else
    "#{prefix}.#{name}"
  end
end