mirah 0.0.12-java → 0.1.0-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 (171) hide show
  1. data/History.txt +372 -0
  2. data/README.txt +4 -5
  3. data/Rakefile +178 -55
  4. data/examples/appengine/Readme +3 -3
  5. data/examples/appengine/src/org/mirah/MirahApp.mirah +1 -1
  6. data/examples/appengine/src/org/mirah/list.dhtml +1 -1
  7. data/examples/bintrees.mirah +1 -1
  8. data/examples/edb.mirah +1 -1
  9. data/examples/fib.mirah +1 -1
  10. data/examples/interfaces.mirah +1 -1
  11. data/examples/macros/{string-each-char.mirah → string_each_char.mirah} +4 -5
  12. data/examples/maven/README.txt +1 -1
  13. data/examples/maven/src/main/mirah/hello_mirah.mirah +1 -1
  14. data/examples/plugins/appengine/Rakefile +1 -1
  15. data/examples/plugins/appengine/src/com/google/appengine/ext/duby/db/MetaModel.mirah +1 -1
  16. data/examples/plugins/appengine/src/com/google/appengine/ext/duby/db/Model.duby +1 -1
  17. data/examples/plugins/appengine/test/com/google/appengine/ext/duby/db/ModelTest.duby +1 -1
  18. data/examples/rosettacode/100-doors.mirah +6 -6
  19. data/examples/rosettacode/README.txt +3 -3
  20. data/examples/rosettacode/boolean-values.mirah +1 -1
  21. data/examples/rosettacode/comments.mirah +1 -1
  22. data/examples/rosettacode/count-occurrences-of-a-substring.mirah +1 -1
  23. data/examples/rosettacode/factorial.mirah +1 -1
  24. data/examples/rosettacode/fibonacci.mirah +1 -1
  25. data/examples/rosettacode/fizz-buzz.mirah +2 -2
  26. data/examples/rosettacode/flatten-a-list.mirah +4 -4
  27. data/examples/rosettacode/guess-the-number.mirah +2 -2
  28. data/examples/rosettacode/hamming-numbers.mirah +4 -4
  29. data/examples/rosettacode/is-string-numeric.mirah +22 -22
  30. data/examples/rosettacode/palindrome.mirah +2 -2
  31. data/examples/rosettacode/random-numbers.mirah +1 -1
  32. data/examples/rosettacode/repeat-a-string.mirah +1 -1
  33. data/examples/rosettacode/reverse-a-string.mirah +1 -1
  34. data/examples/rosettacode/rot-13.mirah +5 -5
  35. data/examples/rosettacode/secure-temporary-file.mirah +2 -2
  36. data/examples/rosettacode/sleep.mirah +1 -1
  37. data/examples/rosettacode/string-length.mirah +5 -5
  38. data/examples/swing.mirah +1 -1
  39. data/examples/test.edb +1 -1
  40. data/javalib/mirah-bootstrap.jar +0 -0
  41. data/javalib/mirah-builtins.jar +0 -0
  42. data/javalib/mirah-parser.jar +0 -0
  43. data/javalib/mirah-util.jar +0 -0
  44. data/lib/duby.rb +1 -1
  45. data/lib/mirah.rb +50 -28
  46. data/lib/mirah/ast.rb +15 -605
  47. data/lib/mirah/ast/scope.rb +98 -69
  48. data/lib/mirah/commands.rb +1 -1
  49. data/lib/mirah/commands/base.rb +7 -7
  50. data/lib/mirah/commands/compile.rb +3 -3
  51. data/lib/mirah/commands/parse.rb +7 -5
  52. data/lib/mirah/commands/run.rb +12 -19
  53. data/lib/mirah/compiler.rb +15 -23
  54. data/lib/mirah/errors.rb +16 -1
  55. data/lib/mirah/generator.rb +79 -39
  56. data/lib/mirah/jvm/compiler.rb +1 -19
  57. data/lib/mirah/jvm/compiler/base.rb +233 -90
  58. data/lib/mirah/jvm/compiler/jvm_bytecode.rb +675 -363
  59. data/lib/mirah/jvm/method_lookup.rb +134 -65
  60. data/lib/mirah/jvm/typer.rb +10 -5
  61. data/lib/mirah/jvm/types.rb +10 -2
  62. data/lib/mirah/jvm/types/array_type.rb +10 -12
  63. data/lib/mirah/{compiler/type.rb → jvm/types/ast_ext.rb} +12 -8
  64. data/lib/mirah/jvm/types/basic_types.rb +26 -33
  65. data/lib/mirah/jvm/types/bitescript_ext.rb +1 -1
  66. data/lib/mirah/jvm/types/block_type.rb +15 -0
  67. data/lib/mirah/jvm/types/boolean.rb +8 -4
  68. data/lib/mirah/jvm/types/dynamic_type.rb +12 -13
  69. data/lib/mirah/jvm/types/enumerable.rb +7 -7
  70. data/lib/mirah/jvm/types/extensions.rb +11 -6
  71. data/lib/mirah/jvm/types/factory.rb +624 -94
  72. data/lib/mirah/jvm/types/floats.rb +21 -15
  73. data/lib/mirah/jvm/types/generic_type.rb +72 -0
  74. data/lib/mirah/jvm/types/implicit_nil_type.rb +29 -0
  75. data/lib/mirah/jvm/types/integers.rb +26 -71
  76. data/lib/mirah/jvm/types/interface_definition.rb +3 -3
  77. data/lib/mirah/jvm/types/intrinsics.rb +203 -168
  78. data/lib/mirah/jvm/types/literals.rb +6 -6
  79. data/lib/mirah/jvm/types/meta_type.rb +13 -4
  80. data/lib/mirah/jvm/types/methods.rb +281 -93
  81. data/lib/mirah/jvm/types/null_type.rb +17 -5
  82. data/lib/mirah/jvm/types/number.rb +10 -7
  83. data/lib/mirah/jvm/types/primitive_type.rb +17 -6
  84. data/lib/mirah/jvm/types/source_mirror.rb +12 -7
  85. data/lib/mirah/jvm/types/type.rb +107 -23
  86. data/lib/mirah/jvm/types/type_definition.rb +25 -10
  87. data/lib/mirah/jvm/types/unreachable_type.rb +1 -1
  88. data/lib/mirah/jvm/types/void_type.rb +3 -3
  89. data/lib/mirah/parser.rb +154 -16
  90. data/lib/mirah/plugin/edb.rb +1 -1
  91. data/lib/mirah/transform.rb +1 -2
  92. data/lib/mirah/transform/ast_ext.rb +24 -43
  93. data/lib/mirah/transform/transformer.rb +29 -224
  94. data/lib/mirah/typer.rb +2 -16
  95. data/lib/mirah/util/argument_processor.rb +25 -10
  96. data/lib/mirah/util/class_loader.rb +1 -1
  97. data/lib/mirah/util/compilation_state.rb +16 -17
  98. data/lib/mirah/util/delegate.rb +2 -2
  99. data/lib/mirah/util/logging.rb +110 -0
  100. data/lib/mirah/util/process_errors.rb +69 -11
  101. data/lib/mirah/version.rb +1 -1
  102. data/test/core/commands_test.rb +6 -24
  103. data/test/core/env_test.rb +5 -5
  104. data/{lib/mirah/jvm/source_generator/typer.rb → test/core/generator_test.rb} +9 -9
  105. data/test/core/typer_test.rb +196 -158
  106. data/test/core/util/argument_processor_test.rb +10 -10
  107. data/test/core/util/class_loader_test.rb +6 -5
  108. data/test/fixtures/org/foo/LowerCaseInnerClass$inner.class +0 -0
  109. data/test/fixtures/org/foo/LowerCaseInnerClass.class +0 -0
  110. data/test/fixtures/org/foo/LowerCaseInnerClass.java +7 -0
  111. data/test/jvm/annotations_test.rb +5 -5
  112. data/test/jvm/blocks_test.rb +140 -88
  113. data/test/jvm/bytecode_test_helper.rb +112 -94
  114. data/test/jvm/cast_test.rb +162 -0
  115. data/test/jvm/constructors_test.rb +18 -8
  116. data/test/jvm/enumerable_test.rb +77 -44
  117. data/test/jvm/example_test.rb +53 -0
  118. data/test/jvm/factory_test.rb +7 -1
  119. data/test/jvm/generics_test.rb +57 -0
  120. data/test/jvm/hash_test.rb +106 -0
  121. data/test/jvm/import_test.rb +81 -0
  122. data/test/jvm/interface_test.rb +73 -0
  123. data/test/jvm/java_typer_test.rb +92 -66
  124. data/{lib/mirah/typer/base.rb → test/jvm/jvm_commands_test.rb} +6 -10
  125. data/test/jvm/jvm_compiler_test.rb +170 -604
  126. data/test/jvm/list_extensions_test.rb +23 -0
  127. data/test/jvm/macros_test.rb +197 -32
  128. data/test/jvm/main_method_test.rb +4 -4
  129. data/test/jvm/numeric_extensions_test.rb +13 -0
  130. data/test/jvm/rescue_test.rb +73 -16
  131. data/test/jvm/varargs_test.rb +65 -0
  132. data/test/test_helper.rb +1 -2
  133. metadata +234 -251
  134. data/examples/SortClosure$__xform_tmp_1.class +0 -0
  135. data/examples/SortClosure$__xform_tmp_2.class +0 -0
  136. data/examples/SortClosure.class +0 -0
  137. data/examples/macros/StringEachChar$Extension1.class +0 -0
  138. data/lib/mirah/ast/call.rb +0 -345
  139. data/lib/mirah/ast/class.rb +0 -359
  140. data/lib/mirah/ast/flow.rb +0 -381
  141. data/lib/mirah/ast/intrinsics.rb +0 -563
  142. data/lib/mirah/ast/literal.rb +0 -178
  143. data/lib/mirah/ast/local.rb +0 -112
  144. data/lib/mirah/ast/method.rb +0 -408
  145. data/lib/mirah/ast/structure.rb +0 -387
  146. data/lib/mirah/ast/type.rb +0 -146
  147. data/lib/mirah/commands/base.rb~ +0 -57
  148. data/lib/mirah/compiler/call.rb +0 -45
  149. data/lib/mirah/compiler/class.rb +0 -81
  150. data/lib/mirah/compiler/flow.rb +0 -109
  151. data/lib/mirah/compiler/literal.rb +0 -130
  152. data/lib/mirah/compiler/local.rb +0 -59
  153. data/lib/mirah/compiler/method.rb +0 -44
  154. data/lib/mirah/compiler/structure.rb +0 -65
  155. data/lib/mirah/jvm/compiler/java_source.rb +0 -787
  156. data/lib/mirah/jvm/method_lookup.rb~ +0 -247
  157. data/lib/mirah/jvm/source_generator/builder.rb +0 -468
  158. data/lib/mirah/jvm/source_generator/loops.rb +0 -131
  159. data/lib/mirah/jvm/source_generator/precompile.rb +0 -210
  160. data/lib/mirah/plugin/gwt.rb +0 -189
  161. data/lib/mirah/plugin/java.rb +0 -70
  162. data/lib/mirah/transform/error.rb +0 -13
  163. data/lib/mirah/transform/helper.rb +0 -765
  164. data/lib/mirah/typer/simple.rb +0 -384
  165. data/lib/mirah/version.rb~ +0 -18
  166. data/test/core/ast_test.rb +0 -382
  167. data/test/core/compilation_test.rb +0 -130
  168. data/test/core/macros_test.rb +0 -61
  169. data/test/jvm/javac_test_helper.rb +0 -89
  170. data/test/jvm/jvm_compiler_test.rb~ +0 -2181
  171. data/test/plugins/gwt_test.rb +0 -69
