lib/grumlin/steps_serializers/bytecode.rb in grumlin-0.23.0 vs lib/grumlin/steps_serializers/bytecode.rb in grumlin-1.0.0.rc1

- old
+ new

@@ -1,72 +1,69 @@ # frozen_string_literal: true -module Grumlin - module StepsSerializers - class Bytecode < Serializer - # constructor params: no_return: true|false, default false - # TODO: add pretty +class Grumlin::StepsSerializers::Bytecode < Grumlin::StepsSerializers::Serializer + # constructor params: no_return: true|false, default false + # TODO: add pretty - NONE_STEP = StepData.new("none") + NONE_STEP = Grumlin::StepData.new("none") - def serialize - steps = ShortcutsApplyer.call(@steps) - no_return = @params.fetch(:no_return, false) - {}.tap do |result| - result[:step] = serialize_steps(steps.steps + (no_return ? [NONE_STEP] : [])) if steps.steps.any? - result[:source] = serialize_steps(steps.configuration_steps) if steps.configuration_steps.any? - end - end + def serialize + steps = Grumlin::ShortcutsApplyer.call(@steps) + no_return = @params.fetch(:no_return, false) + {}.tap do |result| + result[:step] = serialize_steps(steps.steps + (no_return ? [NONE_STEP] : [])) if steps.steps.any? + result[:source] = serialize_steps(steps.configuration_steps) if steps.configuration_steps.any? + end + end - private + private - def serialize_steps(steps) - steps.map { |s| serialize_step(s) } - end + def serialize_steps(steps) + steps.map { |s| serialize_step(s) } + end - def serialize_step(step) - [step.name].tap do |result| - step.args.each do |arg| - result << serialize_arg(arg) - end - result << step.params if step.params.any? - end + def serialize_step(step) + [step.name].tap do |result| + step.args.each do |arg| + result << serialize_arg(arg) end + result << step.params if step.params.any? + end + end - def serialize_arg(arg) - return serialize_typed_value(arg) if arg.is_a?(TypedValue) - return serialize_predicate(arg) if arg.is_a?(Expressions::P::Predicate) - return arg.value if arg.is_a?(Expressions::WithOptions) + def serialize_arg(arg) + return serialize_typed_value(arg) if arg.is_a?(Grumlin::TypedValue) + return serialize_predicate(arg) if arg.is_a?(Grumlin::Expressions::P::Predicate) + return arg.value if arg.is_a?(Grumlin::Expressions::WithOptions) - return arg unless arg.is_a?(Steps) + return arg unless arg.is_a?(Grumlin::Steps) - { :@type => "g:Bytecode", :@value => Bytecode.new(arg, **@params.merge(no_return: false)).serialize } - end + { :@type => "g:Bytecode", + :@value => Grumlin::StepsSerializers::Bytecode.new(arg, **@params.merge(no_return: false)).serialize } + end - def serialize_typed_value(value) - return value.value if value.type.nil? + def serialize_typed_value(value) + return value.value if value.type.nil? - { - "@type": "g:#{value.type}", - "@value": value.value - } - end + { + "@type": "g:#{value.type}", + "@value": value.value + } + end - def serialize_predicate(value) - { - "@type": "g:#{value.namespace}", - "@value": { - predicate: value.name, - value: if value.type.nil? - value.value - else - { - "@type": "g:#{value.type}", - "@value": value.value - } - end - } - } - end - end + def serialize_predicate(value) + { + "@type": "g:#{value.namespace}", + "@value": { + predicate: value.name, + value: if value.type.nil? + value.value + else + { + "@type": "g:#{value.type}", + "@value": value.value + } + end + } + } end end