ruby-japanize 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/japanize/base.rb CHANGED
@@ -22,7 +22,11 @@ require 'japanize/core'
22
22
  別名 :自動配置か?, :autoload?
23
23
  # 別名 :部で評価, :module_eval # japanize/coreで定義済み
24
24
  # 別名 :組で評価, :class_eval # japanize/coreで定義済み
25
+ 別名 :部で実行, :module_exec
26
+ 別名 :組で実行, :class_exec
25
27
  別名 :組の変数は定義済みか?, :class_variable_defined?
28
+ 別名 :組の変数を取得, :class_variable_get
29
+ 別名 :組の変数を設定, :class_variable_set
26
30
  別名 :組の変数の一覧, :class_variables
27
31
  # 別名 :定数は定義済みか?, :const_defined? # japanize/coreで定義済み
28
32
  # 別名 :定数を取得, :const_get # japanize/coreで定義済み
@@ -31,7 +35,7 @@ require 'japanize/core'
31
35
  # 別名 :定数を設定, :const_set # japanize/coreで定義済み
32
36
  別名 :定数の一覧, :constants
33
37
  # 別名 :定義, :define_method # japanize/coreで定義済み
34
- 別名 :凍結する, :freeze
38
+ 別名 :定数を非推奨にする, :deprecate_constant
35
39
  別名 :付加, :include
36
40
  別名 :付加済みか?, :include?
37
41
  別名 :含まれる部の一覧, :included_modules
@@ -41,24 +45,22 @@ require 'japanize/core'
41
45
  別名 :操作は定義済みか?, :method_defined?
42
46
  別名 :付与, :prepend
43
47
  別名 :組が持つ操作を秘密にする, :private_class_method
48
+ 別名 :秘密の定数, :private_constant
44
49
  別名 :生成物が持つ秘密の操作の一覧, :private_instance_methods
45
50
  別名 :秘密の操作は定義済みか?, :private_method_defined?
46
51
  別名 :生成物が持つ保護された操作の一覧, :protected_instance_methods
47
52
  別名 :保護された操作は定義済みか?, :protected_method_defined?
48
53
  別名 :組が持つ操作を公開する, :public_class_method
54
+ 別名 :公開された定数, :public_constant
49
55
  別名 :生成物が持つ公開された操作を取得, :public_instance_method
50
56
  別名 :生成物が持つ公開された操作の一覧, :public_instance_methods
51
57
  別名 :公開された操作は定義済みか?, :public_method_defined?
52
58
  別名 :組の変数を除去する, :remove_class_variable
53
59
  別名 :操作を除去する, :remove_method
60
+ 別名 :特異組か?, :singleton_class?
54
61
  別名 :操作を未定義にする, :undef_method
55
62
 
56
63
  別名 :機能を付加する, :append_features
57
- 別名 :部で実行, :module_exec
58
- 別名 :組で実行, :class_exec
59
- 別名 :組の変数を取得, :class_variable_get
60
- 別名 :組の変数を設定, :class_variable_set
61
- 別名 :定数を非推奨にする, :deprecate_constant
62
64
  別名 :物を拡張する, :extend_object
63
65
  別名 :拡張した時, :extended
64
66
  定義(:extended) {|物| 拡張した時(物) }
@@ -75,21 +77,13 @@ require 'japanize/core'
75
77
  別名 :付与された時, :prepended
76
78
  定義(:prepended) {|組または部| 付与された時(組または部) }
77
79
  # 別名 :秘密, :private # japanize/coreで定義済み
78
- 別名 :秘密の定数, :private_constant
79
80
  別名 :保護, :protected
80
81
  別名 :公開, :public
81
- 別名 :公開された定数, :public_constant
82
82
  別名 :限定拡張, :refine
83
83
  別名 :定数を除去する, :remove_const
84
- 別名 :特異組か?, :singleton_class?
85
84
  別名 :限定拡張を使用, :using
86
85
 
87
86
  秘密 :機能を付加する,
