Sha256: b2b1a2ace9619b31b6beefdc3a82e282c6d32932d2188ca61fecf54d0cbac02e

Contents?: true

Size: 1.98 KB

Versions: 4

Compression:

Stored size: 1.98 KB

Contents

require_relative 'element'
require_relative 'field'

module SSO
  module Elements
    class Config
      attr_accessor :name,
                    :offset,
                    :type,
                    :fields,
                    :types,
                    :values

      CFG_AVAIL = {
        150 => 'PW_1.0.2_v150.cfg',
        152 => 'PW_1.0.2_v152.cfg'
      }

      def initialize(collection)
        @collection = collection
        @offsets = []
        @fields = []
        @types = []
        @values = []
      end

      def to_json
        values.map do |value|
          result = {}

          value.each_with_index do |data, index|
            result[fields[index]] = {
              'data' => data,
              'type' => types[index]
            }
          end

          result
        end
      end

      def elements
        return @elements if @elements

        @elements = values.map do |value|
          Element.from_value(self, value)
        end
      end

      def elements_loaded?
        !@elements.nil?
      end

      def add_element(element)
        @values << element.to_value
        @elements << element
        @collection.id_set << element.id

        true
      end

      def find_element_by_id(id)
        elements.find do |element|
          element.id == id
        end
      end

      def find_element_by_name(name)
        elements.find do |element|
          element.name.to_s.downcase == name.to_s.downcase
        end
      end

      def find_elements_by_name(name)
        elements.select do |element|
          element.name.to_s.downcase.include?(name.to_s.downcase)
        end
      end
      def grouped_field_quantity
        return @fields_quantity if @fields_quantity

        @fields_quantity = {}

        fields.each do |field|
          @fields_quantity[field] ||= 0
          @fields_quantity[field]  += 1
        end

        @fields_quantity
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
sso-elements-fmk-0.1.6 lib/sso/elements/config.rb
sso-elements-fmk-0.1.5 lib/sso/elements/config.rb
sso-elements-fmk-0.1.4 lib/sso/elements/config.rb
sso-elements-fmk-0.1.3 lib/sso/elements/config.rb