mirah 0.0.4-java

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.
Files changed (141) hide show
  1. data/History.txt +15 -0
  2. data/README.txt +51 -0
  3. data/Rakefile +86 -0
  4. data/bin/duby +10 -0
  5. data/bin/dubyc +10 -0
  6. data/bin/dubyp +10 -0
  7. data/bin/jrubyp +36 -0
  8. data/bin/mirah +9 -0
  9. data/bin/mirah.cmd +1 -0
  10. data/bin/mirahc +9 -0
  11. data/bin/mirahc.cmd +1 -0
  12. data/bin/mirahp +9 -0
  13. data/bin/mirahp.cmd +1 -0
  14. data/examples/ant/example-build.xml +7 -0
  15. data/examples/appengine/Rakefile +19 -0
  16. data/examples/appengine/Readme +29 -0
  17. data/examples/appengine/src/org/mirah/MirahApp.mirah +57 -0
  18. data/examples/appengine/src/org/mirah/list.dhtml +15 -0
  19. data/examples/appengine/war/WEB-INF/lib/dubydatastore.jar +0 -0
  20. data/examples/bintrees.mirah +66 -0
  21. data/examples/construction.mirah +8 -0
  22. data/examples/dynamic.mirah +17 -0
  23. data/examples/edb.mirah +3 -0
  24. data/examples/fib.mirah +16 -0
  25. data/examples/fields.mirah +22 -0
  26. data/examples/fractal.mirah +55 -0
  27. data/examples/java_thing.mirah +13 -0
  28. data/examples/plugins/appengine/Rakefile +55 -0
  29. data/examples/plugins/appengine/lib/com/google/appengine/ext/duby/db/datastore.rb +375 -0
  30. data/examples/plugins/appengine/src/com/google/appengine/ext/duby/db/Model.duby +336 -0
  31. data/examples/plugins/appengine/test/com/google/appengine/ext/duby/db/ModelTest.duby +113 -0
  32. data/examples/simple_class.mirah +12 -0
  33. data/examples/sort_closure.mirah +7 -0
  34. data/examples/swing.mirah +20 -0
  35. data/examples/tak.mirah +15 -0
  36. data/examples/test.edb +9 -0
  37. data/examples/wiki/Rakefile +18 -0
  38. data/examples/wiki/src/org/mirah/wiki/MirahWiki.duby +324 -0
  39. data/examples/wiki/src/org/mirah/wiki/edit.eduby.html +42 -0
  40. data/examples/wiki/src/org/mirah/wiki/error.eduby.html +2 -0
  41. data/examples/wiki/src/org/mirah/wiki/layout.eduby.html +69 -0
  42. data/examples/wiki/src/org/mirah/wiki/parser.eduby.html +7 -0
  43. data/examples/wiki/src/org/mirah/wiki/view.eduby.html +15 -0
  44. data/examples/wiki/war/WEB-INF/classes/test/HeredocContext.class +0 -0
  45. data/examples/wiki/war/WEB-INF/classes/test/MirahParser.class +0 -0
  46. data/examples/wiki/war/WEB-INF/lib/appengine-api.jar +0 -0
  47. data/examples/wiki/war/WEB-INF/lib/dubydatastore.jar +0 -0
  48. data/examples/wiki/war/WEB-INF/lib/jmeta-runtime.jar +0 -0
  49. data/examples/wiki/war/WEB-INF/lib/pegdown-stubs.jar +0 -0
  50. data/examples/wiki/war/WEB-INF/pegdown.jar +0 -0
  51. data/examples/wiki/war/app.yaml +21 -0
  52. data/examples/wiki/war/public/favicon.ico +0 -0
  53. data/examples/wiki/war/public/images/appengine_duby.png +0 -0
  54. data/examples/wiki/war/public/images/back.gif +0 -0
  55. data/examples/wiki/war/public/images/dir.gif +0 -0
  56. data/examples/wiki/war/public/images/file.gif +0 -0
  57. data/examples/wiki/war/public/javascripts/prettify.js +61 -0
  58. data/examples/wiki/war/public/robots.txt +0 -0
  59. data/examples/wiki/war/public/stylesheets/main.css +156 -0
  60. data/examples/wiki/war/public/stylesheets/prettify.css +1 -0
  61. data/examples/wiki/war/public/stylesheets/sh_style.css +66 -0
  62. data/examples/wiki/war/public/stylesheets/source.css +21 -0
  63. data/examples/wiki/war/public/wmd/images/bg-fill.png +0 -0
  64. data/examples/wiki/war/public/wmd/images/bg.png +0 -0
  65. data/examples/wiki/war/public/wmd/images/blockquote.png +0 -0
  66. data/examples/wiki/war/public/wmd/images/bold.png +0 -0
  67. data/examples/wiki/war/public/wmd/images/code.png +0 -0
  68. data/examples/wiki/war/public/wmd/images/h1.png +0 -0
  69. data/examples/wiki/war/public/wmd/images/hr.png +0 -0
  70. data/examples/wiki/war/public/wmd/images/img.png +0 -0
  71. data/examples/wiki/war/public/wmd/images/italic.png +0 -0
  72. data/examples/wiki/war/public/wmd/images/link.png +0 -0
  73. data/examples/wiki/war/public/wmd/images/ol.png +0 -0
  74. data/examples/wiki/war/public/wmd/images/redo.png +0 -0
  75. data/examples/wiki/war/public/wmd/images/separator.png +0 -0
  76. data/examples/wiki/war/public/wmd/images/ul.png +0 -0
  77. data/examples/wiki/war/public/wmd/images/undo.png +0 -0
  78. data/examples/wiki/war/public/wmd/images/wmd-on.png +0 -0
  79. data/examples/wiki/war/public/wmd/images/wmd.png +0 -0
  80. data/examples/wiki/war/public/wmd/showdown.js +421 -0
  81. data/examples/wiki/war/public/wmd/wmd-base.js +1799 -0
  82. data/examples/wiki/war/public/wmd/wmd-plus.js +311 -0
  83. data/examples/wiki/war/public/wmd/wmd.js +73 -0
  84. data/javalib/JRubyParser.jar +0 -0
  85. data/javalib/dynalang-invoke-0.1.jar +0 -0
  86. data/javalib/mirah-bootstrap.jar +0 -0
  87. data/javalib/mirah-parser.jar +0 -0
  88. data/lib/duby.rb +2 -0
  89. data/lib/mirah.rb +338 -0
  90. data/lib/mirah/appengine_tasks.rb +146 -0
  91. data/lib/mirah/ast.rb +615 -0
  92. data/lib/mirah/ast/call.rb +307 -0
  93. data/lib/mirah/ast/class.rb +311 -0
  94. data/lib/mirah/ast/flow.rb +364 -0
  95. data/lib/mirah/ast/intrinsics.rb +470 -0
  96. data/lib/mirah/ast/literal.rb +154 -0
  97. data/lib/mirah/ast/local.rb +89 -0
  98. data/lib/mirah/ast/method.rb +360 -0
  99. data/lib/mirah/ast/scope.rb +208 -0
  100. data/lib/mirah/ast/structure.rb +226 -0
  101. data/lib/mirah/ast/type.rb +130 -0
  102. data/lib/mirah/compiler.rb +341 -0
  103. data/lib/mirah/env.rb +33 -0
  104. data/lib/mirah/jvm/base.rb +258 -0
  105. data/lib/mirah/jvm/compiler.rb +885 -0
  106. data/lib/mirah/jvm/method_lookup.rb +203 -0
  107. data/lib/mirah/jvm/source_compiler.rb +737 -0
  108. data/lib/mirah/jvm/source_generator/builder.rb +444 -0
  109. data/lib/mirah/jvm/source_generator/loops.rb +110 -0
  110. data/lib/mirah/jvm/source_generator/precompile.rb +188 -0
  111. data/lib/mirah/jvm/source_generator/typer.rb +11 -0
  112. data/lib/mirah/jvm/typer.rb +151 -0
  113. data/lib/mirah/jvm/types.rb +416 -0
  114. data/lib/mirah/jvm/types/basic_types.rb +33 -0
  115. data/lib/mirah/jvm/types/boolean.rb +17 -0
  116. data/lib/mirah/jvm/types/enumerable.rb +65 -0
  117. data/lib/mirah/jvm/types/extensions.rb +86 -0
  118. data/lib/mirah/jvm/types/factory.rb +186 -0
  119. data/lib/mirah/jvm/types/floats.rb +86 -0
  120. data/lib/mirah/jvm/types/integers.rb +171 -0
  121. data/lib/mirah/jvm/types/intrinsics.rb +376 -0
  122. data/lib/mirah/jvm/types/literals.rb +74 -0
  123. data/lib/mirah/jvm/types/methods.rb +614 -0
  124. data/lib/mirah/jvm/types/number.rb +143 -0
  125. data/lib/mirah/nbcompiler.rb +29 -0
  126. data/lib/mirah/plugin/edb.rb +29 -0
  127. data/lib/mirah/plugin/gwt.rb +173 -0
  128. data/lib/mirah/plugin/java.rb +55 -0
  129. data/lib/mirah/transform.rb +266 -0
  130. data/lib/mirah/transform2.rb +728 -0
  131. data/lib/mirah/typer.rb +407 -0
  132. data/lib/mirah_task.rb +107 -0
  133. data/test/test_ast.rb +359 -0
  134. data/test/test_compilation.rb +112 -0
  135. data/test/test_env.rb +42 -0
  136. data/test/test_gwt.rb +58 -0
  137. data/test/test_java_typer.rb +183 -0
  138. data/test/test_javac_compiler.rb +63 -0
  139. data/test/test_jvm_compiler.rb +2607 -0
  140. data/test/test_typer.rb +221 -0
  141. metadata +235 -0