88
- :部で実行,
89
- :組で実行,
90
- :組の変数を取得,
91
- :組の変数を設定,
92
- :定数を非推奨にする,
93
87
  :物を拡張する,
94
88
  :拡張した時, :extended,
95
89
  :付加された時, :included,
@@ -98,13 +92,10 @@ require 'japanize/core'
98
92
  :操作が未定義にされた時, :method_undefined,
99
93
  :機能を付与する,
100
94
  :付与された時, :prepended,
101
- :秘密の定数,
102
95
  :保護,
103
96
  :公開,
104
- :公開された定数,
105
97
  :限定拡張,
106
98
  :定数を除去する,
107
- :特異組か?,
108
99
  :限定拡張を使用
109
100
 
110
101
  定義(:日本語の定数を移譲) {|移譲先の部, 名前, *名前の一覧, 上書き: 偽値|
@@ -165,7 +156,11 @@ require 'japanize/core'
165
156
  }
166
157
 
167
158
  別名 :生成, :allocate
168
- 定義(:新規) {|*引数, &塊| new(*引数, &塊) } # 個別の組でnewを再定義するかもしれないので別名にしない
159
+ if (_バージョンが2_7以上か?) then
160
+ 定義(:新規) {|*引数, **名前付き引数, &塊| new(*引数, **名前付き引数, &塊) } # 個別の組でnewを再定義するかもしれないので別名にしない
161
+ else
162
+ 定義(:新規) {|*引数, &塊| new(*引数, &塊) } # 個別の組でnewを再定義するかもしれないので別名にしない
163
+ end
169
164
  別名 :原型, :superclass
170
165
 
171
166
  別名 :継承された時, :inherited
@@ -181,8 +176,17 @@ require 'japanize/core'
181
176
  別名 :生成物で評価, :instance_eval
182
177
  別名 :生成物で実行, :instance_exec
183
178
 
179
+ 別名 :初期化, :initialize
184
180
  別名 :不明な操作, :method_missing
185
- 定義(:method_missing) {|名前, *引数, &塊| 不明な操作(名前, *引数, &塊) }
181
+ if (::JA::日本語化._バージョンが2_7以上か?) then
182
+ 定義(:method_missing) {|名前, *引数, **名前付き引数, &塊|
183
+ 不明な操作(名前, *引数, **名前付き引数, &塊)
184
+ }
185
+ else
186
+ 定義(:method_missing) {|名前, *引数, &塊|
187
+ 不明な操作(名前, *引数, &塊)
188
+ }
189
+ end
186
190
  別名 :特異操作が追加された時, :singleton_method_added
187
191
  定義(:singleton_method_added) {|名前| 特異操作が追加された時(名前) }
188
192
  別名 :特異操作が除去された時, :singleton_method_removed
@@ -190,27 +194,28 @@ require 'japanize/core'
190
194
  別名 :特異操作が未定義にされた時, :singleton_method_undefined
191
195
  定義(:singleton_method_undefined) {|名前| 特異操作が未定義にされた時(名前) }
192
196
 
193
- 秘密 :不明な操作, :method_missing,
197
+ 秘密 :初期化,
198
+ :不明な操作, :method_missing,
194
199
  :特異操作が追加された時, :singleton_method_added,
195
200
  :特異操作が除去された時, :singleton_method_removed,
196
201
  :特異操作が未定義にされた時, :singleton_method_undefined
197
202
  }
198
203
 
