File: instance_variables.rb

package info (click to toggle)
ruby-morpher 0.2.6-2
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 520 kB
  • sloc: ruby: 2,366; makefile: 4
file content (60 lines) | stat: -rw-r--r-- 1,574 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
module Morpher
  class Evaluator
    class Transformer
      class Domain < self
        # Abstract namespace class for domain objects via instance variables
        class InstanceVariables < self
          include AbstractType

          # Evaluator for dumping domain objects via instance variables
          class Dump < self
            include Domain::Dump

            register :dump_instance_variables

            # Call evaluator
            #
            # @param [Object] input
            #
            # @return [Hash<Symbol, Object>]
            #
            # @api private
            #
            def call(input)
              dump do |attribute, attributes|
                attributes[attribute.name] =
                  input.instance_variable_get(attribute.ivar_name)
              end
            end

          end # Dump

          # Evaluator for loading domain objects via instance variables
          class Load < self
            include Domain::Load

            register :load_instance_variables

            # Call evaluator
            #
            # @param [Object] input
            #
            # @return [Object]
            #
            # @api private
            #
            def call(input)
              load do |attribute, object|
                object.instance_variable_set(
                  attribute.ivar_name,
                  input.fetch(attribute.name)
                )
              end
            end

          end # Load
        end # Domain
      end # Anima
    end # Transformer
  end # Evaluator
end # Morpher