Sha256: 9e4a8eeee90a899b70a490221ece7d0a28204f34095e203f15e6357fbde3d6ba

Contents?: true

Size: 1.18 KB

Versions: 2

Compression:

Stored size: 1.18 KB

Contents

# frozen_string_literal: true

module Thinreports
  module Layout
    class Base
      EXT_NAME = 'tlf'.freeze
      include Utils

      class << self
        # @param [String] filename
        # @return [Thinreports::Layout::Format]
        # @raise [Thinreports::Errors::InvalidLayoutFormat]
        # @raise [Thinreports::Errors::IncompatibleLayoutFormat]
        def load_format(filename)
          filename += ".#{EXT_NAME}" unless filename =~ /\.#{EXT_NAME}$/

          unless File.exist?(filename)
            raise Thinreports::Errors::LayoutFileNotFound
          end
          # Build format.
          Thinreports::Layout::Format.build(filename)
        end
      end

      attr_reader :format

      # @return [String]
      attr_reader :filename

      # @return [Symbol]
      attr_reader :id

      # @param [String] filename
      # @param [Hash] options
      # @option options [Symbol] :id (nil)
      def initialize(filename, options = {})
        @filename = filename
        @format = self.class.load_format(filename)
        @id = options[:id]
      end

      # @return [Boolean] Return the true if is default layout.
      def default?
        @id.nil?
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
thinreports-0.10.1 lib/thinreports/layout/base.rb
thinreports-0.10.0 lib/thinreports/layout/base.rb