class InfluxDB::PointValue

Convert data point to string using Line protocol

def dump

def dump
  dump =  @series.dup
  dump << ",#{@tags}" if @tags
  dump << " #{@values}"
  dump << " #{@timestamp}" if @timestamp
  dump
end

def escape(str, type)

def escape(str, type)
  # rubocop:disable Layout/AlignParameters
  str = str.encode "UTF-8".freeze, "UTF-8".freeze,
    invalid: :replace,
    undef: :replace,
    replace: "".freeze
  # rubocop:enable Layout/AlignParameters
  ESCAPES[type].each do |ch|
    str = str.gsub(ch) { "\\#{ch}" }
  end
  str
end

def escape_tags(tags)

def escape_tags(tags)
  return if tags.nil?
  tags = tags.map do |k, v|
    key = escape(k.to_s, :tag_key)
    val = escape(v.to_s, :tag_value)
    "#{key}=#{val}" unless key == "".freeze || val == "".freeze
  end.compact
  tags.join(",") unless tags.empty?
end

def escape_value(value)

def escape_value(value)
  if value.is_a?(String)
    '"'.freeze + escape(value, :field_value) + '"'.freeze
  elsif value.is_a?(Integer)
    "#{value}i"
  else
    value.to_s
  end
end

def escape_values(values)

def escape_values(values)
  return if values.nil?
  values.map do |k, v|
    key = escape(k.to_s, :field_key)
    val = escape_value(v)
    "#{key}=#{val}"
  end.join(",".freeze)
end

def initialize(data)

def initialize(data)
  @series    = escape data[:series], :measurement
  @values    = escape_values data[:values]
  @tags      = escape_tags data[:tags]
  @timestamp = data[:timestamp]
end