199
- 組(物) {
204
+ # 物の操作は実際は核で定義されている
205
+ 部(核) {
200
206
  別名 :送信, :send
201
207
  別名 :生成元, :class
202
- 定義(:複写) {|*引数, &塊| clone(*引数, &塊) } # cloneを継承先で再定義するかもしれないので別名にしない
203
- 定義(:複製) {|*引数, &塊| dup(*引数, &塊) } # dupを継承先で再定義するかもしれないので別名にしない
208
+ # 別名 :複写, :clone # cloneを継承先で再定義するかもしれないので別名にしない
209
+ # 別名 :複製, :dup # dupを継承先で再定義するかもしれないので別名にしない
204
210
  別名 :特異操作の定義, :define_singleton_method
205
211
  別名 :表示する, :display
206
212
  別名 :列挙に変換, :to_enum
207
213
  別名 :列挙する, :enum_for
208
- 定義(:等しいか?) {|他の物| eql?(他の物) } # eql?を継承先で再定義するかもしれないので別名にしない
214
+ # 別名 :等しいか?, :eql? # eql?を継承先で再定義するかもしれないので別名にしない
209
215
  別名 :拡張, :extend
210
- 別名 :凍結する, :freeze
211
216
  別名 :凍結済みか?, :frozen?
212
- 定義(:ハッシュ値) { hash } # hashを継承先で再定義するかもしれないので別名にしない
213
- 定義(:検査) {|*引数, &塊| inspect(*引数, &塊) } # inspectを継承先で再定義するかもしれないので別名にしない
217
+ # 別名 :ハッシュ値, :hash # hashを継承先で再定義するかもしれないので別名にしない
218
+ # 別名 :検査, :inspect # inspectを継承先で再定義するかもしれないので別名にしない
214
219
  別名 :生成物か?, :instance_of?
215
220
  別名 :生成物の変数は定義済みか?, :instance_variable_defined?
216
221
  別名 :生成物の変数を取得, :instance_variable_get
@@ -229,7 +234,7 @@ require 'japanize/core'
229
234
  別名 :公開された範囲で送信, :public_send
230
235
  別名 :生成物の変数を除去する, :remove_instance_variable
231
236
  別名 :応答するか?, :respond_to?
232
- # 別名 :特異組, :singleton_class # japanize/coreで定義済み
237
+ # 別名 :特異組, :singleton_class # japanize/coreで定義済み
233
238
  別名 :特異操作を取得, :singleton_method
234
239
  別名 :特異操作の一覧, :singleton_methods
235
240
  別名 :汚染させる, :taint
@@ -237,26 +242,45 @@ require 'japanize/core'
237
242
  別名 :蛇口, :tap
238
243
  別名 :それから, :then
239
244
  別名 :自分を委ねる, :yield_self
240
- 定義(:文字列に変換) {|*引数, &塊| to_s(*引数, &塊) } # to_sを継承先で再定義するかもしれないので別名にしない
245
+ # 別名 :文字列に変換, :to_s # to_sを継承先で再定義するかもしれないので別名にしない
241
246
  別名 :汚染を除去する, :untaint
242
247
 
243
- 別名 :初期化, :initialize
244
248
  別名 :不明な応答か?, :respond_to_missing?
245
249
 
246
- 秘密 :初期化,
247
- :不明な応答か?
250
+ 秘密 :不明な応答か?
251
+ }
252
+
253
+ 組(物) {
254
+ 定義(:等しいか?) {|他の物| eql?(他の物) } # eql?を継承先で再定義するかもしれないので別名にしない
255
+ 定義(:凍結する) { freeze } # freezeを継承先で再定義するかもしれないので別名にしない
256
+ 定義(:ハッシュ値) { hash } # hashを継承先で再定義するかもしれないので別名にしない
257
+ if (_バージョンが2_7以上か?) then
258
+ 定義(:複写) {|*引数, **名前付き引数, &塊| clone(*引数, **名前付き引数, &塊) } # cloneを継承先で再定義するかもしれないので別名にしない
259
+ 定義(:複製) {|*引数, **名前付き引数, &塊| dup(*引数, **名前付き引数, &塊) } # dupを継承先で再定義するかもしれないので別名にしない
260
+ 定義(:検査) {|*引数, **名前付き引数, &塊| inspect(*引数, **名前付き引数, &塊) } # inspectを継承先で再定義するかもしれないので別名にしない
261
+ 定義(:文字列に変換) {|*引数, **名前付き引数, &塊| to_s(*引数, **名前付き引数, &塊) } # to_sを継承先で再定義するかもしれないので別名にしない
262
+ else
263
+ 定義(:複写) {|*引数, &塊| clone(*引数, &塊) } # cloneを継承先で再定義するかもしれないので別名にしない
264
+ 定義(:複製) {|*引数, &塊| dup(*引数, &塊) } # dupを継承先で再定義するかもしれないので別名にしない
265
+ 定義(:検査) {|*引数, &塊| inspect(*引数, &塊) } # inspectを継承先で再定義するかもしれないので別名にしない
266
+ 定義(:文字列に変換) {|*引数, &塊| to_s(*引数, &塊) } # to_sを継承先で再定義するかもしれないので別名にしない
267
+ end
248
268
  }
249
269
 
250
270
  部(日本語化) {
251
271
  # initializeを直接上書きすると警告が出るので、間接的に上書きする。
252
272
  部(:物の初期化を日本語化する) {
253
- 定義(:initialize) {|*引数, &塊| 初期化(*引数, &塊) }
273
+ if (_バージョンが2_7以上か?) then
274
+ 定義(:initialize) {|*引数, **名前付き引数, &塊| 初期化(*引数, **名前付き引数, &塊) }
275
+ else
276
+ 定義(:initialize) {|*引数, &塊| 初期化(*引数, &塊) }
277
+ end
254
278
  秘密 :initialize
255
279
  }
256
280
 
257
281
  # respond_to_missing?を直接上書きすると警告が出るので、間接的に上書きする。
258
282
  部(:物の不明な応答を日本語化する) {
259
- 定義(:respond_to_missing?) {|名前, *引数| 不明な応答か?(名前, *引数) }
283
+ 定義(:respond_to_missing?) {|名前, *引数| 不明な応答か?(名前, *引数) } # `**名前付き引数'を定義するとシステムスタックが超過する、何故?
260
284
  秘密 :respond_to_missing?
261
285
  }
262
286
 
@@ -269,61 +293,131 @@ require 'japanize/core'
269
293
  # 組の定義と被る変換関数を定義する。
270
294
  部(核) {
271
295
  部(:変換関数の日本語化) {
272
- 定義(:配列) {|*引数|
273
- if (引数.empty?) then
274
- Array
275
- else
276
- Array(*引数)
277
- end
278
- }
296
+ if (_バージョンが2_7以上か?) then
297
+ 定義(:配列) {|*引数, **名前付き引数, &塊|
298
+ if (引数.empty? && 名前付き引数.empty? && ! 塊) then
299
+ Array
300
+ else
301
+ Array(*引数, **名前付き引数, &塊)
302
+ end
303
+ }
304
+ else
305
+ 定義(:配列) {|*引数, &塊|
306
+ if (引数.empty? &&! 塊) then
307
+ Array
308
+ else
309
+ Array(*引数, &塊)
310
+ end
311
+ }
312
+ end
279
313
 
280
- 定義(:複素数) {|*引数|
281
- if (引数.empty?) then
282
- Complex
283
- else
284
- Complex(*引数)
285
- end
286
- }
314
+ if (_バージョンが2_7以上か?) then
315
+ 定義(:複素数) {|*引数, **名前付き引数, &塊|
316
+ if (引数.empty? && 名前付き引数.empty? && ! 塊) then
317
+ Complex
318
+ else
319
+ Complex(*引数, **名前付き引数, &塊)
320
+ end
321
+ }
322
+ else
323
+ 定義(:複素数) {|*引数, &塊|
324
+ if (引数.empty? && ! 塊) then
325
+ Complex
326
+ else
327
+ Complex(*引数, &塊)
328
+ end
329
+ }
330
+ end
287
331
 
288
- 定義(:不動小数点) {|*引数|
289
- if (引数.empty?) then
290
- Float
291
- else
292
- Float(*引数)
293
- end
294
- }
332
+ if (_バージョンが2_7以上か?) then
333
+ 定義(:不動小数点) {|*引数, **名前付き引数, &塊|
334
+ if (引数.empty? && 名前付き引数.empty? && ! 塊) then
335
+ Float
336
+ else
337
+ Float(*引数, **名前付き引数, &塊)
338
+ end
339
+ }
340
+ else
341
+ 定義(:不動小数点) {|*引数, &塊|
342
+ if (引数.empty? && ! 塊) then
343
+ Float
344
+ else
345
+ Float(*引数, &塊)
346
+ end
347
+ }
348
+ end
295
349
 
296
- 定義(:連想配列) {|*引数|
297
- if (引数.empty?) then
298
- Hash
299
- else
300
- Hash(*引数)
301
- end
302
- }
350
+ if (_バージョンが2_7以上か?) then
351
+ 定義(:連想配列) {|*引数, **名前付き引数, &塊|
352
+ if (引数.empty? && 名前付き引数.empty? && ! 塊) then
353
+ Hash
354
+ else
355
+ Hash(*引数, **名前付き引数, &塊)
356
+ end
357
+ }
358
+ else
359
+ 定義(:連想配列) {|*引数, &塊|
360
+ if (引数.empty? && ! 塊) then
361
+ Hash
362
+ else
363
+ Hash(*引数, &塊)
364
+ end
365
+ }
366
+ end
303
367
 
304
- 定義(:整数) {|*引数|
305
- if (引数.empty?) then
306
- Integer
307
- else
308
- Integer(*引数)
309
- end
310
- }
368
+ if (_バージョンが2_7以上か?) then
369
+ 定義(:整数) {|*引数, **名前付き引数, &塊|
370
+ if (引数.empty? && 名前付き引数.empty? && ! 塊) then
371
+ Integer
372
+ else
373
+ Integer(*引数, **名前付き引数, &塊)
374
+ end
375
+ }
376
+ else
377
+ 定義(:整数) {|*引数, &塊|
378
+ if (引数.empty? &&! 塊) then
379
+ Integer
380
+ else
381
+ Integer(*引数, &塊)
382
+ end
383
+ }
384
+ end
311
385
 
312
- 定義(:有理数) {|*引数|
313
- if (引数.empty?) then
314
- Rational
315
- else
316
- Rational(*引数)
317
- end
318
- }
386
+ if (_バージョンが2_7以上か?) then
387
+ 定義(:有理数) {|*引数, **名前付き引数, &塊|
388
+ if (引数.empty? && 名前付き引数.empty? && ! 塊) then
389
+ Rational
390
+ else
391
+ Rational(*引数, **名前付き引数, &塊)
392
+ end
393
+ }
394
+ else
395
+ 定義(:有理数) {|*引数, &塊|
396
+ if (引数.empty? && ! 塊) then
397
+ Rational
398
+ else
399
+ Rational(*引数, &塊)
400
+ end
401
+ }
402
+ end
319
403
 
320
- 定義(:文字列) {|*引数|
321
- if (引数.empty?) then
322
- String
323
- else
324
- String(*引数)
325
- end
326
- }
404
+ if (_バージョンが2_7以上か?) then
405
+ 定義(:文字列) {|*引数, **名前付き引数, &塊|
406
+ if (引数.empty? && 名前付き引数.empty? && ! 塊) then
407
+ String
408
+ else
409
+ String(*引数, **名前付き引数, &塊)
410
+ end
411
+ }
412
+ else
413
+ 定義(:文字列) {|*引数, &塊|
414
+ if (引数.empty? && ! 塊) then
415
+ String
416
+ else
417
+ String(*引数, &塊)
418
+ end
419
+ }
420
+ end
327
421
  }
328
422
  拡張 変換関数の日本語化
329
423
  }
@@ -466,7 +560,8 @@ require 'japanize/core'
466
560
 
467
561
  組(例外) {
468
562
  特異組{
469
- 別名 :例外を生成, :exception
563
+ 別名 :例外を生成, :exception
564
+ 別名 :端末に向かっているか?, :to_tty?
470
565
  }
471
566
 
472
567
  別名 :呼び出し履歴, :backtrace
@@ -477,21 +572,35 @@ require 'japanize/core'
477
572
  # 別名 :検査, :inspect # 物で定義済み
478
573
  別名 :伝文, :message
479
574
  # 別名 :文字列に変換, :to_s # 物で定義済み
575
+ 別名 :応答するか?, :respond_to?
480
576
  別名 :呼び出し履歴を設定, :set_backtrace
481
577
  }
482
578
 
483
579
  部(日本語化) {
484
580
  部(:不明な操作の呼び出し履歴を消す) {
485
- 定義(:不明な操作) {|名前, *引数, &塊|
486
- begin
487
- super(名前, *引数, &塊)
488
- rescue 名前解決に失敗 => ある例外
489
- # 物#不明な操作 Object#method_missing の履歴を消して、元の場所で例外が発生したように見せる
490
- ある例外.呼び出し履歴.shift(2)
491
- ある例外.呼び出し履歴の場所の一覧.shift(2)
492
- 例外を発生 ある例外
493
- end
494
- }
581
+ if (_バージョンが2_7以上か?) then
582
+ 定義(:不明な操作) {|名前, *引数, **名前付き引数, &塊|
583
+ begin
584
+ super(名前, *引数, **名前付き引数, &塊)
585
+ rescue ::JA::名前解決に失敗 => ある例外
586
+ # 物#不明な操作 と Object#method_missing の履歴を消して、元の場所で例外が発生したように見せる
587
+ ある例外.呼び出し履歴.shift(2)
588
+ ある例外.呼び出し履歴の場所の一覧.shift(2)
589
+ ::JA::核.例外を発生 ある例外
590
+ end
591
+ }
592
+ else
593
+ 定義(:不明な操作) {|名前, *引数, &塊|
594
+ begin
595
+ super(名前, *引数, &塊)
596
+ rescue ::JA::名前解決に失敗 => ある例外
597
+ # 物#不明な操作 と Object#method_missing の履歴を消して、元の場所で例外が発生したように見せる
598
+ ある例外.呼び出し履歴.shift(2)
599
+ ある例外.呼び出し履歴の場所の一覧.shift(2)
600
+ ::JA::核.例外を発生 ある例外
601
+ end
602
+ }
603
+ end
495
604
  }
496
605
 
497
606
  組(物の土台) {
@@ -552,9 +661,15 @@ require 'japanize/core'
552
661
  super(名前)
553
662
  if (本来の名前 = 日本語化対応表[名前]) then
554
663
  if (! (操作は定義済みか? 本来の名前) || (生成物が持つ操作を取得(名前) != 生成物が持つ操作を取得(本来の名前))) then
555
- 定義(本来の名前) {|*引数, &塊|
556
- __送信__(名前, *引数, &塊)
557
- }
664
+ if (_バージョンが2_7以上か?) then
665
+ 定義(本来の名前) {|*引数, **名前付き引数, &塊|
666
+ __送信__(名前, *引数, **名前付き引数, &塊)
667
+ }
668
+ else
669
+ 定義(本来の名前) {|*引数, &塊|
670
+ __送信__(名前, *引数, &塊)
671
+ }
672
+ end
558
673
  end
559
674
  end
560
675
  }
@@ -589,9 +704,15 @@ require 'japanize/core'
589
704
  if (本来の名前 = 日本語化対応表[名前]) then
590
705
  特異組{
591
706
  if (! (操作は定義済みか? 本来の名前) || (生成物が持つ操作を取得(名前) != 生成物が持つ操作を取得(本来の名前))) then
592
- 定義(本来の名前) {|*引数, &塊|
593
- __送信__(名前, *引数, &塊)
594
- }
707
+ if (_バージョンが2_7以上か?) then
708
+ 定義(本来の名前) {|*引数, **名前付き引数, &塊|
709
+ __送信__(名前, *引数, **名前付き引数, &塊)
710
+ }
711
+ else
712
+ 定義(本来の名前) {|*引数, &塊|
713
+ __送信__(名前, *引数, &塊)
714
+ }
715
+ end
595
716
  end
596
717
  }
597
718
  end