module Eco module Common class MetaThor class Value KEY = "MetaThorValue" KEY_OPTION = "MetaThorJSON" class << self def to_value(doc) case when doc.is_a?(Hash) case when doc.key?(KEY_OPTION) to_value(doc[KEY_OPTION]) when doc.key?(KEY) doc[KEY] else doc end when doc.is_a?(String) to_value(JSON.parse(doc)) when doc.is_a?(Value) value.value end end def key?(object) end end attr_reader :value def initialize(value) @doc = {"#{KEY}" => value} end def value @doc[KEY] end def as_input_option "--#{INPUT_OPTION}=#{KEY_OPTION}:#{@doc.to_json}" end def as_option {"#{INPUT_SYM}" => self} end end end end end