@@ -0,0 +1,221 @@
1
+ require 'test/unit'
2
+ require 'mirah'
3
+
4
+ class TestTyper < Test::Unit::TestCase
5
+ include Duby
6
+
7
+ def test_fixnum
8
+ ast = AST.parse("1")
9
+
10
+ assert_equal(AST::TypeReference.new("fixnum"), ast.infer(Typer::Simple.new(:bar)))
11
+ end
12
+
13
+ def test_float
14
+ ast = AST.parse("1.0")
15
+
16
+ assert_equal(AST::TypeReference.new("float"), ast.infer(Typer::Simple.new(:bar)))
17
+ end
18
+
19
+ def test_string
20
+ ast = AST.parse("'foo'")
21
+
22
+ assert_equal(AST::TypeReference.new("string"), ast.infer(Typer::Simple.new(:bar)))
23
+ end
24
+
25
+ def test_boolean
26
+ ast1 = AST.parse("true")
27
+ ast2 = AST.parse("false")
28
+
29
+ assert_equal(AST::TypeReference.new("boolean"), ast1.infer(Typer::Simple.new(:bar)))
30
+ assert_equal(AST::TypeReference.new("boolean"), ast2.infer(Typer::Simple.new(:bar)))
31
+ end
32
+
33
+ def test_body
34
+ ast1 = AST.parse("'foo'; 1.0; 1")
35
+ ast2 = AST.parse("begin; end")
36
+
37
+ assert_equal(AST::TypeReference.new("fixnum"), ast1.infer(Typer::Simple.new(:bar)))
38
+ assert_equal(AST::TypeReference::NullType, ast2.infer(Typer::Simple.new(:bar)))
39
+ end
40
+
41
+ def test_local
42
+ ast1 = AST.parse("a = 1; a")
43
+ typer = Typer::Simple.new :bar
44
+
45
+ ast1.infer(typer)
46
+
47
+ assert_equal(AST::TypeReference.new("fixnum"), typer.local_type(ast1.static_scope, 'a'))
48
+ assert_equal(AST::TypeReference.new("fixnum"), ast1.body.children[0].inferred_type)
49
+ assert_equal(AST::TypeReference.new("fixnum"), ast1.body.children[1].inferred_type)
50
+
51
+ ast2 = AST.parse("b = a = 1")
52
+ ast2.infer(typer)
53
+
54
+ assert_equal(AST::TypeReference.new("fixnum"), typer.local_type(ast2.static_scope, 'a'))
55
+ assert_equal(AST::TypeReference.new("fixnum"), ast2.body.children[0].inferred_type)
56
+ end
57
+
58
+ def test_signature
59
+ ["def foo", "def self.foo"].each do |def_foo|
60
+ ast1 = AST.parse("#{def_foo}(a:string); end")
61
+ typer = Typer::Simple.new :bar
62
+
63
+ ast1.infer(typer)
64
+
65
+ assert_nothing_raised {typer.resolve(true)}
66
+ assert_nothing_raised {typer.resolve}
67
+
68
+
69
+ if def_foo =~ /self/
70
+ type = typer.self_type.meta
71
+ else
72
+ type = typer.self_type
73
+ end
74
+
75
+ assert_equal(typer.null_type, typer.method_type(type, 'foo', [typer.string_type]))
76
+ assert_equal(typer.string_type, typer.local_type(ast1.body[0].static_scope, 'a'))
77
+ assert_equal(typer.null_type, ast1.body.inferred_type)
78
+ assert_equal(typer.string_type, ast1.body[0].arguments.args[0].inferred_type)
79
+
80
+ ast1 = AST.parse("#{def_foo}(a:string); a; end")
81
+ typer = Typer::Simple.new :bar
82
+
83
+ ast1.infer(typer)
84
+
85
+ assert_equal(typer.string_type, typer.method_type(type, 'foo', [typer.string_type]))
86
+ assert_equal(typer.string_type, typer.local_type(ast1.body[0].static_scope, 'a'))
87
+ assert_equal(typer.string_type, ast1.body[0].inferred_type)
88
+ assert_equal(typer.string_type, ast1.body[0].arguments.args[0].inferred_type)
89
+
90
+ ast1 = AST.parse("#{def_foo}(a) returns :string; end")
91
+ typer = Typer::Simple.new :bar
92
+
93
+ assert_raise(Typer::InferenceError) do
94
+ ast1.infer(typer)
95
+ typer.resolve(true)
96
+ end
97
+ end
98
+ end
99
+
100
+ def test_call
101
+ ast = AST.parse("1.foo(2)").body
102
+ typer = Typer::Simple.new "bar"
103
+
104
+ typer.learn_method_type(typer.fixnum_type, "foo", [typer.fixnum_type], typer.string_type, [])
105
+ assert_equal(typer.string_type, typer.method_type(typer.fixnum_type, "foo", [typer.fixnum_type]))
106
+
107
+ ast.infer(typer)
108
+
109
+ assert_equal(typer.string_type, ast.inferred_type)
110
+
111
+ ast = AST.parse("def bar(a:fixnum, b:string); 1.0; end; def baz; bar(1, 'x'); end")
112
+
113
+ ast.infer(typer)
114
+ ast = ast.body
115
+
116
+ assert_equal(typer.float_type, typer.method_type(typer.self_type, "bar", [typer.fixnum_type, typer.string_type]))
117
+ assert_equal(typer.float_type, typer.method_type(typer.self_type, "baz", []))
118
+ assert_equal(typer.float_type, ast.children[0].inferred_type)
119
+ assert_equal(typer.float_type, ast.children[1].inferred_type)
120
+
121
+ # Reverse the order, ensure deferred inference succeeds
122
+ ast = AST.parse("def baz; bar(1, 'x'); end; def bar(a:fixnum, b:string); 1.0; end")
123
+ typer = Typer::Simple.new("bar")
124
+
125
+ ast.infer(typer)
126
+ ast = ast.body
127
+
128
+ assert_equal(typer.default_type, typer.method_type(typer.self_type, "baz", []))
129
+ assert_equal(typer.float_type, typer.method_type(typer.self_type, "bar", [typer.fixnum_type, typer.string_type]))
130
+ assert_equal(typer.default_type, ast.children[0].inferred_type)
131
+ assert_equal(typer.float_type, ast.children[1].inferred_type)
132
+
133
+ # allow resolution to run
134
+ assert_nothing_raised {typer.resolve}
135
+
136
+ assert_equal(typer.float_type, typer.method_type(typer.self_type, "baz", []))
137
+ assert_equal(typer.float_type, typer.method_type(typer.self_type, "bar", [typer.fixnum_type, typer.string_type]))
138
+ assert_equal(typer.float_type, ast.children[0].inferred_type)
139
+ assert_equal(typer.float_type, ast.children[1].inferred_type)
140
+
141
+ # modify bar call to have bogus types, ensure resolution fails
142
+ ast = AST.parse("def baz; bar(1, 1); end; def bar(a:fixnum, b:string); 1.0; end")
143
+ typer = Typer::Simple.new("bar")
144
+
145
+ ast.infer(typer)
146
+ ast = ast.body
147
+
148
+ assert_equal(typer.default_type, typer.method_type(typer.self_type, "baz", []))
149
+ assert_equal(typer.float_type, typer.method_type(typer.self_type, "bar", [typer.fixnum_type, typer.string_type]))
150
+ assert_equal(typer.default_type, ast.children[0].inferred_type)
151
+ assert_equal(typer.float_type, ast.children[1].inferred_type)
152
+
153
+ # allow resolution to run and produce error
154
+ assert_raise(Typer::InferenceError) {typer.resolve(true)}
155
+ error_nodes = typer.errors.map {|e| e.node}
156
+ inspected = "[FunctionalCall(bar)\n Fixnum(1)\n Fixnum(1)]"
157
+ assert_equal(inspected, error_nodes.inspect)
158
+ end
159
+
160
+ def test_if
161
+ ast = AST.parse("if true; 1.0; else; ''; end").body[0]
162
+ typer = Typer::Simple.new("bar")
163
+
164
+ # incompatible body types
165
+ assert_raise(Typer::InferenceError) {ast.infer(typer)}
166
+
167
+ ast = AST.parse("if true; 1.0; else; 2.0; end").body[0]
168
+
169
+ assert_nothing_raised {ast.infer(typer); typer.resolve(true)}
170
+
171
+ assert_equal(typer.boolean_type, ast.condition.inferred_type)
172
+ assert_equal(typer.float_type, ast.body.inferred_type)
173
+ assert_equal(typer.float_type, ast.else.inferred_type)
174
+
175
+ ast = AST.parse("if foo; bar; else; baz; end").body[0]
176
+
177
+ assert_nothing_raised {ast.infer(typer)}
178
+
179
+ assert_equal(typer.default_type, ast.condition.inferred_type)
180
+ assert_equal(typer.default_type, ast.body.inferred_type)
181
+ assert_equal(typer.default_type, ast.else.inferred_type)
182
+
183
+ # unresolved types for the foo, bar, and baz calls
184
+ assert_raise(Typer::InferenceError) {typer.resolve(true)}
185
+
186
+ ast2 = AST.parse("def foo; 1; end; def bar; 1.0; end")[0]
187
+
188
+ ast2.infer(typer)
189
+ ast.infer(typer)
190
+
191
+ # unresolved types for the baz call
192
+ assert_raise(Typer::InferenceError) {typer.resolve(true)}
193
+
194
+ assert_equal(AST.error_type, ast.condition.inferred_type)
195
+ assert_equal(AST.error_type, ast.body.inferred_type)
196
+ assert_equal(AST.error_type, ast.else.inferred_type)
197
+
198
+ typer.errors.clear
199
+
200
+ ast2 = AST.parse("def baz; 2.0; end")
201
+
202
+ ast2.infer(typer)
203
+ ast.infer(typer)
204
+
205
+ assert_nothing_raised {typer.resolve(true)}
206
+
207
+ assert_equal(typer.float_type, ast2.body[0].inferred_type)
208
+ end
209
+
210
+ def test_class
211
+ ast = AST.parse("class Foo; def foo; 1; end; def baz; foo; end; end")
212
+ cls = ast.body[0]
213
+ foo = cls.body[0]
214
+ baz = cls.body[1]
215
+
216
+ typer = Typer::Simple.new("script")
217
+ ast.infer(typer)
218
+
219
+ assert_nothing_raised {typer.resolve(true)}
220
+ end
221
+ end
metadata ADDED
@@ -0,0 +1,235 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mirah
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 4
9
+ version: 0.0.4
10
+ platform: java
11
+ authors:
12
+ - Charles Oliver Nutter
13
+ - Ryan Brown
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2010-11-16 22:23:38.767177 -08:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: bitescript
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ - 0
31
+ - 6
32
+ version: 0.0.6
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ description: |-
36
+ Mirah is a customizable programming language featuring static types,
37
+ local type inference and a heavily Ruby-inspired syntax. Mirah
38
+ currently includes a typer/compiler backend for the JVM which can
39
+ output either JVM bytecode or Java source files.
40
+ email:
41
+ - headius@headius.com
42
+ - ribrdb@google.com
43
+ executables:
44
+ - mirah
45
+ - mirahc
46
+ - mirahp
47
+ - duby
48
+ - dubyc
49
+ - dubyp
50
+ extensions: []
51
+
52
+ extra_rdoc_files:
53
+ - History.txt
54
+ - README.txt
55
+ files:
56
+ - bin/duby
57
+ - bin/dubyc
58
+ - bin/dubyp
59
+ - bin/jrubyp
60
+ - bin/mirah
61
+ - bin/mirah.cmd
62
+ - bin/mirahc
63
+ - bin/mirahc.cmd
64
+ - bin/mirahp
65
+ - bin/mirahp.cmd
66
+ - lib/duby.rb
67
+ - lib/mirah/appengine_tasks.rb
68
+ - lib/mirah/ast/call.rb
69
+ - lib/mirah/ast/class.rb
70
+ - lib/mirah/ast/flow.rb
71
+ - lib/mirah/ast/intrinsics.rb
72
+ - lib/mirah/ast/literal.rb
73
+ - lib/mirah/ast/local.rb
74
+ - lib/mirah/ast/method.rb
75
+ - lib/mirah/ast/scope.rb
76
+ - lib/mirah/ast/structure.rb
77
+ - lib/mirah/ast/type.rb
78
+ - lib/mirah/ast.rb
79
+ - lib/mirah/compiler.rb
80
+ - lib/mirah/env.rb
81
+ - lib/mirah/jvm/base.rb
82
+ - lib/mirah/jvm/compiler.rb
83
+ - lib/mirah/jvm/method_lookup.rb
84
+ - lib/mirah/jvm/source_compiler.rb
85
+ - lib/mirah/jvm/source_generator/builder.rb
86
+ - lib/mirah/jvm/source_generator/loops.rb
87
+ - lib/mirah/jvm/source_generator/precompile.rb
88
+ - lib/mirah/jvm/source_generator/typer.rb
89
+ - lib/mirah/jvm/typer.rb
90
+ - lib/mirah/jvm/types/basic_types.rb
91
+ - lib/mirah/jvm/types/boolean.rb
92
+ - lib/mirah/jvm/types/enumerable.rb
93
+ - lib/mirah/jvm/types/extensions.rb
94
+ - lib/mirah/jvm/types/factory.rb
95
+ - lib/mirah/jvm/types/floats.rb
96
+ - lib/mirah/jvm/types/integers.rb
97
+ - lib/mirah/jvm/types/intrinsics.rb
98
+ - lib/mirah/jvm/types/literals.rb
99
+ - lib/mirah/jvm/types/methods.rb
100
+ - lib/mirah/jvm/types/number.rb
101
+ - lib/mirah/jvm/types.rb
102
+ - lib/mirah/nbcompiler.rb
103
+ - lib/mirah/plugin/edb.rb
104
+ - lib/mirah/plugin/gwt.rb
105
+ - lib/mirah/plugin/java.rb
106
+ - lib/mirah/transform.rb
107
+ - lib/mirah/transform2.rb
108
+ - lib/mirah/typer.rb
109
+ - lib/mirah.rb
110
+ - lib/mirah_task.rb
111
+ - test/test_ast.rb
112
+ - test/test_compilation.rb
113
+ - test/test_env.rb
114
+ - test/test_gwt.rb
115
+ - test/test_java_typer.rb
116
+ - test/test_javac_compiler.rb
117
+ - test/test_jvm_compiler.rb
118
+ - test/test_typer.rb
119
+ - examples/ant/example-build.xml
120
+ - examples/appengine/Rakefile
121
+ - examples/appengine/Readme
122
+ - examples/appengine/src/org/mirah/list.dhtml
123
+ - examples/appengine/src/org/mirah/MirahApp.mirah
124
+ - examples/appengine/war/WEB-INF/lib/dubydatastore.jar
125
+ - examples/bintrees.mirah
126
+ - examples/construction.mirah
127
+ - examples/dynamic.mirah
128
+ - examples/edb.mirah
129
+ - examples/fib.mirah
130
+ - examples/fields.mirah
131
+ - examples/fractal.mirah
132
+ - examples/java_thing.mirah
133
+ - examples/plugins/appengine/lib/com/google/appengine/ext/duby/db/datastore.rb
134
+ - examples/plugins/appengine/Rakefile
135
+ - examples/plugins/appengine/src/com/google/appengine/ext/duby/db/Model.duby
136
+ - examples/plugins/appengine/test/com/google/appengine/ext/duby/db/ModelTest.duby
137
+ - examples/simple_class.mirah
138
+ - examples/sort_closure.mirah
139
+ - examples/swing.mirah
140
+ - examples/tak.mirah
141
+ - examples/test.edb
142
+ - examples/wiki/Rakefile
143
+ - examples/wiki/src/org/mirah/wiki/edit.eduby.html
144
+ - examples/wiki/src/org/mirah/wiki/error.eduby.html
145
+ - examples/wiki/src/org/mirah/wiki/layout.eduby.html
146
+ - examples/wiki/src/org/mirah/wiki/MirahWiki.duby
147
+ - examples/wiki/src/org/mirah/wiki/parser.eduby.html
148
+ - examples/wiki/src/org/mirah/wiki/view.eduby.html
149
+ - examples/wiki/war/app.yaml
150
+ - examples/wiki/war/public/favicon.ico
151
+ - examples/wiki/war/public/images/appengine_duby.png
152
+ - examples/wiki/war/public/images/back.gif
153
+ - examples/wiki/war/public/images/dir.gif
154
+ - examples/wiki/war/public/images/file.gif
155
+ - examples/wiki/war/public/javascripts/prettify.js
156
+ - examples/wiki/war/public/robots.txt
157
+ - examples/wiki/war/public/stylesheets/main.css
158
+ - examples/wiki/war/public/stylesheets/prettify.css
159
+ - examples/wiki/war/public/stylesheets/sh_style.css
160
+ - examples/wiki/war/public/stylesheets/source.css
161
+ - examples/wiki/war/public/wmd/images/bg-fill.png
162
+ - examples/wiki/war/public/wmd/images/bg.png
163
+ - examples/wiki/war/public/wmd/images/blockquote.png
164
+ - examples/wiki/war/public/wmd/images/bold.png
165
+ - examples/wiki/war/public/wmd/images/code.png
166
+ - examples/wiki/war/public/wmd/images/h1.png
167
+ - examples/wiki/war/public/wmd/images/hr.png
168
+ - examples/wiki/war/public/wmd/images/img.png
169
+ - examples/wiki/war/public/wmd/images/italic.png
170
+ - examples/wiki/war/public/wmd/images/link.png
171
+ - examples/wiki/war/public/wmd/images/ol.png
172
+ - examples/wiki/war/public/wmd/images/redo.png
173
+ - examples/wiki/war/public/wmd/images/separator.png
174
+ - examples/wiki/war/public/wmd/images/ul.png
175
+ - examples/wiki/war/public/wmd/images/undo.png
176
+ - examples/wiki/war/public/wmd/images/wmd-on.png
177
+ - examples/wiki/war/public/wmd/images/wmd.png
178
+ - examples/wiki/war/public/wmd/showdown.js
179
+ - examples/wiki/war/public/wmd/wmd-base.js
180
+ - examples/wiki/war/public/wmd/wmd-plus.js
181
+ - examples/wiki/war/public/wmd/wmd.js
182
+ - examples/wiki/war/WEB-INF/classes/test/HeredocContext.class
183
+ - examples/wiki/war/WEB-INF/classes/test/MirahParser.class
184
+ - examples/wiki/war/WEB-INF/lib/appengine-api.jar
185
+ - examples/wiki/war/WEB-INF/lib/dubydatastore.jar
186
+ - examples/wiki/war/WEB-INF/lib/jmeta-runtime.jar
187
+ - examples/wiki/war/WEB-INF/lib/pegdown-stubs.jar
188
+ - examples/wiki/war/WEB-INF/pegdown.jar
189
+ - javalib/dynalang-invoke-0.1.jar
190
+ - javalib/JRubyParser.jar
191
+ - javalib/mirah-bootstrap.jar
192
+ - javalib/mirah-parser.jar
193
+ - History.txt
194
+ - README.txt
195
+ - Rakefile
196
+ has_rdoc: true
197
+ homepage: http://www.mirah.org/
198
+ licenses: []
199
+
200
+ post_install_message:
201
+ rdoc_options:
202
+ - --main
203
+ - README.txt
204
+ require_paths:
205
+ - lib
206
+ required_ruby_version: !ruby/object:Gem::Requirement
207
+ requirements:
208
+ - - ">="
209
+ - !ruby/object:Gem::Version
210
+ segments:
211
+ - 0
212
+ version: "0"
213
+ required_rubygems_version: !ruby/object:Gem::Requirement
214
+ requirements:
215
+ - - ">="
216
+ - !ruby/object:Gem::Version
217
+ segments:
218
+ - 0
219
+ version: "0"
220
+ requirements: []
221
+
222
+ rubyforge_project: mirah
223
+ rubygems_version: 1.3.6
224
+ signing_key:
225
+ specification_version: 3
226
+ summary: Mirah is a customizable programming language featuring static types, local type inference and a heavily Ruby-inspired syntax
227
+ test_files:
228
+ - test/test_ast.rb
229
+ - test/test_compilation.rb
230
+ - test/test_env.rb
231
+ - test/test_gwt.rb
232
+ - test/test_java_typer.rb
233
+ - test/test_javac_compiler.rb
234
+ - test/test_jvm_compiler.rb
235
+ - test/test_typer.rb