Sha256: 22282a1d702f19ee723411ccd313f97781931961d8445bfb5c50f9a3bac49ac3

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

# coding: utf-8

module Thinreports
  module Layout

    class Base
      EXT_NAME = 'tlf'
      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.9.1 lib/thinreports/layout/base.rb
thinreports-0.9.0 lib/thinreports/layout/base.rb