# frozen_string_literal: true # Representa la plantilla de un campo en los metadatos del artículo MetadataTemplate = Struct.new(:site, :document, :name, :label, :type, :value, :help, :required, keyword_init: true) do # El valor por defecto def default_value raise NotImplementedError end # Valores posibles, busca todos los valores actuales en otros # artículos del mismo sitio def values site.everything_of(name.to_s) end # Valor actual o por defecto def value super || document.data.dig(name.to_s, default_value) end end