Sha256: 9841575c62385c26bf87e7db2f3d64afdb53224b8b5dc847a08129b71a1bdba3
Contents?: true
Size: 1.46 KB
Versions: 24
Compression:
Stored size: 1.46 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/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
24 entries across 24 versions & 1 rubygems