class Dry::Schema::Messages::YAML

def self.flat_hash(hash, path = [], keys = {})

Other tags:
    Api: - private
def self.flat_hash(hash, path = [], keys = {})
  hash.each do |key, value|
    flat_hash(value, [*path, key], keys) if value.is_a?(Hash)
    if value.is_a?(String) && hash['text'] != value
      keys[[*path, key].join(DOT)] = {
        text: value,
        meta: EMPTY_HASH
      }
    elsif value.is_a?(Hash) && value['text'].is_a?(String)
      keys[[*path, key].join(DOT)] = {
        text: value['text'],
        meta: value.dup.delete_if { |k| k == 'text' }.map { |k, v| [k.to_sym, v] }.to_h
      }
    end
  end
  keys
end