Sha256: fb9aba793ecd2e5bd6c166e60965de2ebd9e40b966eef3badcf0ec121f260100

Contents?: true

Size: 1.25 KB

Versions: 2

Compression:

Stored size: 1.25 KB

Contents

require "peto/mixin/peto_errorable"

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

module Peto
  class <%= class_name %>
    extend PetoErrorable

    <%- each_procedures do |name, args| -%>
    # <%=name%> methods

    def self.<%= name %>(<%= comma_args(args) %>)
      <%=name%>_valid?(<%= comma_args(args) %>)
      return {
        :procedure => "<%=name%>",
        :args => {
          <%- args.each do |arg| -%>
          :<%=arg[:name]%> => hashize(<%=arg[:name]%>),
          <%- end -%>
        }
      }
    end

    def self.<%=name%>_valid?(<%= comma_args(args) %>)
      <%- args.each do |arg| -%>
      invalid_type("<%= arg[:name] %>", <%= arg[:type] %>, <%= arg[:name] %>) unless <%= arg[:name] %>.class == <%= arg[:type] %>
      <%- end -%>
      raise_errors unless errors.empty?
    end

    def self.<%=name%>_hash_to_args(hash_args)
      args = []
      <%- args.each do |arg| -%>
      args.push(<%=arg[:type]%>.create(hash_args["<%=arg[:name]%>"]))
      <%- end -%>
      return args
    end


    <%- end -%>

    def self.hashize(var)
      return var if primitive_type?(var.class)
      var.to_hash
    end

    def self.primitive_type?(type)
      [<%=rb_primitive_types.join(",")%>].include?(type)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

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