@@ -12,10 +12,10 @@ Datastore API:
12
12
  Model.all -> Query
13
13
  property foo, String # or any supported datastore type
14
14
  # For numbers use Long or Double
15
-
15
+
16
16
  instance.save
17
17
  instance.key
18
-
18
+
19
19
  instance.foo
20
20
  instance.foo=
21
21
 
@@ -26,4 +26,4 @@ Datastore API:
26
26
  Query.sort(property_name, true) # descending
27
27
  Query.foo('foo').bar(3) # Only return instances where foo = 'foo' and bar = 3
28
28
  Query.offset(10)
29
- Query.limit(5)
29
+ Query.limit(5)
@@ -69,4 +69,4 @@ class MirahApp < HttpServlet
69
69
  return "" unless o
70
70
  h(o.toString)
71
71
  end
72
- end
72
+ end
@@ -12,4 +12,4 @@
12
12
  Content: <textarea name=content></textarea><br>
13
13
  <input type=submit>
14
14
  </form>
15
- </body>
15
+ </body>
@@ -37,7 +37,7 @@ class BinaryTrees
37
37
  check += TreeNode.bottomUpTree(-i,depth).itemCheck
38
38
  i += 1
39
39
  end
40
-
40
+
41
41
  puts "#{iterations * 2}\t trees of depth #{depth}\t check: #{check}"
