Sha256: f7922370a20625ea2bf88abfc4276a72cd3f23cd915184f37870cbf19392cf85

Contents?: true

Size: 1.52 KB

Versions: 4

Compression:

Stored size: 1.52 KB

Contents

<%-
model = type.map[:model].type
gen_type = type.map[:gen_type].type
mappings = type.memo['mappings'] || []
base_conv_func = type.memo['base_conv_func'] || raise("type #{type.name} has no memo named 'base_conv_func'")
-%>


func <%= base_conv_func %>(m *<%= model.qualified_name %>) *<%= gen_type.qualified_name(dependencies) %> {
  if m == nil {
    return nil
  }
  r := &<%= gen_type.qualified_name(dependencies) %>{}

<%-
mappings.each do |mapping|
  import GoonModelGen::Golang::Packages.wrap(packages).detect_by(mapping.package_name) if mapping.package_name.present?

  rfield = gen_type.fields.detect{|f| f.name == mapping.name} || raise("Field not found #{mapping.name} of #{gen_type.package.path}.#{gen_type.name}")
  arg_fields = mapping.args.map do |arg|
    model.fields.detect{|f| f.name == arg} ||
      raise("Field not found #{arg.inspect} of #{model.package.path}.#{model.name}")
  end
-%>
  // <%= rfield.short_desc(dependencies) %> <== <%= arg_fields.map{|f| f.short_desc(dependencies) }.join(', ') %>
<%-
  mfield = arg_fields.first
  arg = "m.#{mfield.name}"
  if mfield.struct? || mfield.slice?
    arg = "&#{arg}"
    raise "Struct field or Slice field requires func for mapping" if mapping.func.blank?
  end
  right_side_main = mapping.func ? "#{mapping.func}(#{arg})" : arg
  right_side = (rfield.slice? ? '*' : '') + right_side_main
-%>
<%- if rfield.value_ptr? -%>
  {
    v := <%= right_side_main %>
    r.<%= rfield.name %> = &v
  }

<%- else -%>
  r.<%= rfield.name %> = <%= right_side %>

<%- end -%>
<%-
end
-%>

  return r
}

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
goon_model_gen-0.4.1 lib/goon_model_gen/templates/converter/result/03_ToResult.go.erb
goon_model_gen-0.4.0 lib/goon_model_gen/templates/converter/result/03_ToResult.go.erb
goon_model_gen-0.3.1 lib/goon_model_gen/templates/converter/result/03_ToResult.go.erb
goon_model_gen-0.3.0 lib/goon_model_gen/templates/converter/result/03_ToResult.go.erb