peto 0.2.4 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.4
1
+ 0.2.5
@@ -17,7 +17,7 @@ module RailsApp
17
17
 
18
18
  # generated files by peto
19
19
  config.autoload_paths += %W(#{config.root}/contracts/generated)
20
- #config.autoload_paths += %W(#{config.root}/../../lib)
20
+ config.autoload_paths += %W(#{config.root}/../../lib)
21
21
 
22
22
  # Only load the plugins named here, in the order given (default is alphabetical).
23
23
  # :all can be used as a placeholder for all plugins not explicitly named.
@@ -3,3 +3,7 @@ require File.expand_path('../application', __FILE__)
3
3
 
4
4
  # Initialize the rails application
5
5
  RailsApp::Application.initialize!
6
+
7
+ #ActionController::Base.param_parsers[Mime::Type::lookup("application/json")] = Proc.new {
8
+ # ActiveSupport::JSON.decode(data)
9
+ #}
@@ -3,15 +3,27 @@ require "peto/mixin/peto_class"
3
3
  module Peto
4
4
  class Animal
5
5
  include PetoClass
6
+
7
+ def self.create(hash_args)
8
+ instance = new
9
+ instance.name = hash_args["name"]
10
+ return instance
11
+ end
12
+
6
13
  def initialize(args={})
7
14
  @name = nil
8
15
 
9
- set_by_hash(args)
16
+ set_args(args)
10
17
  raise_errors unless valid?
11
18
  end
12
19
 
13
20
  attr_reader :name
14
21
 
22
+ def name=(value)
23
+ @name = value
24
+ raise_errors unless valid?
25
+ end
26
+
15
27
  def members
16
28
  [:name]
17
29
  end
@@ -1,8 +1,12 @@
1
1
  require "peto/mixin/peto_errorable"
2
2
 
3
+
3
4
  module Peto
4
5
  class Foo
5
6
  extend PetoErrorable
7
+
8
+ # set_user methods
9
+
6
10
  def self.set_user(user)
7
11
  set_user_valid?(user)
8
12
  return {
@@ -18,6 +22,15 @@ module Peto
18
22
  raise_errors unless errors.empty?
19
23
  end
20
24
 
25
+ def self.set_user_hash_to_args(hash_args)
26
+ args = []
27
+ args.push(User.create(hash_args["user"]))
28
+ return args
29
+ end
30
+
31
+
32
+ # set_user_response methods
33
+
21
34
  def self.set_user_response(a,b)
22
35
  set_user_response_valid?(a,b)
23
36
  return {
@@ -35,6 +48,16 @@ module Peto
35
48
  raise_errors unless errors.empty?
36
49
  end
37
50
 
51
+ def self.set_user_response_hash_to_args(hash_args)
52
+ args = []
53
+ args.push(Fixnum.create(hash_args["a"]))
54
+ args.push(String.create(hash_args["b"]))
55
+ return args
56
+ end
57
+
58
+
59
+ # set_user_error_invalid_user methods
60
+
38
61
  def self.set_user_error_invalid_user(message)
39
62
  set_user_error_invalid_user_valid?(message)
40
63
  return {
@@ -50,10 +73,21 @@ module Peto
50
73
  raise_errors unless errors.empty?
51
74
  end
52
75
 
76
+ def self.set_user_error_invalid_user_hash_to_args(hash_args)
77
+ args = []
78
+ args.push(String.create(hash_args["message"]))
79
+ return args
80
+ end
81
+
82
+
53
83
 
54
84
  def self.hashize(var)
55
- return var if [Fixnum, String].include?(var.class)
85
+ return var if atomic_type?(var.class)
56
86
  var.to_hash
57
87
  end
88
+
89
+ def self.atomic_type?(type)
90
+ [Fixnum,String].include?(type)
91
+ end
58
92
  end
59
93
  end
@@ -3,12 +3,21 @@ require "peto/mixin/peto_class"
3
3
  module Peto
4
4
  class User
5
5
  include PetoClass
6
+
7
+ def self.create(hash_args)
8
+ instance = new
9
+ instance.name = hash_args["name"]
10
+ instance.age = hash_args["age"]
11
+ instance.animals = hash_args["animals"].map {|arg| Animal.create(arg) }
12
+ return instance
13
+ end
14
+
6
15
  def initialize(args={})
7
16
  @name = nil
8
17
  @age = nil
9
18
  @animals = [] # for Animal
10
19
 
11
- set_by_hash(args)
20
+ set_args(args)
12
21
  raise_errors unless valid?
13
22
  end
14
23
 
@@ -16,6 +25,19 @@ module Peto
16
25
  attr_reader :age
17
26
  attr_reader :animals
18
27
 
28
+ def name=(value)
29
+ @name = value
30
+ raise_errors unless valid?
31
+ end
32
+ def age=(value)
33
+ @age = value
34
+ raise_errors unless valid?
35
+ end
36
+ def animals=(value)
37
+ @animals = value
38
+ raise_errors unless valid?
39
+ end
40
+
19
41
  def members
20
42
  [:name,:age,:animals]
21
43
  end
@@ -18,6 +18,10 @@ class String
18
18
  end
19
19
  end
20
20
 
21
+ def atomic_types
22
+ [Fixnum, String]
23
+ end
24
+
21
25
  module Peto
22
26
  class Generator
23
27
  def initialize(contract)
@@ -3,8 +3,8 @@ require "peto/mixin/peto_errorable"
3
3
  module PetoClass
4
4
  include PetoErrorable
5
5
 
6
- def set_by_hash(hash)
7
- hash.each do |key, value|
6
+ def set_args(args)
7
+ args.each do |key, value|
8
8
  var = instance_variable_get("@#{key}")
9
9
  invalid_type(key, types[key], value) unless value.class == types[key] || value.nil?
10
10
  raise_errors unless errors.empty?
@@ -50,9 +50,14 @@ module Peto
50
50
  peto_class.send(:"#{procedure}_valid?", args)
51
51
  end
52
52
 
53
- def call_subaction(procedure, args)
54
- valid_args?(procedure, args)
55
- send(procedure, args)
53
+ def hash_to_args(procedure, hash_args)
54
+ peto_class.send(:"#{procedure}_hash_to_args", hash_args)
55
+ end
56
+
57
+ def call_subaction(procedure, hash_args)
58
+ args = hash_to_args(procedure, hash_args)
59
+ valid_args?(procedure, *args) # raise error
60
+ send(procedure, *args)
56
61
  end
57
62
  end
58
63
  end
@@ -5,6 +5,21 @@ require "peto/mixin/peto_class"
5
5
  module Peto
6
6
  class <%= name %>
7
7
  include PetoClass
8
+
9
+ def self.create(hash_args)
10
+ instance = new
11
+ <%- args.each do |arg| -%>
12
+ <%- if atomic_types.include?(arg[:type].constantize) -%>
13
+ instance.<%=arg[:name]%> = hash_args["<%= arg[:name]%>"]
14
+ <%- elsif arg[:array_type] -%>
15
+ instance.<%=arg[:name]%> = hash_args["<%= arg[:name]%>"].map {|arg| <%=arg[:array_type]%>.create(arg) }
16
+ <%- else -%>
17
+ instance.<%=arg[:name]%> = <%=arg[:type]%>.create(hash_args["<%= arg[:name]%>"])
18
+ <%- end -%>
19
+ <%- end -%>
20
+ return instance
21
+ end
22
+
8
23
  def initialize(args={})
9
24
  <%- args.each do |arg| -%>
10
25
  <%- if arg[:array_type] -%>
@@ -14,7 +29,7 @@ module Peto
14
29
  <%- end -%>
15
30
  <%- end -%>
16
31
 
17
- set_by_hash(args)
32
+ set_args(args)
18
33
  raise_errors unless valid?
19
34
  end
20
35
 
@@ -22,6 +37,13 @@ module Peto
22
37
  attr_reader :<%= arg[:name] %>
23
38
  <%- end -%>
24
39
 
40
+ <%- args.each do |arg| -%>
41
+ def <%= arg[:name] %>=(value)
42
+ @<%=arg[:name]%> = value
43
+ raise_errors unless valid?
44
+ end
45
+ <%- end -%>
46
+
25
47
  def members
26
48
  [<%= args.map{|arg| ":#{arg[:name]}"}.join(",") %>]
27
49
  end
@@ -1,11 +1,20 @@
1
1
  require "peto/mixin/peto_errorable"
2
2
 
3
+ <%-
4
+ def comma_args(args)
5
+ args.map{|arg| arg[:name]}.join(",")
6
+ end
7
+ -%>
8
+
3
9
  module Peto
4
10
  class <%= class_name %>
5
11
  extend PetoErrorable
12
+
6
13
  <%- each_procedures do |name, args| -%>
7
- def self.<%= name %>(<%= args.map{|arg| arg[:name]}.join(",") %>)
8
- <%=name%>_valid?(<%= args.map{|arg| arg[:name]}.join(",") %>)
14
+ # <%=name%> methods
15
+
16
+ def self.<%= name %>(<%= comma_args(args) %>)
17
+ <%=name%>_valid?(<%= comma_args(args) %>)
9
18
  return {
10
19
  :procedure => "<%=name%>",
11
20
  :args => {
@@ -16,18 +25,31 @@ module Peto
16
25
  }
17
26
  end
18
27
 
19
- def self.<%=name%>_valid?(<%= args.map{|arg| arg[:name]}.join(",") %>)
28
+ def self.<%=name%>_valid?(<%= comma_args(args) %>)
20
29
  <%- args.each do |arg| -%>
21
30
  invalid_type("<%= arg[:name] %>", <%= arg[:type] %>, <%= arg[:name] %>) unless <%= arg[:name] %>.class == <%= arg[:type] %>
22
31
  <%- end -%>
23
32
  raise_errors unless errors.empty?
24
33
  end
25
34
 
35
+ def self.<%=name%>_hash_to_args(hash_args)
36
+ args = []
37
+ <%- args.each do |arg| -%>
38
+ args.push(<%=arg[:type]%>.create(hash_args["<%=arg[:name]%>"]))
39
+ <%- end -%>
40
+ return args
41
+ end
42
+
43
+
26
44
  <%- end -%>
27
45
 
28
46
  def self.hashize(var)
29
- return var if [Fixnum, String].include?(var.class)
47
+ return var if atomic_type?(var.class)
30
48
  var.to_hash
31
49
  end
50
+
51
+ def self.atomic_type?(type)
52
+ [<%=atomic_types.join(",")%>].include?(type)
53
+ end
32
54
  end
33
55
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 2
8
- - 4
9
- version: 0.2.4
8
+ - 5
9
+ version: 0.2.5
10
10
  platform: ruby
11
11
  authors:
12
12
  - Toshiyuki Hirooka