class Pakyow::Reflection::Exposure

@api private

Attributes

binding[R]
children[R]
dataset[R]
node[R]
parent[R]
scope[R]

Public Class Methods

new(scope:, node:, binding:, dataset: nil, parent: nil) click to toggle source
# File lib/pakyow/reflection/endpoint.rb, line 9
def initialize(scope:, node:, binding:, dataset: nil, parent: nil)
  @scope = scope
  @node = node
  @binding = binding
  @dataset = parse_dataset(dataset) if dataset
  @parent = parent
  @children = []

  if parent
    parent.children << self
  end
end

Public Instance Methods

cleanup() click to toggle source
# File lib/pakyow/reflection/endpoint.rb, line 22
def cleanup
  @node = nil
end

Private Instance Methods

parse_dataset(dataset) click to toggle source
# File lib/pakyow/reflection/endpoint.rb, line 28
def parse_dataset(dataset)
  options = {}

  dataset.to_s.split(";").each do |dataset_part|
    key, value = dataset_part.split(":", 2).map(&:to_s).map(&:strip)

    value = if value.include?(",") || value.include?("(")
      value.split(",").map { |value_part|
        parse_value_part(value_part)
      }
    else
      parse_value_part(value)
    end

    options[key.to_sym] = value
  end

  options
end
parse_value_part(value_part) click to toggle source
# File lib/pakyow/reflection/endpoint.rb, line 48
def parse_value_part(value_part)
  value_part = value_part.strip

  if value_part.include?("(")
    value_part.split("(").map { |sub_value_part|
      sub_value_part.strip.gsub(")", "")
    }
  else
    value_part
  end
end