Sha256: f990255293f7259b17b1f3c129ea8ba093828465171870c99cb4737e39fefb80

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

# frozen_string_literal: true

require "bq_coaster"
require "bq_coaster/generators/dataflow_converter/converter_renderer"

module BqCoaster
  module Generators
    class DataflowConverter < Base
      class Context
        attr_reader :renderer

        def initialize(renderer)
          @renderer = renderer
        end

        def definitions
          renderer.definitions
        end

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

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

        def prefix
          renderer.prefix
        end

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

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bq_coaster-0.2.0 lib/bq_coaster/generators/dataflow_converter/context.rb