Sha256: f9864da74f110f9b2f9706fb293eb42b7bf3da17a72dd1effd5f7b6064c21cfa
Contents?: true
Size: 1.6 KB
Versions: 4
Compression:
Stored size: 1.6 KB
Contents
require "peto/mixin/peto_class" require "peto/mixin/peto_errorable" module Peto <%- each_types do |name, args| -%> class <%= name %> include PetoClass def initialize(args={}) <%- args.each do |arg| -%> <%- if arg[:array_type] -%> @<%= arg[:name] %> = [] # for <%= arg[:array_type] %> <%- else -%> @<%= arg[:name] %> = nil <%- end -%> <%- end -%> set_by_hash(args) raise_errors unless valid? end <%- args.each do |arg| -%> attr_reader :<%= arg[:name] %> <%- 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 -%> end module Peto class <%= class_name %> extend PetoErrorable <%- each_procedures do |name, args| -%> def self.<%= name %>(<%= args.map{|arg| arg[:name]}.join(",") %>) <%- args.each do |arg| -%> invalid_type("<%= arg[:name] %>", <%= arg[:type] %>, <%= arg[:name] %>) unless <%= arg[:name] %>.class == <%= arg[:type] %> <%- end -%> raise_errors unless errors.empty? return { :procedure => "<%=name%>", :args => { <%- args.each do |arg| -%> :<%=arg[:name]%> => hashize(<%=arg[:name]%>), <%- end -%> } } end <%- end -%> def self.hashize(var) return var if [Fixnum, String].include?(var.class) var.to_hash end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
peto-0.1.3 | lib/templates/rb_procedures.erb |
peto-0.1.2 | lib/templates/rb_procedures.erb |
peto-0.1.1 | lib/templates/rb_procedures.erb |
peto-0.1.0 | lib/templates/rb_procedures.erb |