Module: ImageFilterDsl::Serializers::Intermediate

Extended by:
Intermediate
Includes:
Common
Included in:
Intermediate
Defined in:
lib/image_filter_dsl/serializers/intermediate.rb

Overview

Provides serialization/deserialization for Kernels to an intermediate format representing kernel as hash. Used by other serializers as intermediate between serializing from and deserializing to kernels

Instance Method Summary collapse

Methods included from Common

#fix_hash, #normalize_sym

Instance Method Details

#from_kernel(kernel) ⇒ Hash

Convert kernel to intermediate hash struct

Parameters:

Returns:

  • (Hash)

    Intermediate hash version of kernel



21
22
23
24
25
26
27
28
29
30
# File 'lib/image_filter_dsl/serializers/intermediate.rb', line 21

def from_kernel(kernel)
    data = {
        inputs: kernel.inputs,
        outputs: kernel.outputs
    }
    data[:instructions] = kernel.instructions.map do |i|
        {op: i.op, in: i.inputs, out: i.out}
    end
    data
end

#to_kernel(data) ⇒ ImageFilterDsl::Dsl::Kernel

Convert intermediate kernel hash to kernel object

Parameters:

  • data (Hash)

    Intermediate kernel data

Returns:



36
37
38
39
40
41
42
43
44
# File 'lib/image_filter_dsl/serializers/intermediate.rb', line 36

def to_kernel(data)
    ins = data[:instructions].map{|i| fix_instruction_symbols(i) }
    filt = ImageFilterDsl::Dsl::Filter.define(data[:inputs],data[:outputs]) do
        ins.each do |i|
            send(i[:op], i[:in], i[:out])
        end
    end
    return filt
end