Sha256: 0b54f14d06229f0052ecf9b34f4d3669cbc79dc174a832008144465c7fa55f6f
Contents?: true
Size: 1.47 KB
Versions: 4
Compression:
Stored size: 1.47 KB
Contents
# require "eitil_integrate/application_exporter/lookups" require "eitil_integrate/application_exporter/initialize" require "eitil_support/directory" module EitilIntegrate::RubyXL class ApplicationExporter class << self def exporter_paths EitilSupport::Directory.files('app/views/exporters/exporters').select { |path| path.end_with? '_exporter.rb' } end def exporter_names exporter_paths.map { |path| path.split('/').last.remove('.rb').camelcase } end def exporter_constants exporter_names.map &:constantize end def exporter_infos exporter_constants.map { |_c| { "#{_c.to_s.remove("Exporter")}": _c.info || {} } }.inject &:merge end def exporter_info(exporter, info) exporter_infos[exporter]&.dig(info) end # returns the exporter_infos, without the datatypes – for taxonomy purpuses, the field # names are often sufficient def exporter_taxonomy parameter_fields = exporter_infos.transform_values { |v| v.select { |k,v| k == :required || k == :optional } } parameter_fields.transform_values do |setting_collection| setting_collection.transform_values do |setting| setting.map { |key| key.is_a?(Hash) ? key.keys : key }.flatten end end end def exporter_params exporter_infos.transform_values { |v| [v[:required], v[:optional]].flatten.compact } end end end end
Version data entries
4 entries across 4 versions & 1 rubygems