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

Version Path
eitil-2.0.4 eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb
eitil-2.0.3 eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb
eitil-2.0.2 eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb
eitil-2.0.1 eitil_integrate/lib/eitil_integrate/application_exporter/lookups.rb