bato 0.0.9 → 0.0.13

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 (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +0 -1
  3. data/Gemfile +2 -0
  4. data/Gemfile.lock +42 -0
  5. data/README.md +106 -74
  6. data/Rakefile +2 -0
  7. data/_config.yml +1 -0
  8. data/bato.gemspec +6 -5
  9. data/bin/bato +17 -11
  10. data/lib/bato/bersiyon.rb +3 -1
  11. data/lib/bato/core_ext/array.rb +5 -0
  12. data/lib/bato/core_ext/class.rb +3 -1
  13. data/lib/bato/core_ext/enumerator.rb +2 -0
  14. data/lib/bato/core_ext/integer.rb +2 -0
  15. data/lib/bato/core_ext/kernel.rb +8 -0
  16. data/lib/bato/core_ext/module.rb +4 -0
  17. data/lib/bato/core_ext/range.rb +2 -0
  18. data/lib/bato/core_ext/string.rb +2 -0
  19. data/lib/bato/core_ext.rb +2 -0
  20. data/lib/bato/ruby_parser_patches.rb +140 -180
  21. data/lib/bato/tagatala.rb +3 -1
  22. data/lib/bato.rb +2 -0
  23. data/mga_halimbawa/agapan.bt +5 -0
  24. data/mga_halimbawa/{alyas.bato → alyas.bt} +1 -1
  25. data/mga_halimbawa/batotris.bt +286 -0
  26. data/mga_halimbawa/{bilang.bato → bilang.bt} +1 -1
  27. data/mga_halimbawa/{dapat.bato → dapat.bt} +1 -1
  28. data/mga_halimbawa/{habang.bato → habang.bt} +1 -1
  29. data/mga_halimbawa/ihinto.bt +8 -0
  30. data/mga_halimbawa/{kontrol-sa-pagiikot.bato → kontrol-sa-pagiikot.bt} +7 -7
  31. data/mga_halimbawa/kumusta_mundo.bt +5 -0
  32. data/mga_halimbawa/{magbibigay.bato → magbibigay.bt} +3 -3
  33. data/mga_halimbawa/{maliban_na.bato → maliban_na.bt} +2 -2
  34. data/mga_halimbawa/{modyul.bato → modyul.bt} +3 -3
  35. data/mga_halimbawa/{nakatukoy.bato → nakatukoy.bt} +2 -2
  36. data/mga_halimbawa/{ngunit_kapag.bato → ngunit_kapag.bt} +3 -3
  37. data/mga_halimbawa/o_ang.bt +3 -0
  38. data/mga_halimbawa/{pamamaraan-sa-pagkakamali.bato → pamamaraan-sa-pagkakamali.bt} +1 -1
  39. data/mga_halimbawa/{pangalan.bato → pangalan.bt} +2 -2
  40. data/mga_halimbawa/panguri.bt +16 -0
  41. data/mga_halimbawa/{panuntunan.bato → panuntunan.bt} +1 -1
  42. data/mga_halimbawa/{para_sa.bato → para_sa.bt} +1 -1
  43. data/mga_halimbawa/{pibonasyi.bato → pibonasyi.bt} +6 -6
  44. data/mga_halimbawa/siguraduhin.bt +8 -0
  45. data/mga_halimbawa/{tanggalin.bato → tanggalin.bt} +3 -3
  46. data/mga_halimbawa/{timebomb.bato → timebomb.bt} +5 -5
  47. data/spec/bato/tagatala_spec.rb +6 -5
  48. data/spec/spec_helper.rb +1 -0
  49. metadata +48 -46
  50. data/mga_halimbawa/agapan.bato +0 -5
  51. data/mga_halimbawa/ihinto.bato +0 -8
  52. data/mga_halimbawa/kumusta_mundo.bato +0 -5
  53. data/mga_halimbawa/o_ang.bato +0 -3
  54. data/mga_halimbawa/panguri.bato +0 -13
  55. data/mga_halimbawa/siguraduhin.bato +0 -8
data/lib/bato/tagatala.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'ruby2ruby'
2
4
  require 'ruby_parser'
3
5
  require 'bato/ruby_parser_patches'
@@ -6,7 +8,7 @@ module Bato
6
8
  class Tagatala
7
9
  def initialize; end
8
10
 
9
- PASIMULANG_KODIGO = "# encoding: utf-8\nrequire \"bato/core_ext\"\n".freeze
11
+ PASIMULANG_KODIGO = "# encoding: utf-8\nrequire \"bato/core_ext\"\n"
10
12
 
11
13
  def sa_ruby(kodigo)
12
14
  ruby2ruby = Ruby2Ruby.new
data/lib/bato.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bato/bersiyon'
2
4
 
3
5
  module Bato; end
@@ -0,0 +1,5 @@
1
+ simulan
2
+ 1 / 0
3
+ agapan
4
+ mag_print "Hindi ito posible!"
5
+ wakas
@@ -1,6 +1,6 @@
1
1
  bilang Hayop
2
2
  ang aso
3
- iprint 'si browny ay mabait!'
3
+ mag_print 'si browny ay mabait!'
4
4
  wakas
5
5
  alyas browny aso
6
6
  wakas
@@ -0,0 +1,286 @@
1
+ require 'io/console'
2
+
3
+ grupo Batotris
4
+ BERSIYON = '0.1'.freeze
5
+ palawigin sarili
6
+
7
+ bilang Piyesa
8
+ MGA_PIYESA = [
9
+ [ [0, 1, 0, 0],
10
+ [1, 1, 1, 0],
11
+ [0, 0, 0, 0],
12
+ [0, 0, 0, 0], ],
13
+
14
+ [ [0, 1, 1, 0],
15
+ [1, 1, 0, 0],
16
+ [0, 0, 0, 0],
17
+ [0, 0, 0, 0], ],
18
+
19
+ [ [1, 1, 0, 0],
20
+ [0, 1, 1, 0],
21
+ [0, 0, 0, 0],
22
+ [0, 0, 0, 0], ],
23
+
24
+ [ [1, 1, 1, 1],
25
+ [0, 0, 0, 0],
26
+ [0, 0, 0, 0],
27
+ [0, 0, 0, 0], ],
28
+
29
+ [ [1, 1, 0, 0],
30
+ [1, 1, 0, 0],
31
+ [0, 0, 0, 0],
32
+ [0, 0, 0, 0], ],
33
+
34
+ [ [1, 0, 0, 0],
35
+ [1, 1, 1, 0],
36
+ [0, 0, 0, 0],
37
+ [0, 0, 0, 0], ],
38
+
39
+ [ [0, 0, 1, 0],
40
+ [1, 1, 1, 0],
41
+ [0, 0, 0, 0],
42
+ [0, 0, 0, 0], ],
43
+ ]
44
+
45
+ ang initialize(x, y, piyesa = bagong_bloke)
46
+ @x = x
47
+ @y = y
48
+ @piyesa = piyesa
49
+ wakas
50
+
51
+ ang magiba_ng_posisyon
52
+ bilang_ng_paglipat = 0
53
+ ang_posisyon = Array.kumatawan(4)
54
+ @piyesa.bilang_bawat_isa na_ganito |bloke, y|
55
+ bloke.bilang_bawat_isa na_ganito |b, x|
56
+ kapag b == 1
57
+ ang_posisyon[bilang_ng_paglipat] = [ @x + x, @y + y ]
58
+ bilang_ng_paglipat += 1
59
+ wakas
60
+ wakas
61
+ wakas
62
+ ang_posisyon
63
+ wakas
64
+
65
+ ang kanan
66
+ Piyesa.kumatawan(@x + 1, @y, @piyesa)
67
+ wakas
68
+
69
+ ang kaliwa
70
+ Piyesa.kumatawan(@x - 1, @y, @piyesa)
71
+ wakas
72
+
73
+ ang mahulog
74
+ Piyesa.kumatawan(@x, @y + 1, @piyesa)
75
+ wakas
76
+
77
+ ang pagikot
78
+ pansamantala = Array.kumatawan(4){ Array.kumatawan(4, 0)}
79
+ @piyesa.bilang_bawat_isa na_ganito |linya, y|
80
+ linya.bilang_bawat_isa na_ganito |l, x|
81
+ pansamantala[x][y] = l
82
+ wakas
83
+ wakas
84
+ pansamantala.bilang_bawat_isa na_ganito |linya, i|
85
+ pansamantala[i] = linya.baliktad
86
+ wakas
87
+ Piyesa.kumatawan(@x, @y, pansamantala)
88
+ wakas
89
+
90
+ ang bagong_bloke
91
+ rnd = rand(MGA_PIYESA.haba)
92
+ MGA_PIYESA[rnd]
93
+ wakas
94
+ wakas
95
+
96
+ grupo Pananda
97
+ WALA = 0
98
+ PADER = 1
99
+ AKTIBO = 2
100
+ NAKALINYA = 3
101
+ wakas
102
+
103
+ bilang Babagsakan
104
+ LAWAK = 11
105
+ TAAS = 20
106
+ DAMI = 40
107
+ PADER_LETRA = "🀫 "
108
+ BLOCK_LETRA = "⚀ "
109
+ WALA_LETRA = " "
110
+ katangian :dako
111
+
112
+ ang initialize
113
+ @sakop = gagalawan
114
+ @dako = 0
115
+ wakas
116
+
117
+ ang burahin
118
+ @sakop.bilang_bawat_isa na_ganito |linya, y|
119
+ linya.bilang_bawat_isa na_ganito |l, x|
120
+ @sakop[y][x] = 0 kapag l == Pananda::AKTIBO
121
+ wakas
122
+ wakas
123
+ wakas
124
+
125
+ ang burahin_ang_linya
126
+ @sakop.bilang_bawat_isa na_ganito |linya, y|
127
+ kapag linya == [Pananda::PADER, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::NAKALINYA, Pananda::PADER]
128
+ @dako += 1
129
+ @sakop.delete_at(y)
130
+ @sakop.insert(0, [Pananda::PADER, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::WALA, Pananda::PADER])
131
+ wakas
132
+ wakas
133
+ wakas
134
+
135
+ ang tapos_na?
136
+ @dako >= 40
137
+ wakas
138
+
139
+ ang ay_bloke?(susunod_na_posisyon)
140
+ resulta = mali
141
+ susunod_na_posisyon.isaisahin na_ganito |pos|
142
+ kapag isang_bloke?(pos[0], pos[1])
143
+ resulta = tama
144
+ wakas
145
+ wakas
146
+ resulta
147
+ wakas
148
+
149
+ ang ipirme(kasulukuyang_posisyon)
150
+ kasulukuyang_posisyon.isaisahin na_ganito |pos|
151
+ @sakop[pos[1]][pos[0]] = Pananda::NAKALINYA
152
+ wakas
153
+ wakas
154
+
155
+ ang bago_ipirme(kasulukuyang_posisyon)
156
+ kasulukuyang_posisyon.isaisahin na_ganito |pos|
157
+ @sakop[pos[1]][pos[0]] = Pananda::AKTIBO
158
+ wakas
159
+ wakas
160
+
161
+ ang write
162
+ teksto = "\n\e[25D"
163
+ @sakop.isaisahin na_ganito |linya|
164
+ linya.isaisahin na_ganito |l|
165
+ kapag l == Pananda::WALA
166
+ teksto += WALA_LETRA
167
+ kung_kapag l == Pananda::AKTIBO || l == Pananda::NAKALINYA
168
+ teksto += BLOCK_LETRA
169
+ kung_hindi
170
+ teksto += PADER_LETRA
171
+ wakas
172
+ wakas
173
+ teksto += "\n\e[25D"
174
+ wakas
175
+ mag_print teksto
176
+ wakas
177
+
178
+ private
179
+
180
+ ang isang_bloke?(x, y)
181
+ @sakop[y][x] == Pananda::PADER || @sakop[y][x] == Pananda::NAKALINYA
182
+ wakas
183
+
184
+ ang gagalawan
185
+ f = []
186
+ TAAS.beses na_ganito |i|
187
+ linya = []
188
+ LAWAK.beses na_ganito |j|
189
+ linya[j] = (j == 0 || j == LAWAK - 1 || i == TAAS - 1) ? Pananda::PADER : Pananda::WALA
190
+ wakas
191
+ f[i] = linya
192
+ wakas
193
+ ibalik_ang f
194
+ wakas
195
+ wakas
196
+
197
+ ang burahin_ang_screen
198
+ print "\x1b[2J\x1b[0;0H"
199
+ wakas
200
+
201
+ ang mahulog_to_bloke(piyesa, sakop)
202
+ resulta = piyesa
203
+ loop na_ganito
204
+ susunod_na_posisyon = resulta.mahulog.magiba_ng_posisyon
205
+ kapag sakop.ay_bloke?(susunod_na_posisyon)
206
+ isauli_ang resulta
207
+ kung_hindi
208
+ resulta = resulta.mahulog
209
+ wakas
210
+ wakas
211
+ wakas
212
+
213
+ ang tetris
214
+ burahin_ang_screen
215
+
216
+ sakop = Babagsakan.kumatawan
217
+ sakop.write
218
+
219
+ piyesa = Piyesa.kumatawan(5, 0)
220
+
221
+ pinindot = 'n'
222
+ thread = Thread::start na_ganito
223
+ habang (pinindot = STDIN.getch)
224
+ kapag pinindot == "\C-c"
225
+ ihinto
226
+ wakas
227
+ wakas
228
+ wakas
229
+
230
+ loop na_ganito
231
+ matulog(0.2)
232
+ sarili.burahin_ang_screen
233
+ mag_print "kaliwa: [left key], kanan: [right key], mahulog: [space], ikutin: [up key], q: exit \e[25D"
234
+ mag_print "\e[25D#{sakop.dako}\e[25D"
235
+
236
+ kung_sakaling pinindot
237
+ ay 'q' dapat
238
+ exit
239
+ ay "D" dapat
240
+ pansamantala = piyesa.kaliwa
241
+ ay "C" dapat
242
+ pansamantala = piyesa.kanan
243
+ ay 'B' dapat
244
+ pansamantala = sarili.mahulog_to_bloke(piyesa, sakop)
245
+ ay ' ' dapat
246
+ pansamantala = sarili.mahulog_to_bloke(piyesa, sakop)
247
+ ay "A" dapat
248
+ pansamantala = piyesa.pagikot
249
+ kung_hindi
250
+ pansamantala = piyesa.mahulog
251
+ wakas
252
+
253
+ susunod_na_posisyon = pansamantala.magiba_ng_posisyon
254
+
255
+ kapag !sakop.ay_bloke?(susunod_na_posisyon)
256
+ sakop.bago_ipirme(susunod_na_posisyon)
257
+ piyesa = pansamantala
258
+
259
+ kung_kapag pinindot != 'n'
260
+ piyesa = piyesa
261
+ kung_hindi
262
+ sakop.ipirme(piyesa.magiba_ng_posisyon)
263
+ piyesa = Piyesa.kumatawan(5, 0)
264
+ susunod_na_posisyon = piyesa.magiba_ng_posisyon
265
+ kapag sakop.ay_bloke?(susunod_na_posisyon)
266
+ mag_print "game over"
267
+ ihinto
268
+ wakas
269
+ wakas
270
+
271
+ sakop.write
272
+ sakop.burahin
273
+ sakop.burahin_ang_linya
274
+
275
+ pinindot = 'n'
276
+ kapag sakop.tapos_na?
277
+ mag_print "matagumpay!"
278
+ ihinto
279
+ wakas
280
+ wakas
281
+ Thread.kill(thread)
282
+ wakas
283
+ wakas
284
+
285
+
286
+ Batotris.tetris
@@ -1,7 +1,7 @@
1
1
  grupo Tinapay
2
2
  bilang Donut
3
3
  ang flavor
4
- iprint 'Strawberry!'
4
+ mag_print 'Strawberry!'
5
5
  wakas
6
6
  wakas
7
7
  wakas
@@ -6,4 +6,4 @@ papel = sakaling panulat_mo
6
6
  maliban_sa_mga_ito "intermediate paper"
7
7
  wakas
8
8
 
9
- iprint "Ang papel na gagamitin mo ay #{papel}"
9
+ mag_print "Ang papel na gagamitin mo ay #{papel}"
@@ -1,7 +1,7 @@
1
1
  may_buhay = totoo
2
2
 
3
3
  habang may_buhay
4
- iprint 'may pag-asa!'
4
+ mag_print 'may pag-asa!'
5
5
 
6
6
  hinto
7
7
  wakas
@@ -0,0 +1,8 @@
1
+ nakamit = mali
2
+
3
+ habang nakamit == mali
4
+ mag_print 'hindi pa nakakamit!'
5
+ hinto
6
+ wakas
7
+
8
+ mag_print 'nakamit na!'
@@ -1,17 +1,17 @@
1
1
  # isaisahin loop
2
2
  ['a','b','c','d'].isaisahin na_ganito |titik|
3
- iprint "Ang titik ay #{titik}"
3
+ mag_print "Ang titik ay #{titik}"
4
4
  wakas
5
5
 
6
6
  # isaisahin loop on range
7
7
  (1..10).isaisahin na_ganito |numero|
8
- iprint "Ang numero ay #{numero}"
8
+ mag_print "Ang numero ay #{numero}"
9
9
  wakas
10
10
 
11
11
  # while loop
12
12
  numero = 1
13
13
  habang numero < 10 ganito
14
- iprint "Ang numero ay #{numero} na"
14
+ mag_print "Ang numero ay #{numero} na"
15
15
  numero += 1
16
16
  wakas
17
17
 
@@ -19,7 +19,7 @@ wakas
19
19
  numero = 0
20
20
  panghuling_numero = 5
21
21
  simula
22
- iprint "Ang numero ay #{numero} na"
22
+ mag_print "Ang numero ay #{numero} na"
23
23
  numero += 1
24
24
  wakas habang numero < panghuling_numero
25
25
 
@@ -27,7 +27,7 @@ wakas habang numero < panghuling_numero
27
27
  numero = 0
28
28
  panghuling_numero = 5
29
29
  hanggang numero > panghuling_numero ganito
30
- iprint "Ang numero ay #{numero} na"
30
+ mag_print "Ang numero ay #{numero} na"
31
31
  numero += 1
32
32
  wakas
33
33
 
@@ -35,11 +35,11 @@ wakas
35
35
  numero = 0
36
36
  panghuling_numero = 5
37
37
  simula
38
- iprint "Ang numero ay #{numero} na"
38
+ mag_print "Ang numero ay #{numero} na"
39
39
  numero += 1
40
40
  wakas hanggang numero < panghuling_numero
41
41
 
42
42
  # for loop
43
43
  para_ang numero na_nasa 0..5
44
- iprint "Ang numero ay #{numero} na"
44
+ mag_print "Ang numero ay #{numero} na"
45
45
  wakas
@@ -0,0 +1,5 @@
1
+ kapag 1 > 0
2
+ mag_print "Kumusta mundo!"
3
+ kung_hindi
4
+ mag_print "Mayroong sira"
5
+ wakas
@@ -1,14 +1,14 @@
1
1
  ang gumawaNgID
2
- iprint "------------------------------------------"
2
+ mag_print "------------------------------------------"
3
3
 
4
4
  magbigay_daan
5
5
 
6
- iprint "------------------------------------------"
6
+ mag_print "------------------------------------------"
7
7
  wakas
8
8
 
9
9
  ang ID(impormasyon = {})
10
10
  gumawaNgID na_ganito
11
- iprint <<-KATAPUSAN
11
+ mag_print <<-KATAPUSAN
12
12
  Pangalan: #{impormasyon[:pangalan]}
13
13
  Edad: #{impormasyon[:edad]}
14
14
  Tirahan: #{impormasyon[:tirahan]}
@@ -5,8 +5,8 @@ mga_persona = [
5
5
 
6
6
  mga_persona.isaisahin ng_ganito |tao|
7
7
  malibang tao[:kasarian] == 'lalaki'
8
- iprint "si #{tao[:pangalan]} ay babae!"
8
+ mag_print "si #{tao[:pangalan]} ay babae!"
9
9
  maliban_dito
10
- iprint "si #{tao[:pangalan]} ay lalaki!"
10
+ mag_print "si #{tao[:pangalan]} ay lalaki!"
11
11
  wakas
12
12
  wakas