Sha256: 5796a1e2d0b0c7b9aedffb94a9cef34187fbf64710192d2a055bd1d4b742a0b0

Contents?: true

Size: 1.36 KB

Versions: 51

Compression:

Stored size: 1.36 KB

Contents

require "yaml"

module Metanorma
  module Cli
    class Collection
      def initialize(file, options)
        @file = file
        @options = Cli.with_indifferent_access(options)
        @compile_options = @options.delete(:compile)
      end

      def self.render(filename, options = {})
        new(filename, options).render
      end

      def render
        extract_options_from_file
        collection_file.render(collection_options.compact)
      end

      private

      attr_reader :file, :options

      def collection_file
        @collection_file ||= Metanorma::Collection.parse(file)
      end

      def collection_options
        {
          compile: @compile_options,
          coverpage: options.fetch(:coverpage, nil),
          output_folder: options.fetch(:output_folder, nil),
          format: collection_output_formats(options.fetch(:format, "")),
        }
      end

      def collection_output_formats(formats)
        if formats.is_a?(String)
          formats = formats.split(",")
        end

        (formats || []).map { |extension| extension.strip.to_sym }
      end

      def extract_options_from_file
        if options.empty?
          yaml_file = YAML.safe_load(File.read(@file.to_s))

          @options = Cli.with_indifferent_access(
            yaml_file.slice("coverpage", "format", "output_folder"),
          )
        end
      end
    end
  end
end

Version data entries

51 entries across 51 versions & 1 rubygems

Version Path
metanorma-cli-1.6.1 lib/metanorma/cli/collection.rb
metanorma-cli-1.6.0.1 lib/metanorma/cli/collection.rb
metanorma-cli-1.6.0.pre.1 lib/metanorma/cli/collection.rb
metanorma-cli-1.6.0.pre lib/metanorma/cli/collection.rb
metanorma-cli-1.5.24 lib/metanorma/cli/collection.rb
metanorma-cli-1.5.23 lib/metanorma/cli/collection.rb
metanorma-cli-1.5.23.pre lib/metanorma/cli/collection.rb
metanorma-cli-1.5.22 lib/metanorma/cli/collection.rb
metanorma-cli-1.5.22.pre.1 lib/metanorma/cli/collection.rb
metanorma-cli-1.5.22.pre lib/metanorma/cli/collection.rb
metanorma-cli-1.5.21 lib/metanorma/cli/collection.rb
metanorma-cli-1.5.21.pre lib/metanorma/cli/collection.rb
metanorma-cli-1.5.20 lib/metanorma/cli/collection.rb
metanorma-cli-1.5.20.pre lib/metanorma/cli/collection.rb
metanorma-cli-1.5.19 lib/metanorma/cli/collection.rb
metanorma-cli-1.5.19.pre lib/metanorma/cli/collection.rb
metanorma-cli-1.5.18 lib/metanorma/cli/collection.rb
metanorma-cli-1.5.18.pre lib/metanorma/cli/collection.rb
metanorma-cli-1.5.17 lib/metanorma/cli/collection.rb
metanorma-cli-1.5.17.pre lib/metanorma/cli/collection.rb