Sha256: dc9e4f2ad8586c3aca060c8e0971944c6bf98fd51cb26cdc4edf31acedcad50e

Contents?: true

Size: 1.54 KB

Versions: 2

Compression:

Stored size: 1.54 KB

Contents

require "peto/mixin/peto_class"

<%- name = @target[:name].camelize -%>
<%- args = @target[:args] -%>
module Peto
  class <%= name %>
    include PetoClass

    def self.create(hash_args)
      instance = new
      <%- args.each do |arg| -%>
        <%- if rb_primitive_types.include?(arg[:type].constantize) -%>
      instance.<%=arg[:name]%> = hash_args["<%= arg[:name]%>"]
      <%- elsif arg[:array_type] -%>
      instance.<%=arg[:name]%> = hash_args["<%= arg[:name]%>"].map {|arg| <%=arg[:array_type]%>.create(arg) }
        <%- else -%>
      instance.<%=arg[:name]%> = <%=arg[:type]%>.create(hash_args["<%= arg[:name]%>"])
        <%- end -%>
      <%- end -%>
      return instance
    end

    def initialize(args={})
      <%- args.each do |arg| -%>
        <%- if arg[:array_type] -%>
      @<%= arg[:name] %> = [] # for <%= arg[:array_type] %>
        <%- else -%>
      @<%= arg[:name] %> = nil
        <%- end -%>
      <%- end -%>

      set_args(args)
      raise_errors unless valid?
    end

    <%- args.each do |arg| -%>
    attr_reader :<%= arg[:name] %>
    <%- end -%>

    <%- args.each do |arg| -%>
    def <%= arg[:name] %>=(value)
      @<%=arg[:name]%> = value
      raise_errors unless valid?
    end
    <%- end -%>

    def members
      [<%= args.map{|arg| ":#{arg[:name]}"}.join(",") %>]
    end

    def types
      {<%= args.map{|arg| ":#{arg[:name]} => #{arg[:type]}"}.join(",") %>}
    end

    def arrays
      {<%= args.select{|arg|arg[:array_type]}.map{|arg| ":#{arg[:name]} => #{arg[:array_type]}"}.join(",") %>}
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
peto-0.2.7 lib/templates/rb_classes.erb
peto-0.2.6 lib/templates/rb_classes.erb