Class: DataMetaPii::AppLink

Inherits:
VersionedVo show all
Defined in:
lib/dataMetaPii.rb

Overview

AppLink Attribute Division VO, i.e. full Application Link Definition

Constant Summary collapse

INDENT =

Use same ident as the main class:

DataMetaPii::INDENT

Instance Attribute Summary collapse

Attributes inherited from VersionedVo

#ver

Instance Method Summary collapse

Constructor Details

#initialize(ver, vos, reusables = nil) ⇒ AppLink

Creates an instance for the given parameters, see the properties with the same names.



330
331
332
333
# File 'lib/dataMetaPii.rb', line 330

def initialize(ver, vos, reusables = nil)
    super(ver)
    @sectVos, @reusables = vos, reusables
end

Instance Attribute Details

#reusablesHash

Returns nil or the Hash keyed by reusable var name pointing to the instance of AttrSect PII field key pointing to the instance of AttrSect.

Returns:

  • (Hash)

    nil or the Hash keyed by reusable var name pointing to the instance of AttrSect PII field key pointing to the instance of AttrSect.



321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
# File 'lib/dataMetaPii.rb', line 321

class AppLink < VersionedVo

    # Use same ident as the main class:
    INDENT = DataMetaPii::INDENT
    
    attr_accessor :sectVos, :reusables
Creates an instance for the given parameters, see the properties with the same names.

    def initialize(ver, vos, reusables = nil)
        super(ver)
        @sectVos, @reusables = vos, reusables
    end

    # Resolves reusable variable references, reports errors
    def resolveRefs()
        raise ArgumentError, 'Sections are not set yet on this instance' unless @sectVos
        return self unless @reusables # no reusables defined, all vars should be accounted for
        @reusables.keys.each { |uk|
           ref = @reusables[uk].refs
           ref.keys.each { |rk|
              raise ArgumentError, %<Reusable "#{uk}" references "#{rk}" which is not defined> unless @reusables[rk]
           }
        }
        @sectVos.keys.each { |ak|
            app = @sectVos[ak]
            app.keys.each { |sk|
                sect = app[sk]
                sect.refs.keys.each { |rk|
                    raise ArgumentError, %<In the app "#{ak}": the field "#{sk}" references "#{
                            rk}" which is not defined> unless @reusables[rk]
                }
            }

        }
        self
    end

    # String representation
    def to_s
        %<#{self.class.name}{apps=#{@sectVos.inspect}>
    end
end

#sectVosHash

Returns the Hash keyed by the application name symbol pointing to a Hash keyed by the Abstract PII field key pointing to the instance of AttrSect.

Returns:

  • (Hash)

    the Hash keyed by the application name symbol pointing to a Hash keyed by the Abstract PII field key pointing to the instance of AttrSect.



321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
# File 'lib/dataMetaPii.rb', line 321

class AppLink < VersionedVo

    # Use same ident as the main class:
    INDENT = DataMetaPii::INDENT
    
    attr_accessor :sectVos, :reusables
Creates an instance for the given parameters, see the properties with the same names.

    def initialize(ver, vos, reusables = nil)
        super(ver)
        @sectVos, @reusables = vos, reusables
    end

    # Resolves reusable variable references, reports errors
    def resolveRefs()
        raise ArgumentError, 'Sections are not set yet on this instance' unless @sectVos
        return self unless @reusables # no reusables defined, all vars should be accounted for
        @reusables.keys.each { |uk|
           ref = @reusables[uk].refs
           ref.keys.each { |rk|
              raise ArgumentError, %<Reusable "#{uk}" references "#{rk}" which is not defined> unless @reusables[rk]
           }
        }
        @sectVos.keys.each { |ak|
            app = @sectVos[ak]
            app.keys.each { |sk|
                sect = app[sk]
                sect.refs.keys.each { |rk|
                    raise ArgumentError, %<In the app "#{ak}": the field "#{sk}" references "#{
                            rk}" which is not defined> unless @reusables[rk]
                }
            }

        }
        self
    end

    # String representation
    def to_s
        %<#{self.class.name}{apps=#{@sectVos.inspect}>
    end
end

Instance Method Details

#resolveRefsObject

Resolves reusable variable references, reports errors

Raises:

  • (ArgumentError)


336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
# File 'lib/dataMetaPii.rb', line 336

def resolveRefs()
    raise ArgumentError, 'Sections are not set yet on this instance' unless @sectVos
    return self unless @reusables # no reusables defined, all vars should be accounted for
    @reusables.keys.each { |uk|
       ref = @reusables[uk].refs
       ref.keys.each { |rk|
          raise ArgumentError, %<Reusable "#{uk}" references "#{rk}" which is not defined> unless @reusables[rk]
       }
    }
    @sectVos.keys.each { |ak|
        app = @sectVos[ak]
        app.keys.each { |sk|
            sect = app[sk]
            sect.refs.keys.each { |rk|
                raise ArgumentError, %<In the app "#{ak}": the field "#{sk}" references "#{
                        rk}" which is not defined> unless @reusables[rk]
            }
        }

    }
    self
end

#to_sObject

String representation



360
361
362
# File 'lib/dataMetaPii.rb', line 360

def to_s
    %<#{self.class.name}{apps=#{@sectVos.inspect}>
end