231 lines
5.0 KiB
Ruby

# Copyright (c) HashiCorp, Inc.
# SPDX-License-Identifier: BUSL-1.1
require "google/protobuf/wrappers_pb"
module VagrantPlugins
module CommandServe
class Mappers
# Boolean mappers
class BooleanToProto < Mapper
def initialize
super(
inputs: [Input.new(type: Type::Boolean)],
output: Google::Protobuf::BoolValue,
func: method(:converter),
)
end
def converter(bool)
Google::Protobuf::BoolValue.new(value: bool.value)
end
end
class BooleanFromProto < Mapper
def initialize
super(
inputs: [Input.new(type: Google::Protobuf::BoolValue)],
output: Type::Boolean,
func: method(:converter),
)
end
def converter(proto)
Type::Boolean.new(value: proto.value)
end
end
class TrueToProto < Mapper
def initialize
super(
inputs: [Input.new(type: TrueClass)],
output: Google::Protobuf::BoolValue,
func: method(:converter)
)
end
def converter(v)
Google::Protobuf::BoolValue.new(value: v)
end
end
class FalseToProto < Mapper
def initialize
super(
inputs: [Input.new(type: FalseClass)],
output: Google::Protobuf::BoolValue,
func: method(:converter),
)
end
def converter(v)
Google::Protobuf::BoolValue.new(value: v)
end
end
# Bytes mappers
class BytesFromProto < Mapper
def initialize
super(
inputs: [Input.new(type: Google::Protobuf::BytesValue)],
output: String,
func: method(:converter)
)
end
def converter(proto)
proto.value
end
end
# Numeric mappers
class DoubleFromProto < Mapper
def initialize
super(
inputs: [Input.new(type: Google::Protobuf::DoubleValue)],
output: Float,
func: method(:converter),
)
end
def converter(num)
num.value
end
end
class FloatFromProto < Mapper
def initialize
super(
inputs: [Input.new(type: Google::Protobuf::FloatValue)],
output: Float,
func: method(:converter),
)
end
def converter(num)
num.value
end
end
class FloatToProto < Mapper
def initialize
super(
inputs: [Input.new(type: Float)],
output: Google::Protobuf::FloatValue,
func: method(:converter),
)
end
def converter(v)
Google::Protobuf::FloatValue.new(value: v)
end
end
class Int32FromProto < Mapper
def initialize
super(
inputs: [Input.new(type: Google::Protobuf::Int32Value)],
output: Integer,
func: method(:converter),
)
end
def converter(v)
v.value
end
end
class Int64FromProto < Mapper
def initialize
super(
inputs: [Input.new(type: Google::Protobuf::Int64Value)],
output: Integer,
func: method(:converter)
)
end
def converter(v)
v.value
end
end
class UInt32FromProto < Mapper
def initialize
super(
inputs: [Input.new(type: Google::Protobuf::UInt32Value)],
output: Integer,
func: method(:converter)
)
end
def converter(v)
v.value
end
end
class UInt64FromProto < Mapper
def initialize
super(
inputs: [Input.new(type: Google::Protobuf::UInt64Value)],
output: Integer,
func: method(:converter)
)
end
def converter(v)
v.value
end
end
class IntegerToProto < Mapper
def initialize
super(
inputs: [Input.new(type: Integer)],
output: Google::Protobuf::Int64Value,
func: method(:converter)
)
end
def converter(num)
Google::Protobuf::Int64Value.new(value: num)
end
end
# String mappers
class StringToProto < Mapper
def initialize
super(
inputs: [Input.new(type: String)],
output: Google::Protobuf::StringValue,
func: method(:converter)
)
end
def converter(s)
Google::Protobuf::StringValue.new(value: s.to_s)
end
end
class StringFromProto < Mapper
def initialize
super(
inputs: [Input.new(type: Google::Protobuf::StringValue)],
output: String,
func: method(:converter)
)
end
def converter(proto)
proto.value
end
end
end
end
end