ruby-japanize 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/Gemfile +13 -0
  4. data/LICENSE.txt +21 -0
  5. data/README.md +1459 -0
  6. data/Rakefile +88 -0
  7. data/bin/console +14 -0
  8. data/bin/setup +8 -0
  9. data/lib/japanize/base.rb +652 -0
  10. data/lib/japanize/container.rb +213 -0
  11. data/lib/japanize/core.rb +194 -0
  12. data/lib/japanize/enum.rb +127 -0
  13. data/lib/japanize/errors.rb +79 -0
  14. data/lib/japanize/globals.rb +109 -0
  15. data/lib/japanize/io.rb +388 -0
  16. data/lib/japanize/names.rb +213 -0
  17. data/lib/japanize/num.rb +319 -0
  18. data/lib/japanize/process.rb +318 -0
  19. data/lib/japanize/string.rb +257 -0
  20. data/lib/japanize/syntax.rb +805 -0
  21. data/lib/japanize/sys.rb +174 -0
  22. data/lib/japanize/test_unit.rb +99 -0
  23. data/lib/japanize/thread.rb +143 -0
  24. data/lib/japanize/time.rb +82 -0
  25. data/lib/japanize/version.rb +12 -0
  26. data/lib/japanize.rb +24 -0
  27. data/ruby-japanize.gemspec +41 -0
  28. data/sample/README.md +33 -0
  29. data/sample/dir.rb +15 -0
  30. data/sample/eval.rb +48 -0
  31. data/sample/export.rb +44 -0
  32. data/sample/fact.rb +17 -0
  33. data/sample/fib.rb +13 -0
  34. data/sample/freq.rb +17 -0
  35. data/sample/fullpath.rb +29 -0
  36. data/sample/less.rb +19 -0
  37. data/sample/list.rb +86 -0
  38. data/sample/list2.rb +22 -0
  39. data/sample/list3.rb +23 -0
  40. data/sample/mine.rb +204 -0
  41. data/sample/mkproto.rb +33 -0
  42. data/sample/mpart.rb +48 -0
  43. data/sample/occur.rb +17 -0
  44. data/sample/occur2.rb +17 -0
  45. data/sample/philos.rb +57 -0
  46. data/sample/pi.rb +20 -0
  47. data/sample/rcs.dat +17 -0
  48. data/sample/rcs.rb +45 -0
  49. data/sample/sieve.rb +17 -0
  50. data/sample/time.rb +14 -0
  51. data/sample/trojan.rb +18 -0
  52. data/sample/uumerge.rb +47 -0
  53. metadata +164 -0
