rpcoder 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/lib/rpcoder/param.rb +8 -0
- data/lib/rpcoder.rb +14 -4
- data/lib/templates/API.erb +1 -1
- data/lib/templates/APIDummy.erb +63 -0
- data/lib/templates/APIInterface.erb +24 -0
- data/lib/templates/Type.erb +2 -2
- data/rpcoder.gemspec +6 -2
- data/spec/fixtures/foo/bar/API.as +1 -1
- data/spec/fixtures/foo/bar/APIDummy.as +70 -0
- data/spec/fixtures/foo/bar/APIInterface.as +28 -0
- data/spec/rpcoder_spec.rb +4 -0
- metadata +7 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/lib/rpcoder/param.rb
CHANGED
data/lib/rpcoder.rb
CHANGED
@@ -50,19 +50,29 @@ module RPCoder
|
|
50
50
|
class_dir = dir_to_export_classes(dir)
|
51
51
|
FileUtils.mkdir_p(class_dir)
|
52
52
|
|
53
|
-
|
53
|
+
[
|
54
|
+
{:path => File.join(class_dir, api_class_name.split('.').last + "Interface.as"), :content => render_functions_interface},
|
55
|
+
{:path => File.join(class_dir, api_class_name.split('.').last + ".as"), :content => render_functions},
|
56
|
+
{:path => File.join(class_dir, api_class_name.split('.').last + "Dummy.as"), :content => render_functions_dummy},
|
57
|
+
].each do |hash|
|
58
|
+
puts "API: #{hash[:path]}"
|
59
|
+
File.open(hash[:path], "w") { |file| file << hash[:content] }
|
60
|
+
end
|
54
61
|
types.each { |type| export_type(type, File.join(class_dir, "#{type.name}.as")) }
|
55
62
|
end
|
56
63
|
|
57
|
-
def
|
58
|
-
|
59
|
-
File.open(path, "w") { |file| file << render_functions }
|
64
|
+
def render_functions_interface
|
65
|
+
render_erb('APIInterface.erb', binding)
|
60
66
|
end
|
61
67
|
|
62
68
|
def render_functions
|
63
69
|
render_erb('API.erb', binding)
|
64
70
|
end
|
65
71
|
|
72
|
+
def render_functions_dummy
|
73
|
+
render_erb('APIDummy.erb', binding)
|
74
|
+
end
|
75
|
+
|
66
76
|
def export_type(type, path)
|
67
77
|
puts "Type: #{path}"
|
68
78
|
File.open(path, "w") { |file| file << render_type(type) }
|
data/lib/templates/API.erb
CHANGED
@@ -9,7 +9,7 @@ package <%= name_space %>
|
|
9
9
|
import mx.rpc.http.HTTPService;
|
10
10
|
import com.adobe.serialization.json.JSON;
|
11
11
|
|
12
|
-
public class <%= api_class_name %>
|
12
|
+
public class <%= api_class_name %> implements <%= api_class_name %>Interface
|
13
13
|
{
|
14
14
|
public static const CONTINUE :int = 100;
|
15
15
|
public static const SWITCHING_PROTOCOLS :int = 101;
|
@@ -0,0 +1,63 @@
|
|
1
|
+
/* generated by rpcoder */
|
2
|
+
|
3
|
+
package <%= name_space %>
|
4
|
+
{
|
5
|
+
import mx.rpc.events.FaultEvent;
|
6
|
+
|
7
|
+
public class <%= api_class_name %>Dummy implements <%= api_class_name %>Interface
|
8
|
+
{
|
9
|
+
var _errors:Array = new Array();
|
10
|
+
var _dummy_success:Array = new Array();
|
11
|
+
|
12
|
+
public function setDummySuccess(function_name:String, success:Array):void
|
13
|
+
{
|
14
|
+
_dummy_success[function_name] = success;
|
15
|
+
}
|
16
|
+
|
17
|
+
private function getDummySuccess(function_name:String):Array
|
18
|
+
{
|
19
|
+
return _dummy_success[function_name];
|
20
|
+
}
|
21
|
+
|
22
|
+
public function setError(function_name:String, is_error:Boolean):void
|
23
|
+
{
|
24
|
+
_errors[function_name] = is_error;
|
25
|
+
}
|
26
|
+
|
27
|
+
private function isError(function_name:String):Boolean
|
28
|
+
{
|
29
|
+
return _errors[function_name];
|
30
|
+
}
|
31
|
+
|
32
|
+
<%- functions.each do |func| -%>
|
33
|
+
/**
|
34
|
+
* <%= func.description %>
|
35
|
+
*
|
36
|
+
<%- func.params.each do |param| -%>
|
37
|
+
* @<%= param.name %>:<%= param.type %> <%= param.options[:expect] %> <%= param.options[:description] %>
|
38
|
+
<%- end -%>
|
39
|
+
* @success:Function
|
40
|
+
* @error:Function
|
41
|
+
*/
|
42
|
+
<%-
|
43
|
+
params = func.params.map{|i| [i.name, i.type].join(':') } + ['success:Function', 'error:Function']
|
44
|
+
-%>
|
45
|
+
public function <%= func.name %>(<%= params.join(', ') %>):void
|
46
|
+
{
|
47
|
+
requestDummy('<%= func.name %>', success, error);
|
48
|
+
}
|
49
|
+
|
50
|
+
<%- end -%>
|
51
|
+
public function requestDummy(function_name:String, success:Function, error:Function):void
|
52
|
+
{
|
53
|
+
if ( isError(function_name) )
|
54
|
+
{
|
55
|
+
error(new FaultEvent("dummy fault"));
|
56
|
+
}
|
57
|
+
else
|
58
|
+
{
|
59
|
+
success.apply(this, getDummySuccess(function_name));
|
60
|
+
}
|
61
|
+
}
|
62
|
+
}
|
63
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
/* generated by rpcoder */
|
2
|
+
|
3
|
+
package <%= name_space %>
|
4
|
+
{
|
5
|
+
public interface <%= api_class_name %>Interface
|
6
|
+
{
|
7
|
+
<%- functions.each do |func| -%>
|
8
|
+
/**
|
9
|
+
* <%= func.description %>
|
10
|
+
*
|
11
|
+
<%- func.params.each do |param| -%>
|
12
|
+
* @<%= param.name %>:<%= param.type %> <%= param.options[:expect] %> <%= param.options[:description] %>
|
13
|
+
<%- end -%>
|
14
|
+
* @success:Function
|
15
|
+
* @error:Function
|
16
|
+
*/
|
17
|
+
<%-
|
18
|
+
params = func.params.map{|i| [i.name, i.type].join(':') } + ['success:Function', 'error:Function']
|
19
|
+
-%>
|
20
|
+
function <%= func.name %>(<%= params.join(', ') %>):void;
|
21
|
+
|
22
|
+
<%- end -%>
|
23
|
+
}
|
24
|
+
}
|
data/lib/templates/Type.erb
CHANGED
@@ -5,11 +5,11 @@ package <%= name_space %>
|
|
5
5
|
public class <%= type.name %>
|
6
6
|
{
|
7
7
|
<%- type.fields.each do |field| -%>
|
8
|
-
private var _<%= field.name %>:<%= field.
|
8
|
+
private var _<%= field.name %>:<%= field.array_or_type %>;
|
9
9
|
<%- end -%>
|
10
10
|
|
11
11
|
<%- type.fields.each do |field| -%>
|
12
|
-
public function get <%= field.name %>():<%= field.
|
12
|
+
public function get <%= field.name %>():<%= field.array_or_type %>
|
13
13
|
{
|
14
14
|
return _<%= field.name %>;
|
15
15
|
}
|
data/rpcoder.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rpcoder}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["jugyo", "Toshiyuki Hirooka"]
|
12
|
-
s.date = %q{2011-05-
|
12
|
+
s.date = %q{2011-05-11}
|
13
13
|
s.description = %q{Simple JSON HTTP RPC generator for as3}
|
14
14
|
s.email = %q{toshi.hirooka@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -28,9 +28,13 @@ Gem::Specification.new do |s|
|
|
28
28
|
"lib/rpcoder/param.rb",
|
29
29
|
"lib/rpcoder/type.rb",
|
30
30
|
"lib/templates/API.erb",
|
31
|
+
"lib/templates/APIDummy.erb",
|
32
|
+
"lib/templates/APIInterface.erb",
|
31
33
|
"lib/templates/Type.erb",
|
32
34
|
"rpcoder.gemspec",
|
33
35
|
"spec/fixtures/foo/bar/API.as",
|
36
|
+
"spec/fixtures/foo/bar/APIDummy.as",
|
37
|
+
"spec/fixtures/foo/bar/APIInterface.as",
|
34
38
|
"spec/fixtures/foo/bar/Mail.as",
|
35
39
|
"spec/rpcoder/function_spec.rb",
|
36
40
|
"spec/rpcoder/param_spec.rb",
|
@@ -9,7 +9,7 @@ package foo.bar
|
|
9
9
|
import mx.rpc.http.HTTPService;
|
10
10
|
import com.adobe.serialization.json.JSON;
|
11
11
|
|
12
|
-
public class API
|
12
|
+
public class API implements APIInterface
|
13
13
|
{
|
14
14
|
public static const CONTINUE :int = 100;
|
15
15
|
public static const SWITCHING_PROTOCOLS :int = 101;
|
@@ -0,0 +1,70 @@
|
|
1
|
+
/* generated by rpcoder */
|
2
|
+
|
3
|
+
package foo.bar
|
4
|
+
{
|
5
|
+
import mx.rpc.events.FaultEvent;
|
6
|
+
|
7
|
+
public class APIDummy implements APIInterface
|
8
|
+
{
|
9
|
+
var _errors:Array = new Array();
|
10
|
+
var _dummy_success:Array = new Array();
|
11
|
+
|
12
|
+
public function setDummySuccess(function_name:String, success:Array):void
|
13
|
+
{
|
14
|
+
_dummy_success[function_name] = success;
|
15
|
+
}
|
16
|
+
|
17
|
+
private function getDummySuccess(function_name:String):Array
|
18
|
+
{
|
19
|
+
return _dummy_success[function_name];
|
20
|
+
}
|
21
|
+
|
22
|
+
public function setError(function_name:String, is_error:Boolean):void
|
23
|
+
{
|
24
|
+
_errors[function_name] = is_error;
|
25
|
+
}
|
26
|
+
|
27
|
+
private function isError(function_name:String):Boolean
|
28
|
+
{
|
29
|
+
return _errors[function_name];
|
30
|
+
}
|
31
|
+
|
32
|
+
/**
|
33
|
+
* get mail
|
34
|
+
*
|
35
|
+
* @id:int
|
36
|
+
* @foo:String ["A", "B"]
|
37
|
+
* @bar:Array
|
38
|
+
* @baz:Boolean 日本の文字
|
39
|
+
* @success:Function
|
40
|
+
* @error:Function
|
41
|
+
*/
|
42
|
+
public function getMail(id:int, foo:String, bar:Array, baz:Boolean, success:Function, error:Function):void
|
43
|
+
{
|
44
|
+
requestDummy('getMail', success, error);
|
45
|
+
}
|
46
|
+
|
47
|
+
/**
|
48
|
+
* get mails
|
49
|
+
*
|
50
|
+
* @success:Function
|
51
|
+
* @error:Function
|
52
|
+
*/
|
53
|
+
public function getMails(success:Function, error:Function):void
|
54
|
+
{
|
55
|
+
requestDummy('getMails', success, error);
|
56
|
+
}
|
57
|
+
|
58
|
+
public function requestDummy(function_name:String, success:Function, error:Function):void
|
59
|
+
{
|
60
|
+
if ( isError(function_name) )
|
61
|
+
{
|
62
|
+
error(new FaultEvent("dummy fault"));
|
63
|
+
}
|
64
|
+
else
|
65
|
+
{
|
66
|
+
success.apply(this, getDummySuccess(function_name));
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
/* generated by rpcoder */
|
2
|
+
|
3
|
+
package foo.bar
|
4
|
+
{
|
5
|
+
public interface APIInterface
|
6
|
+
{
|
7
|
+
/**
|
8
|
+
* get mail
|
9
|
+
*
|
10
|
+
* @id:int
|
11
|
+
* @foo:String ["A", "B"]
|
12
|
+
* @bar:Array
|
13
|
+
* @baz:Boolean 日本の文字
|
14
|
+
* @success:Function
|
15
|
+
* @error:Function
|
16
|
+
*/
|
17
|
+
function getMail(id:int, foo:String, bar:Array, baz:Boolean, success:Function, error:Function):void;
|
18
|
+
|
19
|
+
/**
|
20
|
+
* get mails
|
21
|
+
*
|
22
|
+
* @success:Function
|
23
|
+
* @error:Function
|
24
|
+
*/
|
25
|
+
function getMails(success:Function, error:Function):void;
|
26
|
+
|
27
|
+
}
|
28
|
+
}
|
data/spec/rpcoder_spec.rb
CHANGED
@@ -38,8 +38,12 @@ describe "RPCoder" do
|
|
38
38
|
it { RPCoder.types.size.should == 1 }
|
39
39
|
|
40
40
|
it 'should render_functions' do
|
41
|
+
expected = File.read(File.expand_path('fixtures/foo/bar/APIInterface.as', File.dirname(__FILE__)))
|
42
|
+
RPCoder.render_functions_interface.should == expected
|
41
43
|
expected = File.read(File.expand_path('fixtures/foo/bar/API.as', File.dirname(__FILE__)))
|
42
44
|
RPCoder.render_functions.should == expected
|
45
|
+
expected = File.read(File.expand_path('fixtures/foo/bar/APIDummy.as', File.dirname(__FILE__)))
|
46
|
+
RPCoder.render_functions_dummy.should == expected
|
43
47
|
end
|
44
48
|
|
45
49
|
it 'should render_type' do
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: rpcoder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- jugyo
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2011-05-
|
14
|
+
date: 2011-05-11 00:00:00 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rspec
|
@@ -100,9 +100,13 @@ files:
|
|
100
100
|
- lib/rpcoder/param.rb
|
101
101
|
- lib/rpcoder/type.rb
|
102
102
|
- lib/templates/API.erb
|
103
|
+
- lib/templates/APIDummy.erb
|
104
|
+
- lib/templates/APIInterface.erb
|
103
105
|
- lib/templates/Type.erb
|
104
106
|
- rpcoder.gemspec
|
105
107
|
- spec/fixtures/foo/bar/API.as
|
108
|
+
- spec/fixtures/foo/bar/APIDummy.as
|
109
|
+
- spec/fixtures/foo/bar/APIInterface.as
|
106
110
|
- spec/fixtures/foo/bar/Mail.as
|
107
111
|
- spec/rpcoder/function_spec.rb
|
108
112
|
- spec/rpcoder/param_spec.rb
|
@@ -121,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
125
|
requirements:
|
122
126
|
- - ">="
|
123
127
|
- !ruby/object:Gem::Version
|
124
|
-
hash:
|
128
|
+
hash: -4580541404228971953
|
125
129
|
segments:
|
126
130
|
- 0
|
127
131
|
version: "0"
|