42
42
  depth += 2
43
43
  end
data/examples/edb.mirah CHANGED
@@ -15,4 +15,4 @@
15
15
 
16
16
  def_edb :render, 'test.edb'
17
17
  @message = "Hello"
18
- puts render
18
+ puts render
data/examples/fib.mirah CHANGED
@@ -13,7 +13,7 @@
13
13
  # See the License for the specific language governing permissions and
14
14
  # limitations under the License.
15
15
 
16
- def fib(a:int):int
16
+ def fib(a:int)
17
17
  if a < 2
18
18
  a
19
19
  else
@@ -30,4 +30,4 @@ end
30
30
 
31
31
  list = ['foo', 'bar', 'baz']
32
32
  p = Printer(MyPrinter.new)
33
- p.printAll(list)
33
+ p.printAll(list)
@@ -14,12 +14,11 @@
14
14
  # limitations under the License.
15
15
 
16
16
 
17
- macro def eachChar(value, &block)
18
-
19
- quote {
20
- `value`.toCharArray.each do | my_char |
17
+ macro def eachChar(value, block:Block)
18
+ quote {
19
+ `value`.toCharArray.each do |`block.arguments` |
21
20
  `block.body`
22
- end
21
+ end
23
22
  }
24
23
  end
25
24
 
@@ -1,2 +1,2 @@
1
1
  This is a sample project that uses the Mirah plugin for Maven to
2
- build and compile source.
2
+ build and compile source.
@@ -6,4 +6,4 @@ class HelloMirah
6
6
  puts "Hello, Mirah!"
7
7
  end
8
8
  end
9
- end
9
+ end
@@ -69,4 +69,4 @@ task :test => :compile_test do
69
69
  formatter :type => 'plain', :usefile => 'false'
70
70
  end
71
71
  end
72
- end
72
+ end
@@ -382,4 +382,4 @@ class ModelState
382
382
  ast << mdef
383
383
  @save = Body(mdef.child_nodes.get(2))
384
384
  end
385
- end
385
+ end
@@ -391,4 +391,4 @@ class Model
391
391
 
392
392
  def _read_from(e:Entity):void
393
393
  end
394
- end
394
+ end
@@ -125,4 +125,4 @@ class ModelTest
125
125
  assertEquals(e.key, e2.key)
126
126
  end
127
127
  # TODO more tests.
128
- end
128
+ end
@@ -22,13 +22,13 @@ class Door
22
22
  def initialize
23
23
  @state=false
24
24
  end
25
-
25
+
26
26
  def closed?; !@state; end
27
27
  def open?; @state; end
28
28
 
29
29
  def close; @state=false; end
30
30
  def open; @state=true; end
31
-
31
+
32
32
  def toggle
33
33
  if closed?
34
34
  open
@@ -36,14 +36,14 @@ class Door
36
36
  close
37
37
  end
38
38
  end
39
-
39
+
40
40
  def toString; Boolean.toString(@state); end
41
41
  end
42
-
42
+
43
43
  doors=ArrayList.new
44
44
  1.upto(100) do
45
45
  doors.add(Door.new)
46
- end
46
+ end
47
47
 
48
48
  1.upto(100) do |multiplier|
49
49
  index = 0
@@ -54,7 +54,7 @@ end
54
54
  end
55
55
 
56
56
  i = 0
57
- doors.each do |door|
57
+ doors.each do |door|
58
58
  puts "Door #{i+1} is #{door}."
59
59
  i+=1
60
60
  end
@@ -1,9 +1,9 @@
1
1
 
2
2
  This example set is all the code for Mirah from the Rosetta Code wiki
3
- (http://rosettacode.org/.
3
+ (http://rosettacode.org/.
4
4
 
5
- This code is the canonical source for the wiki. Please add as many more
5
+ This code is the canonical source for the wiki. Please add as many more
6
6
  samples as you'd like. Either add the sample here and send a pull request
7
7
  to the project owners, or add a sample to the Rosetta Code wiki and send
8
8
  a message to the project owners. Either way, we'd like to try and keep
9
- the wiki page and this repository synchronized.
9
+ the wiki page and this repository synchronized.
@@ -16,7 +16,7 @@
16
16
  import java.util.ArrayList
17
17
  import java.util.HashMap
18
18
 
19
- # booleans
19
+ # booleans
20
20
  puts 'true is true' if true
21
21
  puts 'false is false' if (!false)
22
22
 
@@ -18,4 +18,4 @@ puts 'code' # I am a comment
18
18
  /*
19
19
  Here is a multi-
20
20
  line comment.
21
- */
21
+ */
@@ -21,7 +21,7 @@ import java.util.regex.Matcher
21
21
  def count_substring(pattern:string, source:string)
22
22
  (source.length() - source.replace(pattern, "").length()) / pattern.length()
23
23
  end
24
-
24
+
25
25
  puts count_substring("th", "the three truths") # ==> 3
26
26
  puts count_substring("abab", "ababababab") # ==> 2
27
27
  puts count_substring("a*b", "abaabba*bbaba*bbab") # ==> 2
@@ -15,7 +15,7 @@
15
15
 
16
16
  def factorial_iterative(n:int)
17
17
  2.upto(n-1) do |i|
18
- n *= i
18
+ n *= i
19
19
  end
20
20
  n
21
21
  end
@@ -18,7 +18,7 @@ def fibonacci(n:int)
18
18
  return n if n < 2
19
19
  fibPrev = 1
20
20
  fib = 1
21
- 3.upto(Math.abs(n)) do
21
+ 3.upto(Math.abs(n)) do
22
22
  oldFib = fib
23
23
  fib = fib + fibPrev
24
24
  fibPrev = oldFib
@@ -16,12 +16,12 @@
16
16
 
17
17
  1.upto(100) do |n|
18
18
  print "Fizz" if a = ((n % 3) == 0)
19
- print "Buzz" if b = ((n % 5) == 0)
19
+ print "Buzz" if b = ((n % 5) == 0)
20
20
  print n unless (a || b)
21
21
  print "\n"
22
22
  end
23
23
 
24
- # a little more straight forward
24
+ # a little more straight forward
25
25
  1.upto(100) do |n|
26
26
  if (n % 15) == 0
27
27
  puts "FizzBuzz"
@@ -17,18 +17,18 @@ import java.util.ArrayList
17
17
  import java.util.List
18
18
  import java.util.Collection
19
19
 
20
- def flatten(list: Collection)
20
+ def flatten(list: Collection)
21
21
  flatten(list, ArrayList.new)
22
22
  end
23
23
  def flatten(source: Collection, result: List)
24
24
 
25
25
  source.each do |x|
26
- if (Collection.class.isAssignableFrom(x.getClass()))
27
- flatten(Collection(x), result)
26
+ if (Collection.class.isAssignableFrom(x.getClass()))
27
+ flatten(Collection(x), result)
28
28
  else
29
29
  result.add(x)
30
30
  result # if branches must return same type
31
- end
31
+ end
32
32
  end
33
33
  result
34
34
  end
@@ -28,9 +28,9 @@ while !guessed do
28
28
  if userNumber == number
29
29
  guessed = true
30
30
  puts "you guessed it"
31
- elsif userNumber > number
31
+ elsif userNumber > number
32
32
  puts "too high"
33
33
  else
34
- puts "too low"
34
+ puts "too low"
35
35
  end
36
36
  end
@@ -15,13 +15,13 @@
15
15
 
16
16
  import java.math.BigInteger
17
17
  import java.util.PriorityQueue
18
-
18
+
19
19
  def updateFrontier(x:BigInteger, queue:PriorityQueue):void
20
20
  queue.offer(x.shiftLeft(1))
21
21
  queue.offer(x.multiply(BigInteger.valueOf(3)))
22
22
  queue.offer(x.multiply(BigInteger.valueOf(5)))
23
23
  end
24
-
24
+
25
25
  def hamming(n:int):BigInteger
26
26
  raise "Invalid parameter" if (n <= 0)
27
27
 
@@ -42,8 +42,8 @@ end
42
42
  nums = ""
43
43
  1.upto(20) do | i |
44
44
  nums = nums + " #{hamming(i)}"
45
- end
45
+ end
46
46
  puts "Hamming(1 .. 20) =#{nums}"
47
47
  puts "\nHamming(1691) = #{hamming(1691)}"
48
- puts "Hamming(1000000) = #{hamming(1000000)}"
48
+ puts "Hamming(1000000) = #{hamming(1000000)}"
49
49
 
@@ -17,7 +17,7 @@ import java.text.NumberFormat
17
17
  import java.text.ParsePosition
18
18
  import java.util.Scanner
19
19
 
20
- # this first example relies on catching an exception,
20
+ # this first example relies on catching an exception,
21
21
  # which is bad style and poorly performing in Java
22
22
  def is_numeric?(s:string)
23
23
  begin
@@ -40,28 +40,28 @@ puts '1.2.3 is not numeric' unless is_numeric?('1.2.3')
40
40
 
41
41
 
42
42
  # check every element of the string
43
- def is_numeric2?(s: string)
44
- if (s == nil || s.isEmpty())
45
- return false
46
- end
47
- if (!s.startsWith('-'))
43
+ def is_numeric2?(s: string)
44
+ if (s == nil || s.isEmpty())
45
+ return false
46
+ end
47
+ if (!s.startsWith('-'))
48
48
  if s.contains('-')
49
- return false
49
+ return false
50
50
  end
51
- end
52
-
51
+ end
52
+
53
53
  0.upto(s.length()-1) do |x|
54
54
  c = s.charAt(x)
55
55
  if ((x == 0) && (c == '-'.charAt(0)))
56
56
  # negative number
57
57
  elsif (c == '.'.charAt(0))
58
- if (s.indexOf('.', x) > -1)
58
+ if (s.indexOf('.', x) > -1)
59
59
  return false # more than one period
60
- end
60
+ end
61
61
  elsif (!Character.isDigit(c))
62
62
  return false
63
63
  end
64
- end
64
+ end
65
65
  true
66
66
  end
67
67
 
@@ -78,7 +78,7 @@ puts '1.2.3 is not numeric' unless is_numeric2?('1.2.3')
78
78
 
79
79
 
80
80
 
81
- # use a regular expression
81
+ # use a regular expression
82
82
  def is_numeric3?(s:string)
83
83
  s == nil || s.matches("[-+]?\\d+(\\.\\d+)?")
84
84
  end
@@ -94,12 +94,12 @@ puts '123- is not numeric' unless is_numeric3?('123-')
94
94
  puts '1.2.3 is not numeric' unless is_numeric3?('1.2.3')
95
95
 
96
96
 
97
- # use the positional parser in the java.text.NumberFormat object
98
- # (a more robust solution). If, after parsing, the parse position is at
99
- # the end of the string, we can deduce that the entire string was a
97
+ # use the positional parser in the java.text.NumberFormat object
98
+ # (a more robust solution). If, after parsing, the parse position is at
99
+ # the end of the string, we can deduce that the entire string was a
100
100
  # valid number.
101
- def is_numeric4?(s:string)
102
- return false if s == nil
101
+ def is_numeric4?(s:string)
102
+ return false if s == nil
103
103
  formatter = NumberFormat.getInstance()
104
104
  pos = ParsePosition.new(0)
105
105
  formatter.parse(s, pos)
@@ -118,10 +118,10 @@ puts '123- is not numeric' unless is_numeric4?('123-')
118
118
  puts '1.2.3 is not numeric' unless is_numeric4?('1.2.3')
119
119
 
120
120
 
121
- # use the java.util.Scanner object. Very useful if you have to
122
- # scan multiple entries. Scanner also has similar methods for longs,
123
- # shorts, bytes, doubles, floats, BigIntegers, and BigDecimals as well
124
- # as methods for integral types where you may input a base/radix other than
121
+ # use the java.util.Scanner object. Very useful if you have to
122
+ # scan multiple entries. Scanner also has similar methods for longs,
123
+ # shorts, bytes, doubles, floats, BigIntegers, and BigDecimals as well
124
+ # as methods for integral types where you may input a base/radix other than
125
125
  # 10 (10 is the default, which can be changed using the useRadix method).
126
126
  def is_numeric5?(s:string)
127
127
  return false if s == nil
@@ -14,11 +14,11 @@
14
14
  # limitations under the License.
15
15
 
16
16
 
17
- def reverse(s:string)
17
+ def reverse(s:string)
18
18
  StringBuilder.new(s).reverse.toString()
19
19
  end
20
20
 
21
- def palindrome?(s:string)
21
+ def palindrome?(s:string)
22
22
  s.equals(reverse(s))
23
23
  end
24
24
 
@@ -19,7 +19,7 @@ list = double[999]
19
19
  mean = 1.0
20
20
  std = 0.5
21
21
  rng = Random.new
22
- 0.upto(998) do | i |
22
+ 0.upto(998) do | i |
23
23
  list[i] = mean + std * rng.nextGaussian
24
24
  end
25
25
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  x = ""
18
18
 
19
- 5.times do
19
+ 5.times do
20
20
  x = x + "ha"
21
21
  end
22
22
 
@@ -14,7 +14,7 @@
14
14
  # limitations under the License.
15
15
 
16
16
 
17
- def reverse(s:string)
17
+ def reverse(s:string)
18
18
  StringBuilder.new(s).reverse
19
19
  end
20
20