@@ -0,0 +1,652 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ require 'japanize/core'
4
+
5
+ 要求 'japanize/names'
6
+
7
+ 組(部) {
8
+ 特異組{
9
+ 別名 :定数の一覧, :constants
10
+ 別名 :入れ子, :nesting
11
+ 別名 :新規, :new
12
+ 別名 :使用中の部の一覧, :used_modules
13
+ }
14
+
15
+ # 別名 :別名, :alias_method # japanize/coreで定義済み
16
+ 別名 :原型の一覧, :ancestors
17
+ 別名 :属性, :attr
18
+ 別名 :読み書き属性, :attr_accessor
19
+ 別名 :読み取り属性, :attr_reader
20
+ 別名 :書き込み属性, :attr_writer
21
+ 別名 :自動配置, :autoload
22
+ 別名 :自動配置か?, :autoload?
23
+ # 別名 :部で評価, :module_eval # japanize/coreで定義済み
24
+ # 別名 :組で評価, :class_eval # japanize/coreで定義済み
25
+ 別名 :組の変数は定義済みか?, :class_variable_defined?
26
+ 別名 :組の変数の一覧, :class_variables
27
+ # 別名 :定数は定義済みか?, :const_defined? # japanize/coreで定義済み
28
+ # 別名 :定数を取得, :const_get # japanize/coreで定義済み
29
+ 別名 :不明な定数, :const_missing
30
+ 定義(:const_missing) {|名前| 不明な定数(名前) }
31
+ # 別名 :定数を設定, :const_set # japanize/coreで定義済み
32
+ 別名 :定数の一覧, :constants
33
+ # 別名 :定義, :define_method # japanize/coreで定義済み
34
+ 別名 :凍結する, :freeze
35
+ 別名 :付加, :include
36
+ 別名 :付加済みか?, :include?
37
+ 別名 :含まれる部の一覧, :included_modules
38
+ 別名 :名前, :name
39
+ 別名 :生成物が持つ操作を取得, :instance_method
40
+ 別名 :生成物が持つ操作の一覧, :instance_methods
41
+ 別名 :操作は定義済みか?, :method_defined?
42
+ 別名 :付与, :prepend
43
+ 別名 :組が持つ操作を秘密にする, :private_class_method
44
+ 別名 :生成物が持つ秘密の操作の一覧, :private_instance_methods
45
+ 別名 :秘密の操作は定義済みか?, :private_method_defined?
46
+ 別名 :生成物が持つ保護された操作の一覧, :protected_instance_methods
47
+ 別名 :保護された操作は定義済みか?, :protected_method_defined?
48
+ 別名 :組が持つ操作を公開する, :public_class_method
49
+ 別名 :生成物が持つ公開された操作を取得, :public_instance_method
50
+ 別名 :生成物が持つ公開された操作の一覧, :public_instance_methods
51
+ 別名 :公開された操作は定義済みか?, :public_method_defined?
52
+ 別名 :組の変数を除去する, :remove_class_variable
53
+ 別名 :操作を除去する, :remove_method
54
+ 別名 :操作を未定義にする, :undef_method
55
+
56
+ 別名 :機能を付加する, :append_features
57
+ 別名 :部で実行, :module_exec
58
+ 別名 :組で実行, :class_exec
59
+ 別名 :組の変数を取得, :class_variable_get
60
+ 別名 :組の変数を設定, :class_variable_set
61
+ 別名 :定数を非推奨にする, :deprecate_constant
62
+ 別名 :物を拡張する, :extend_object
63
+ 別名 :拡張した時, :extended
64
+ 定義(:extended) {|物| 拡張した時(物) }
65
+ 別名 :付加された時, :included
66
+ 定義(:included) {|組または部| 付加された時(組または部) }
67
+ 別名 :操作が追加された時, :method_added
68
+ 定義(:method_added) {|名前| 操作が追加された時(名前) }
69
+ 別名 :操作が除去された時, :method_removed
70
+ 定義(:method_removed) {|名前| 操作が除去された時(名前) }
71
+ 別名 :操作が未定義にされた時, :method_undefined
72
+ 定義(:method_undefined) {|名前| 操作が未定義にされた時(名前) }
73
+ # 別名 :部の関数, :module_function # japanize/coreで定義済み
74
+ 別名 :機能を付与する, :prepend_features
75
+ 別名 :付与された時, :prepended
76
+ 定義(:prepended) {|組または部| 付与された時(組または部) }
77
+ # 別名 :秘密, :private # japanize/coreで定義済み
78
+ 別名 :秘密の定数, :private_constant
79
+ 別名 :保護, :protected
80
+ 別名 :公開, :public
81
+ 別名 :公開された定数, :public_constant
82
+ 別名 :限定拡張, :refine
83
+ 別名 :定数を除去する, :remove_const
84
+ 別名 :特異組か?, :singleton_class?
85
+ 別名 :限定拡張を使用, :using
86
+
87
+ 秘密 :機能を付加する,
88
+ :部で実行,
89
+ :組で実行,
90
+ :組の変数を取得,
91
+ :組の変数を設定,
92
+ :定数を非推奨にする,
93
+ :物を拡張する,
94
+ :拡張した時, :extended,
95
+ :付加された時, :included,
96
+ :操作が追加された時, :method_added,
97
+ :操作が除去された時, :method_removed,
98
+ :操作が未定義にされた時, :method_undefined,
99
+ :機能を付与する,
100
+ :付与された時, :prepended,
101
+ :秘密の定数,
102
+ :保護,
103
+ :公開,
104
+ :公開された定数,
105
+ :限定拡張,
106
+ :定数を除去する,
107
+ :特異組か?,
108
+ :限定拡張を使用
109
+
110
+ 定義(:日本語の定数を移譲) {|移譲先の部, 名前, *名前の一覧, 上書き: 偽値|
111
+ 名前の一覧 = [ 名前 ] + 名前の一覧
112
+
113
+ 日本語の定数を移譲できる部 = 部.新規
114
+ 名前の一覧.each{|定数名| # スコープを作るためブロックにする
115
+ 移譲先の操作 = 移譲先の部.公開された操作を取得(定数名)
116
+ unless (移譲先の操作.parameters.empty?) then
117
+ 例外を発生 名前解決に失敗, "定数ではありません: #{定数名}"
118
+ end
119
+ 日本語の定数を移譲できる部.定義(定数名) {
120
+ 移譲先の部.公開された範囲で送信(定数名)
121
+ }
122
+ }
123
+
124
+ 特異組{
125
+ if (上書き) then
126
+ 付与 日本語の定数を移譲できる部
127
+ else
128
+ 付加 日本語の定数を移譲できる部
129
+ end
130
+ }
131
+
132
+ 自分
133
+ }
134
+
135
+ 定義(:日本語の定数を付加できること) {|名前, *名前の一覧|
136
+ 名前の一覧 = [ 名前 ] + 名前の一覧
137
+
138
+ 日本語の定数を付加できる部 = 部.新規
139
+ 部(日本語の定数を付加できる部) {
140
+ 定義(:付加された時) {|組または部|
141
+ super(組または部)
142
+ 組または部.日本語の定数を移譲(自分, *名前の一覧, 上書き: 偽値)
143
+ }
144
+
145
+ 定義(:付与された時) {|組または部|
146
+ super(組または部)
147
+ 組または部.日本語の定数を移譲(自分, *名前の一覧, 上書き: 真値)
148
+ }
149
+ }
150
+
151
+ 拡張 日本語の定数を付加できる部
152
+ }
153
+ }
154
+
155
+ 組(組) {
156
+ 操作を未定義にする :部の関数
157
+ 操作を未定義にする :物を拡張する
158
+ 操作を未定義にする :機能を付加する
159
+ 操作を未定義にする :機能を付与する
160
+ 操作を未定義にする :限定拡張
161
+ 操作を未定義にする :日本語の定数を付加できること
162
+
163
+ 特異組{
164
+ 別名 :新規, :new
165
+ }
166
+
167
+ 別名 :生成, :allocate
168
+ 定義(:新規) {|*引数, &塊| new(*引数, &塊) } # 個別の組でnewを再定義するかもしれないので別名にしない
169
+ 別名 :原型, :superclass
170
+
171
+ 別名 :継承された時, :inherited
172
+ 定義(:inherited) {|継承した組| 継承された時(継承した組) }
173
+
174
+ 秘密 :継承された時, :inherited
175
+ }
176
+
177
+ 組(物の土台) {
178
+ 別名 :__識別番号__, :__id__
179
+ 別名 :__送信__, :__send__
180
+ 定義(:同一か?) {|他の物| equal?(他の物) } # equal?を継承先で再定義するかもしれないので別名にしない
181
+ 別名 :生成物で評価, :instance_eval
182
+ 別名 :生成物で実行, :instance_exec
183
+
184
+ 別名 :不明な操作, :method_missing
185
+ 定義(:method_missing) {|名前, *引数, &塊| 不明な操作(名前, *引数, &塊) }
186
+ 別名 :特異操作が追加された時, :singleton_method_added
187
+ 定義(:singleton_method_added) {|名前| 特異操作が追加された時(名前) }
188
+ 別名 :特異操作が除去された時, :singleton_method_removed
189
+ 定義(:singleton_method_removed) {|名前| 特異操作が除去された時(名前) }
190
+ 別名 :特異操作が未定義にされた時, :singleton_method_undefined
191
+ 定義(:singleton_method_undefined) {|名前| 特異操作が未定義にされた時(名前) }
192
+
193
+ 秘密 :不明な操作, :method_missing,
194
+ :特異操作が追加された時, :singleton_method_added,
195
+ :特異操作が除去された時, :singleton_method_removed,
196
+ :特異操作が未定義にされた時, :singleton_method_undefined
197
+ }
198
+
199
+ 組(物) {
200
+ 別名 :送信, :send
201
+ 別名 :生成元, :class
202
+ 定義(:複写) {|*引数, &塊| clone(*引数, &塊) } # cloneを継承先で再定義するかもしれないので別名にしない
203
+ 定義(:複製) {|*引数, &塊| dup(*引数, &塊) } # dupを継承先で再定義するかもしれないので別名にしない
204
+ 別名 :特異操作の定義, :define_singleton_method
205
+ 別名 :表示する, :display
206
+ 別名 :列挙に変換, :to_enum
207
+ 別名 :列挙する, :enum_for
208
+ 定義(:等しいか?) {|他の物| eql?(他の物) } # eql?を継承先で再定義するかもしれないので別名にしない
209
+ 別名 :拡張, :extend
210
+ 別名 :凍結する, :freeze
211
+ 別名 :凍結済みか?, :frozen?
212
+ 定義(:ハッシュ値) { hash } # hashを継承先で再定義するかもしれないので別名にしない
213
+ 定義(:検査) {|*引数, &塊| inspect(*引数, &塊) } # inspectを継承先で再定義するかもしれないので別名にしない
214
+ 別名 :生成物か?, :instance_of?
215
+ 別名 :生成物の変数は定義済みか?, :instance_variable_defined?
216
+ 別名 :生成物の変数を取得, :instance_variable_get
217
+ 別名 :生成物の変数を設定, :instance_variable_set
218
+ 別名 :生成物の変数の一覧, :instance_variables
219
+ 別名 :一種か?, :is_a?
220
+ 別名 :自分自身, :itself
221
+ 別名 :操作を取得, :method
222
+ 別名 :操作の一覧, :methods
223
+ 別名 :無値か?, :nil?
224
+ 別名 :物の識別番号, :object_id
225
+ 別名 :秘密の操作の一覧, :private_methods
226
+ 別名 :保護された操作の一覧, :protected_methods
227
+ 別名 :公開された操作を取得, :public_method
228
+ 別名 :公開された操作の一覧, :public_methods
229
+ 別名 :公開された範囲で送信, :public_send
230
+ 別名 :生成物の変数を除去する, :remove_instance_variable
231
+ 別名 :応答するか?, :respond_to?
232
+ # 別名 :特異組, :singleton_class # japanize/coreで定義済み
233
+ 別名 :特異操作を取得, :singleton_method
234
+ 別名 :特異操作の一覧, :singleton_methods
235
+ 別名 :汚染させる, :taint
236
+ 別名 :汚染されているか?, :tainted?
237
+ 別名 :蛇口, :tap
238
+ 別名 :それから, :then
239
+ 別名 :自分を委ねる, :yield_self
240
+ 定義(:文字列に変換) {|*引数, &塊| to_s(*引数, &塊) } # to_sを継承先で再定義するかもしれないので別名にしない
241
+ 別名 :汚染を除去する, :untaint
242
+
243
+ 別名 :初期化, :initialize
244
+ 別名 :不明な応答か?, :respond_to_missing?
245
+
246
+ 秘密 :初期化,
247
+ :不明な応答か?
248
+ }
249
+
250
+ 部(日本語化) {
251
+ # initializeを直接上書きすると警告が出るので、間接的に上書きする。
252
+ 部(:物の初期化を日本語化する) {
253
+ 定義(:initialize) {|*引数, &塊| 初期化(*引数, &塊) }
254
+ 秘密 :initialize
255
+ }
256
+
257
+ # respond_to_missing?を直接上書きすると警告が出るので、間接的に上書きする。
258
+ 部(:物の不明な応答を日本語化する) {
259
+ 定義(:respond_to_missing?) {|名前, *引数| 不明な応答か?(名前, *引数) }
260
+ 秘密 :respond_to_missing?
261
+ }
262
+
263
+ 組(物) {
264
+ 付与 物の初期化を日本語化する
265
+ 付与 物の不明な応答を日本語化する
266
+ }
267
+ }
268
+
269
+ # 組の定義と被る変換関数を定義する。
270
+ 部(核) {
271
+ 部(:変換関数の日本語化) {
272
+ 定義(:配列) {|*引数|
273
+ if (引数.empty?) then
274
+ Array
275
+ else
276
+ Array(*引数)
277
+ end
278
+ }
279
+
280
+ 定義(:複素数) {|*引数|
281
+ if (引数.empty?) then
282
+ Complex
283
+ else
284
+ Complex(*引数)
285
+ end
286
+ }
287
+
288
+ 定義(:不動小数点) {|*引数|
289
+ if (引数.empty?) then
290
+ Float
291
+ else
292
+ Float(*引数)
293
+ end
294
+ }
295
+
296
+ 定義(:連想配列) {|*引数|
297
+ if (引数.empty?) then
298
+ Hash
299
+ else
300
+ Hash(*引数)
301
+ end
302
+ }
303
+
304
+ 定義(:整数) {|*引数|
305
+ if (引数.empty?) then
306
+ Integer
307
+ else
308
+ Integer(*引数)
309
+ end
310
+ }
311
+
312
+ 定義(:有理数) {|*引数|
313
+ if (引数.empty?) then
314
+ Rational
315
+ else
316
+ Rational(*引数)
317
+ end
318
+ }
319
+
320
+ 定義(:文字列) {|*引数|
321
+ if (引数.empty?) then
322
+ String
323
+ else
324
+ String(*引数)
325
+ end
326
+ }
327
+ }
328
+ 拡張 変換関数の日本語化
329
+ }
330
+
331
+ 部(日本語化) {
332
+ 拡張 核::変換関数の日本語化
333
+ 付与 核::変換関数の日本語化
334
+ }
335
+ 付加 核::変換関数の日本語化
336
+
337
+ 部(核) {
338
+ 別名 :__呼び出し先__, :__callee__
339
+ 別名 :__ディレクトリ__, :__dir__
340
+ 別名 :__操作名__, :__method__
341
+ 別名 :中断, :abort
342
+ 別名 :終了時に実行, :at_exit
343
+ 別名 :自動配置, :autoload
344
+ 別名 :自動配置か?, :autoload?
345
+ 別名 :束縛を取得, :binding
346
+ 別名 :操作に手続きが与えられているか?, :block_given?
347
+ 別名 :呼び出し元, :caller
348
+ 別名 :呼び出し元の場所の一覧, :caller_locations
349
+ 別名 :捕捉, :catch
350
+ 別名 :評価, :eval
351
+ 別名 :外部のプログラムを上書き実行する, :exec
352
+ 別名 :終了, :exit
353
+ 別名 :終了!, :exit!
354
+ 別名 :例外を発生, :raise
355
+ 別名 :プロセスを分岐, :fork
356
+ 別名 :整形, :format
357
+ 別名 :文字列に整形, :sprintf
358
+ 別名 :行を取得, :gets
359
+ 別名 :大域変数の一覧, :global_variables
360
+ 別名 :手続き, :proc
361
+ 別名 :λ, :lambda
362
+ 別名 :配置, :load
363
+ 別名 :局所変数の一覧, :local_variables
364
+ 別名 :循環, :loop
365
+ 別名 :ファイルを開く, :open
366
+ 別名 :点検, :p
367
+ 別名 :目視点検, :pp
368
+ 別名 :印字, :print
369
+ 別名 :整形して印字, :printf
370
+ 別名 :文字を出力, :putc
371
+ 別名 :行を出力, :puts
372
+ 別名 :乱数, :rand
373
+ 別名 :行を読む, :readline
374
+ 別名 :全行を読む, :readlines
375
+ # 別名 :要求, :require # japanize/coreで定義済み
376
+ # 別名 :相対位置で要求, :require_relative # japanize/coreで定義済み
377
+ 別名 :入出力を選択, :select
378
+ 別名 :追跡関数を設定, :set_trace_func
379
+ 別名 :休止, :sleep
380
+ 別名 :外部のプログラムを実行する, :spawn
381
+ 別名 :乱数の種を設定, :srand
382
+ 別名 :システムコールを実行する, :syscall
383
+ 別名 :外部のコマンドを実行する, :system
384
+ 別名 :ファイルを検査, :test
385
+ 別名 :脱出, :throw
386
+ 別名 :大域変数を追跡, :trace_var
387
+ 別名 :シグナルの捕捉, :trap
388
+ 別名 :大域変数の追跡を解除, :untrace_var
389
+ 別名 :警告, :warn
390
+
391
+ 部の関数 :__呼び出し先__,
392
+ :__ディレクトリ__,
393
+ :__操作名__,
394
+ :中断,
395
+ :終了時に実行,
396
+ :自動配置,
397
+ :自動配置か?,
398
+ :束縛を取得,
399
+ :操作に手続きが与えられているか?,
400
+ :呼び出し元,
401
+ :呼び出し元の場所の一覧,
402
+ :捕捉,
403
+ :評価,
404
+ :外部のプログラムを上書き実行する,
405
+ :終了,
406
+ :終了!,
407
+ :例外を発生,
408
+ :プロセスを分岐,
409
+ :整形,
410
+ :文字列に整形,
411
+ :行を取得,
412
+ :大域変数の一覧,
413
+ :手続き,
414
+ :λ,
415
+ :配置,
416
+ :局所変数の一覧,
417
+ :循環,
418
+ :ファイルを開く,
419
+ :点検,
420
+ :目視点検,
421
+ :印字,
422
+ :整形して印字,
423
+ :文字を出力,
424
+ :行を出力,
425
+ :乱数,
426
+ :行を読む,
427
+ :全行を読む,
428
+ :入出力を選択,
429
+ :追跡関数を設定,
430
+ :休止,
431
+ :外部のプログラムを実行する,
432
+ :乱数の種を設定,
433
+ :システムコールを実行する,
434
+ :外部のコマンドを実行する,
435
+ :ファイルを検査,
436
+ :脱出,
437
+ :大域変数を追跡,
438
+ :シグナルの捕捉,
439
+ :大域変数の追跡を解除,
440
+ :警告
441
+
442
+ # コマンドラインオプションで -p または -n を指定した時のみ定義される。
443
+ [ [ :末尾を食べる, :chomp ],
444
+ [ :末尾を切り落す, :chop ],
445
+ [ :全置換, :gsub ],
446
+ [ :置換, :sub ],
447
+ ].each do |日本語の操作, 元の操作|
448
+ if (操作は定義済みか? 元の操作) then
449
+ 別名 日本語の操作, 元の操作
450
+ 部の関数 日本語の操作
451
+ end
452
+ end
453
+ }
454
+
455
+ 組(無値の組) {
456
+ 別名 :無値か?, :nil?
457
+ 別名 :有理化, :rationalize
458
+ 別名 :配列に変換, :to_a
459
+ 別名 :複素数に変換, :to_c
460
+ 別名 :浮動小数点に変換, :to_f
461
+ 別名 :連想配列に変換, :to_h
462
+ 別名 :整数に変換, :to_i
463
+ 別名 :有理数に変換, :to_r
464
+ # 別名 :文字列に変換, :to_s # 物で定義済み
465
+ }
466
+
467
+ 組(例外) {
468
+ 特異組{
469
+ 別名 :例外を生成, :exception
470
+ }
471
+
472
+ 別名 :呼び出し履歴, :backtrace
473
+ 別名 :呼び出し履歴の場所の一覧, :backtrace_locations
474
+ 別名 :起因, :cause
475
+ 別名 :例外を生成, :exception
476
+ 別名 :完全な伝文, :full_message
477
+ # 別名 :検査, :inspect # 物で定義済み
478
+ 別名 :伝文, :message
479
+ # 別名 :文字列に変換, :to_s # 物で定義済み
480
+ 別名 :呼び出し履歴を設定, :set_backtrace
481
+ }
482
+
483
+ 部(日本語化) {
484
+ 部(:不明な操作の呼び出し履歴を消す) {
485
+ 定義(:不明な操作) {|名前, *引数, &塊|
486
+ begin
487
+ super(名前, *引数, &塊)
488
+ rescue 名前解決に失敗 => ある例外
489
+ # 物#不明な操作 と Object#method_missing の履歴を消して、元の場所で例外が発生したように見せる
490
+ ある例外.呼び出し履歴.shift(2)
491
+ ある例外.呼び出し履歴の場所の一覧.shift(2)
492
+ 例外を発生 ある例外
493
+ end
494
+ }
495
+ }
496
+
497
+ 組(物の土台) {
498
+ 付与 不明な操作の呼び出し履歴を消す
499
+ }
500
+
501
+ 部(:初期化を秘密にする) {
502
+ 定義(:操作が追加された時) {|名前|
503
+ super(名前)
504
+ if (名前 == :初期化) then
505
+ 秘密 :初期化
506
+ end
507
+ }
508
+ 秘密 :操作が追加された時
509
+ }
510
+
511
+ 組(部) {
512
+ 付与 初期化を秘密にする
513
+ }
514
+
515
+ 部(:操作の日本語化) {
516
+ 日本語の定数 :変換操作の日本語化対応表, {
517
+ 検査: :inspect,
518
+ 配列に変換: :to_a,
519
+ 連想配列に変換: :to_h,
520
+ 文字列に変換: :to_s,
521
+ 記号に変換: :to_sym,
522
+ 整数に変換: :to_i,
523
+ 浮動小数点に変換: :to_f,
524
+ 有理数に変換: :to_r,
525
+ 複素数に変換: :to_c
526
+ }
527
+
528
+ 日本語の定数 :繰り返し操作の日本語化対応表, {
529
+ 個別に: :each,
530
+ キー毎に: :each_key,
531
+ 値毎に: :each_value,
532
+ 対毎に: :each_pair
533
+ }
534
+
535
+ 日本語の定数 :入れ物の操作の日本語化対応表, {
536
+ 取得: :fetch,
537
+ 格納: :store,
538
+ 削除: :delete,
539
+ 大きさ: :size,
540
+ 長さ: :length,
541
+ 空か?: :empty?,
542
+ キーの一覧: :keys,
543
+ キーか?: :key?,
544
+ キーを持つか?: :has_key?,
545
+ 含むか?: :include?,
546
+ 一員か?: :member?
547
+ }
548
+
549
+ 特異操作の定義(:操作を日本語化できる部を作る) {|日本語化対応表|
550
+ 部(部.新規) {
551
+ 定義(:操作が追加された時) {|名前|
552
+ super(名前)
553
+ if (本来の名前 = 日本語化対応表[名前]) then
554
+ if (! (操作は定義済みか? 本来の名前) || (生成物が持つ操作を取得(名前) != 生成物が持つ操作を取得(本来の名前))) then
555
+ 定義(本来の名前) {|*引数, &塊|
556
+ __送信__(名前, *引数, &塊)
557
+ }
558
+ end
559
+ end
560
+ }
561
+ 秘密 :操作が追加された時
562
+
563
+ 定義(:操作が除去された時) {|名前|
564
+ super(名前)
565
+ if (本来の名前 = 日本語化対応表[名前]) then
566
+ if (操作は定義済みか? 本来の名前) then
567
+ 操作を除去する(本来の名前)
568
+ end
569
+ end
570
+ }
571
+ 秘密 :操作が除去された時
572
+
573
+ 定義(:操作が未定義にされた時) {|名前|
574
+ super(名前)
575
+ if (本来の名前 = 日本語化対応表[名前]) then
576
+ if (操作は定義済みか? 本来の名前) then
577
+ 操作を未定義にする(本来の名前)
578
+ end
579
+ end
580
+ }
581
+ 秘密 :操作が未定義にされた時
582
+ }
583
+ }
584
+
585
+ 特異操作の定義(:物の操作を日本語化できる部を作る) {|日本語化対応表|
586
+ 部(部.新規) {
587
+ 定義(:特異操作が追加された時) {|名前|
588
+ super(名前)
589
+ if (本来の名前 = 日本語化対応表[名前]) then
590
+ 特異組{
591
+ if (! (操作は定義済みか? 本来の名前) || (生成物が持つ操作を取得(名前) != 生成物が持つ操作を取得(本来の名前))) then
592
+ 定義(本来の名前) {|*引数, &塊|
593
+ __送信__(名前, *引数, &塊)
594
+ }
595
+ end
596
+ }
597
+ end
598
+ }
599
+ 秘密 :特異操作が追加された時
600
+
601
+ 定義(:特異操作が除去された時) {|名前|
602
+ super(名前)
603
+ if (本来の名前 = 日本語化対応表[名前]) then
604
+ 特異組{
605
+ if (操作は定義済みか? 本来の名前) then
606
+ 操作を除去する(本来の名前)
607
+ end
608
+ }
609
+ end
610
+ }
611
+ 秘密 :特異操作が除去された時
612
+
613
+ 定義(:特異操作が未定義にされた時) {|名前|
614
+ super(名前)
615
+ if (本来の名前 = 日本語化対応表[名前]) then
616
+ 特異組{
617
+ if (操作は定義済みか? 本来の名前) then
618
+ 操作を未定義にする(本来の名前)
619
+ end
620
+ }
621
+ end
622
+ }
623
+ 秘密 :特異操作が未定義にされた時
624
+ }
625
+ }
626
+
627
+ 日本語の定数 :変換操作を日本語化できる, 操作を日本語化できる部を作る(変換操作の日本語化対応表)
628
+ 日本語の定数 :繰り返し操作を日本語化できる, 操作を日本語化できる部を作る(繰り返し操作の日本語化対応表)
629
+ 日本語の定数 :入れ物の操作を日本語化できる, 操作を日本語化できる部を作る(入れ物の操作の日本語化対応表)
630
+
631
+ 日本語の定数 :物の変換操作を日本語化できる, 物の操作を日本語化できる部を作る(変換操作の日本語化対応表)
632
+ 日本語の定数 :物の繰り返し操作を日本語化できる, 物の操作を日本語化できる部を作る(繰り返し操作の日本語化対応表)
633
+ 日本語の定数 :物の入れ物の操作を日本語化できる, 物の操作を日本語化できる部を作る(入れ物の操作の日本語化対応表)
634
+ }
635
+
636
+ 組(部) {
637
+ 付与 操作の日本語化::変換操作を日本語化できる
638
+ 付与 操作の日本語化::繰り返し操作を日本語化できる
639
+ 付与 操作の日本語化::入れ物の操作を日本語化できる
640
+ }
641
+
642
+ 組(物) {
643
+ 付与 操作の日本語化::物の変換操作を日本語化できる
644
+ 付与 操作の日本語化::物の繰り返し操作を日本語化できる
645
+ 付与 操作の日本語化::物の入れ物の操作を日本語化できる
646
+ }
647
+ }
648
+
649
+ # Local Variables:
650
+ # mode: Ruby
651
+ # indent-tabs-mode: nil
652
+ # End: