sheltered-girl 4.0.4.4 → 4.0.5

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 (104) hide show
  1. checksums.yaml +4 -4
  2. data/.env +3 -3
  3. data/Gemfile +2 -2
  4. data/README.md +11 -11
  5. data/bin/aqua +247 -247
  6. data/bin/bmi +56 -56
  7. data/bin/bmi-license +118 -118
  8. data/bin/heat +14 -14
  9. data/bin/katakana +35 -35
  10. data/bin/koyomi +55 -55
  11. data/bin/romaji +34 -34
  12. data/bin/sheltered-girl +317 -317
  13. data/bin/speak +1149 -1154
  14. data/bin/tenji +42 -42
  15. data/bin/tenji_log +42 -42
  16. data/bin/tweet +79 -79
  17. data/lib/all.rb +45 -45
  18. data/lib/all_log.rb +50 -50
  19. data/lib/and.rb +48 -48
  20. data/lib/autocal.rb +21 -21
  21. data/lib/bmi.rb +28 -28
  22. data/lib/bmi_version.rb +21 -21
  23. data/lib/calendar.rb +17 -17
  24. data/lib/count.rb +43 -43
  25. data/lib/decript.rb +20 -20
  26. data/lib/druby_erb.rb +45 -45
  27. data/lib/druby_reci.rb +23 -23
  28. data/lib/feed.rb +13 -13
  29. data/lib/frame.rb +212 -212
  30. data/lib/frame_version.rb +21 -21
  31. data/lib/gc.rb +17 -17
  32. data/lib/gem_version.rb +9 -9
  33. data/lib/himekuri.rb +175 -175
  34. data/lib/himekuri_version.rb +21 -21
  35. data/lib/hyaku.rb +55 -55
  36. data/lib/install.rb +230 -230
  37. data/lib/katakana.rb +666 -666
  38. data/lib/kome.rb +41 -41
  39. data/lib/mail.rb +47 -47
  40. data/lib/match.rb +50 -50
  41. data/lib/mini.rb +47 -47
  42. data/lib/minitest/full_runner.rb +105 -105
  43. data/lib/minitest/runner.rb +74 -74
  44. data/lib/not.rb +48 -48
  45. data/lib/or.rb +49 -49
  46. data/lib/require_sec_seiki.rb +2 -2
  47. data/lib/rice.rb +37 -37
  48. data/lib/romaji.rb +666 -666
  49. data/lib/saikoro.rb +17 -17
  50. data/lib/seiki.rb +12 -12
  51. data/lib/suihan.rb +40 -40
  52. data/lib/summa.rb +14 -14
  53. data/lib/tanraku.rb +156 -156
  54. data/lib/tenji.rb +4715 -4715
  55. data/lib/tenji_log.rb +4715 -4715
  56. data/lib/timestamp.py +61 -61
  57. data/lib/title.rb +16 -16
  58. data/lib/tubuyaki.rb +71 -71
  59. data/lib/tubuyaki_memo.rb +87 -87
  60. data/lib/tweet_cmd.rb +27 -27
  61. data/lib/version.rb +21 -19
  62. data/lib/zella.rb +46 -46
  63. data/req/aqua.rb +8 -8
  64. data/req/bmi.rb +6 -6
  65. data/req/frame.rb +7 -7
  66. data/req/full_run.rb +20 -20
  67. data/req/full_runner.rb +8 -8
  68. data/req/himekuri.rb +7 -7
  69. data/req/katakana.rb +7 -7
  70. data/req/koyomi.rb +6 -6
  71. data/req/mini_run.rb +20 -20
  72. data/req/romaji.rb +7 -7
  73. data/req/rubygems.rb +12 -12
  74. data/req/runner.rb +8 -8
  75. data/req/sheltered-girl.rb +7 -7
  76. data/req/speak.rb +19 -10
  77. data/req/zella.rb +4 -4
  78. data/runner/full.rb +57 -57
  79. data/runner/katakana.rb +110 -110
  80. data/runner/mini.rb +57 -57
  81. data/runner/romaji.rb +110 -110
  82. data/shell/romaji_runner_1.rb +669 -669
  83. data/shell/romaji_runner_10.rb +669 -669
  84. data/shell/romaji_runner_2.rb +669 -669
  85. data/shell/romaji_runner_3.rb +669 -669
  86. data/shell/romaji_runner_4.rb +669 -669
  87. data/shell/romaji_runner_5.rb +669 -669
  88. data/shell/romaji_runner_6.rb +669 -669
  89. data/shell/romaji_runner_7.rb +669 -669
  90. data/shell/romaji_runner_8.rb +669 -669
  91. data/shell/romaji_runner_9.rb +669 -669
  92. data/shell_ka/katakana_runner_1.rb +669 -669
  93. data/shell_ka/katakana_runner_10.rb +669 -669
  94. data/shell_ka/katakana_runner_2.rb +669 -669
  95. data/shell_ka/katakana_runner_3.rb +669 -669
  96. data/shell_ka/katakana_runner_4.rb +669 -669
  97. data/shell_ka/katakana_runner_5.rb +669 -669
  98. data/shell_ka/katakana_runner_6.rb +669 -669
  99. data/shell_ka/katakana_runner_7.rb +669 -669
  100. data/shell_ka/katakana_runner_8.rb +669 -669
  101. data/shell_ka/katakana_runner_9.rb +669 -669
  102. data/sheltered-girl.gemspec +46 -46
  103. data/wiki/README.md +69 -69
  104. metadata +1 -1
data/bin/speak CHANGED
@@ -1,1154 +1,1149 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- # vim: filetype=ruby
5
-
6
- require "#{File.dirname(__FILE__)}/../req/speak"
7
-
8
- lib = File.expand_path('lib', __dir__)
9
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
10
-
11
- class Emerald
12
- attr_accessor :fibonacci, :fizzbizz, :version, :kurage
13
-
14
- def version
15
- print 'Rubyのバージョン情報を出力します! : '
16
- puts RUBY_VERSION
17
- end
18
-
19
- def fibonacci
20
- puts 'フィボナッチ数列を出力します! '
21
- puts ''
22
- lo = 1
23
- hi = 1
24
- print lo
25
- print ' '
26
- while hi < 50
27
- print hi
28
- hi = lo + hi
29
- lo = hi - lo
30
- print ' '
31
- end
32
- puts ''
33
- end
34
-
35
- def fizzbizz
36
- puts 'FizzBizz問題の出力結果です!'
37
- puts ''
38
- (1..15).each do |t|
39
- if t % 15 == 0
40
- print 'FizzBizz'
41
- elsif t % 3 == 0
42
- print 'Fizz'
43
- elsif t % 5 == 0
44
- print 'Bizz'
45
- else
46
- print t
47
- end
48
- print ' '
49
- end
50
- puts ''
51
- end
52
-
53
- def kurage
54
- a = rand(15)
55
- print ''
56
- 0.upto(a) do
57
- print ''
58
- end
59
- puts '<コ:彡'
60
- puts ''
61
- end
62
- end
63
-
64
- saikoro = Random.rand(4)
65
- case saikoro
66
- when 2 then
67
- Emerald.new.kurage
68
- when 1 then
69
- Emerald.new.fibonacci
70
- when 0 then
71
- Emerald.new.fizzbizz
72
- else
73
- Emerald.new.version
74
- end
75
-
76
- puts ''
77
- puts 'helpを入力またはTab補完で実行しましょう!'
78
-
79
- # search words
80
-
81
- begin
82
- str = %w[sessi kashi exit help].map!(&:freeze).freeze
83
-
84
- once = %w[find delete remove rename makefolder NumberGame2 Encode week calendar NumberGame].map!(&:freeze).freeze
85
-
86
- lucky = %w[loto6 Numbers kuji].map!(&:freeze).freeze
87
-
88
- dark = %w[OneRunner Eval output].map!(&:freeze).freeze
89
-
90
- denki = %w[Anpea Volt Rister].map!(&:freeze).freeze
91
-
92
- other = %w[weather reader atom result rss].map!(&:freeze).freeze
93
-
94
- WORDS = (str + once + lucky + dark + denki + other).map!(&:freeze).freeze
95
-
96
- Readline.completion_proc = proc { |word|
97
- WORDS.grep(/\A#{Regexp.quote word}/)
98
- }
99
-
100
- print '> '
101
-
102
- # search words exit!
103
-
104
- # Wainting Action code!
105
-
106
- while (line = Readline.readline(''))
107
-
108
- line.chomp!
109
-
110
- if line.match?(str[0])
111
- def seru(b)
112
- (b - 32) * 5 / 9
113
- end
114
- puts '華氏を入力してください!'
115
- .print '> '
116
- f = gets.to_i
117
- m = seru(f)
118
- puts "摂氏は、#{m.round}です。"
119
-
120
- print '> '
121
-
122
- elsif line.match?(str[1])
123
- def seru(b)
124
- (1.8 * b) + 32
125
- end
126
- puts '摂氏を入力してください!'
127
- print '> '
128
- f = gets.to_i
129
- m = seru(f)
130
- puts "華氏は、#{m.round}です。"
131
-
132
- print '> '
133
-
134
- elsif line.match?(str[2])
135
- exit!
136
- elsif line.match?(lucky[0])
137
-
138
- class Loto6
139
- def sum(a, b, c, d, e, f)
140
- x = Random.rand(a) + 1
141
- y = Random.rand(b) + 1
142
- z = Random.rand(c) + 1
143
- s = Random.rand(d) + 1
144
- t = Random.rand(e) + 1
145
- d = Random.rand(f) + 1
146
- [x, y, z, s, t, d]
147
- end
148
- end
149
-
150
- taka = Loto6.new
151
- n = taka.sum(43, 43, 43, 43, 43, 43)
152
-
153
- puts 'Loto6で参考にする数字をランダムで表示します!'
154
- puts ''
155
- print n
156
- print ' '
157
- puts ''
158
- puts ''
159
- puts '※当たるも八卦、当たらぬも八卦。勝負は時の運です。'
160
-
161
- print '> '
162
-
163
- elsif line.match?(lucky[1])
164
- puts 'ナンバーズで参考にする数字をランダムで表示します!'
165
- puts ''
166
- class Numbers
167
- def sum(a, b, c, d)
168
- x = Random.rand(a)
169
- y = Random.rand(b)
170
- z = Random.rand(c)
171
- s = Random.rand(d)
172
- [x, y, z, s]
173
- end
174
- end
175
-
176
- taka = Numbers.new
177
- p taka.sum(10, 10, 10, 10)
178
- puts ''
179
- puts '※当たるも八卦、当たらぬも八卦。勝負は時の運です。'
180
-
181
- print '> '
182
-
183
- elsif line.match?(lucky[2])
184
- puts '今日の運勢を占ってみましょう。'
185
- puts '大吉→中吉→吉→小吉→凶→大凶'
186
-
187
- a = rand(16)
188
-
189
- case a
190
- when 0..2
191
- puts '大吉'
192
- puts 'さぁ、外に出て頑張ろう。仕事へGo!'
193
- when 3..5
194
- puts '中吉'
195
- puts 'ほどほどな普通。ストレスと向き合え!'
196
- when 6..8
197
- puts ''
198
- puts 'だんだん疲れてきたんだな。ゆっくり休め!'
199
- when 9..11
200
- puts '小吉'
201
- puts 'あまりいいことがないから、ジッとしているに限る。'
202
- when 12..14
203
- puts '凶'
204
- puts 'ピンチのあとのチャンス到来。あきらめるな。'
205
- when 15..16
206
- puts '大凶'
207
- puts '今日は何かまずい気をつけろ!'
208
- else
209
- puts '数字があふれています!注意!'
210
- end
211
- print '> '
212
-
213
- elsif line.match?(dark[0])
214
-
215
- begin
216
- puts '
217
- ワンライナー、1行コードの館へようこそ。さぁ、はじめましょう!'
218
- print '> '
219
- re = gets.chomp
220
- puts ''
221
- eval(re)
222
- puts ''
223
- rescue StandardError => et
224
- p et
225
- print '> '
226
- puts 'エラーです。文字列を確認してください!'
227
- puts ''
228
- retry
229
- ensure
230
- puts '終了は exit を入力してください!'
231
- end
232
-
233
- print '> '
234
-
235
- elsif line.match?(denki[0])
236
-
237
- def anpea(a, b)
238
- b / a
239
- end
240
-
241
- puts
242
- puts '抵抗を入力してください'
243
-
244
- print '> '
245
- f = gets.to_i
246
-
247
- puts
248
- puts '電圧を入力してください'
249
- print '> '
250
-
251
- g = gets.to_i
252
-
253
- m = anpea(f, g)
254
-
255
- puts
256
- puts "電流は#{m.round}です。"
257
-
258
- print '> '
259
-
260
- elsif line.match?(denki[1])
261
-
262
- def volt(c, d)
263
- c * d
264
- end
265
-
266
- puts
267
- puts '抵抗を入力してください'
268
- print '> '
269
-
270
- h = gets.to_i
271
- puts
272
- puts '電流を入力してください'
273
-
274
- print '> '
275
- i = gets.to_i
276
-
277
- j = volt(h, i)
278
-
279
- puts
280
- puts "電圧は#{j.round}です。"
281
-
282
- print '> '
283
-
284
- elsif line.match?(denki[2])
285
-
286
- def rister(k, l)
287
- k / l
288
- end
289
-
290
- puts
291
- puts '電流を入力してください'
292
- print '> '
293
-
294
- l = gets.to_i
295
- puts
296
- puts '電圧を入力してください'
297
-
298
- print '> '
299
- k = gets.to_i
300
-
301
- q = rister(k, l)
302
-
303
- puts
304
- puts "抵抗は#{q.round}です。"
305
-
306
- print '> '
307
-
308
- # It is a help document of zinbeic.
309
-
310
- elsif line.match?(str[3])
311
-
312
- puts 'COMMAND'.center(60, '-')
313
-
314
- puts '
315
- sessi 華氏から摂氏へ変換します
316
-
317
- kashi 摂氏から華氏へ変換します
318
-
319
- kuji 今日の運勢を占います
320
-
321
- Numbers Numbers4の候補となる数字を乱数を使って出力します
322
-
323
- loto6 Loto6の候補となる数字を乱数を使って出力します
324
-
325
- OneRunner ワンライナーの館へ案内します
326
-
327
- delete ファイルを指定して削除できます
328
-
329
- find 単語を探します
330
-
331
- remove フォルダを消します
332
-
333
- rename ファイルの名前を変えます
334
-
335
- makefolder フォルダを作成します
336
-
337
- NumberGame 数字当てゲームです (疑似乱数版)
338
-
339
- NumberGame2 数字当てゲームです (乱数版)
340
-
341
- Encode 文字列のエンコードを評価します
342
-
343
- Eval eval族の館へようこそ、足し算などが行えます
344
-
345
- Anpea オームの法則を使い、電流を調べます
346
-
347
- Volt オームの法則を使い、電圧を調べます
348
-
349
- Rister オームの法則を使い、抵抗を調べます
350
-
351
- week 現在日付と曜日を表示します
352
-
353
- calendar PyCallでpythonを呼び出しカレンダー表示します
354
-
355
- output 外部コマンドを実行できます
356
- ※ ただし、入力待ちは実行できません
357
-
358
- weather zinbei2の天気機能を移植しました
359
-
360
- reader RSSの取得先からタイトル表示 (雨音から移植)
361
-
362
- atom gem install feedjira (v3.0.0~)
363
- gem install httparty
364
- atom形式のrssを読み込むことができます
365
-
366
- result rssの記号を個数としてカウントします
367
- ※ ただし、カウント後zinbeiwを終了します
368
-
369
- rss RSS投稿時間帯を判別します
370
-
371
- 終了するときは、exitと入力します'
372
-
373
- puts 'COMMAND'.center(60, '-')
374
-
375
- print '> '
376
-
377
- # It is a help document of zinbeic exit!
378
-
379
- # The command which can be called is only once.
380
- elsif line.match?(once[0])
381
-
382
- begin
383
- print '探したい文字列を入力してください: '
384
- re = gets.chomp
385
- rescue StandardError => et
386
- p et
387
- puts 'エラーです。文字列を確認してください!'
388
- retry
389
- end
390
-
391
- begin
392
- print '探したいフォルダのパスを指定してください: '
393
- fo = gets.chomp
394
- rescue StandardError => es
395
- p es
396
- puts 'エラーです。文字列を確認してください!'
397
- end
398
-
399
- begin
400
- Dir.chdir(fo)
401
- rescue Errno::EEXIST
402
- Errno::EEXIST
403
- end
404
-
405
- begin
406
- print 'ファイル名を拡張子を含んで入力してください: '
407
-
408
- filename = gets.chomp
409
- File.open(filename) do |d|
410
- puts ' '
411
-
412
- while (liner = d.gets)
413
- liner.chomp!
414
- next unless liner.match?(re)
415
- printf('%4d 行目 : %s ', d.lineno, liner)
416
- print ' Find!(発見!)'
417
- puts ' '
418
- puts ' '
419
- end
420
- end
421
- rescue StandardError => ex
422
- p ex
423
- puts 'エラーです。ファイル名を確認してください。\n'
424
- retry
425
- ensure
426
- puts '終了は exit を入力してください!'
427
- end
428
- print '> '
429
-
430
- elsif line.match?(once[1])
431
-
432
- begin
433
- print '消したいフォルダのパスを指定してください: '
434
- mo = gets.chomp
435
- rescue StandardError => es
436
- p es
437
- puts 'エラーです。文字列を確認してください!'
438
- end
439
-
440
- begin
441
- Dir.chdir(mo)
442
- rescue Errno::EEXIST
443
- Errno::EEXIST
444
- end
445
-
446
- begin
447
- print 'ファイル名を拡張子を含んで入力してください: '
448
-
449
- del = readline.chomp!
450
- File.delete(del)
451
-
452
- puts '削除しました。'
453
- rescue StandardError => ex
454
- p ex
455
- puts 'エラーです。ファイル名を確認してください。\n'
456
- retry
457
- ensure
458
- puts '終了は exit を入力してください!'
459
- end
460
- print '> '
461
-
462
- elsif line.match?(once[2])
463
-
464
- begin
465
- print '削除したいフォルダのパスを指定してください: '
466
- st = gets.chomp
467
- rescue StandardError => es
468
- p es
469
- puts 'エラーです。文字列を確認してください!'
470
- end
471
-
472
- begin
473
- Dir.chdir(st)
474
- rescue Errno::EEXIST
475
- Errno::EEXIST
476
- end
477
-
478
- begin
479
- print '削除したいフォルダ名を拡張子を含んで入力してください: '
480
-
481
- rem = readline.chomp!
482
- Dir.rmdir(rem)
483
-
484
- puts '削除しました。'
485
- rescue StandardError => ex
486
- p ex
487
- puts 'エラーです。ファイル名を確認してください。\n'
488
- retry
489
- ensure
490
- puts '終了は exit を入力してください!'
491
- end
492
- print '> '
493
- elsif line.match?(once[3])
494
-
495
- begin
496
- print '名前を変えたいフォルダのパスを指定してください: '
497
- nem = gets.chomp
498
- rescue StandardError => es
499
- p es
500
- puts 'エラーです。文字列を確認してください!'
501
- end
502
-
503
- begin
504
- Dir.chdir(nem)
505
- rescue Errno::EEXIST
506
- Errno::EEXIST
507
- end
508
-
509
- begin
510
- print '現在のファイル名を拡張子を含んで入力してください: '
511
- re = gets.chomp!
512
- rescue StandardError => ex
513
- p ex
514
- puts 'エラーです。ファイル名を確認してください。\n'
515
- retry
516
- end
517
-
518
- begin
519
- print '変更するファイル名を拡張子を含んで入力してください: '
520
-
521
- no = gets.chomp!
522
-
523
- File.rename(re, no)
524
-
525
- puts '変更しました。'
526
- rescue StandardError => ex
527
- p ex
528
- puts 'エラーです。ファイル名を確認してください。\n'
529
- retry
530
- ensure
531
- puts '終了は exit を入力してください!'
532
- end
533
-
534
- print '> '
535
- elsif line.match?(once[4])
536
-
537
- begin
538
- print '作成したいフォルダのパスを指定してください: '
539
- mk = gets.chomp
540
- rescue StandardError => es
541
- p es
542
- puts 'エラーです。文字列を確認してください!'
543
- end
544
-
545
- begin
546
- Dir.chdir(mk)
547
- rescue Errno::EEXIST
548
- Errno::EEXIST
549
- end
550
-
551
- begin
552
- print 'フォルダ名を入力してください: '
553
-
554
- ma = readline.chomp!
555
- Dir.mkdir(ma)
556
-
557
- puts '作成しました。'
558
- rescue StandardError => ex
559
- p ex
560
- puts 'エラーです。ファイル名を確認してください。\n'
561
- retry
562
- ensure
563
- puts '終了は exit を入力してください!'
564
- end
565
-
566
- print '> '
567
- elsif line.match?(once[5])
568
- begin
569
- x = SecureRandom.random_number(1..100).freeze
570
-
571
- puts ''
572
- puts '何回まで、繰り返すか指定してください (20回が限度です)'
573
- print '> '
574
- num = (gets.chomp.to_i).freeze
575
- puts "#{num}回、繰り返すまでに当ててください:"
576
- puts ''
577
- puts '1 ~ 100までの数字をいれてください、NumberGameスタート!'
578
- print '> '
579
-
580
- if num < 21
581
- num.times do |z|
582
- input_n = (gets.chomp.to_i).freeze
583
- input_m = input_n.to_s
584
-
585
- if input_n < 101
586
- if input_m.match(/^0/o)
587
- puts ''
588
- puts '0と00または空白を入力したため、終了します...'
589
- puts ''
590
- break
591
- elsif input_n < x
592
- puts 'コンピュータの選んだ数字の方が大きいため大きい数字を入力してください'
593
- print '> '
594
- elsif input_n > x
595
- puts 'コンピュータの選んだ数字の方が小さいため小さい数字を入力してください'
596
- print '> '
597
- elsif input_n == x
598
- puts ''
599
- puts 'おめでとうございます、正解です'
600
- puts ''
601
- puts "#{num}回範囲内: #{z+1}回目で正解しました"
602
- puts ''
603
- break
604
- else
605
- puts ''
606
- puts '正解は' + x.to_s + 'でした'
607
- puts ''
608
- puts '処理を終了します...'
609
- puts ''
610
- break
611
- end
612
- else
613
- puts ''
614
- puts '100を超えた数字を入力したため、終了します...'
615
- puts ''
616
- break
617
- end
618
- end
619
- else
620
- puts ''
621
- puts '繰り返す回数が20回を超えたため、終了します...'
622
- puts ''
623
- end
624
-
625
- rescue StandardError => s
626
- puts s.backtrace
627
- tanraku_execute
628
-
629
- ensure
630
- puts '正解は' + x.to_s + 'でした'
631
- puts ''
632
- puts 'お疲れさまでした、NumberGameを終了します...処理を入力してください!'
633
- print '> '
634
- end
635
-
636
- elsif line.match?(once[6])
637
- puts
638
-
639
- class Enco
640
- begin
641
- puts '文字列を入力してください'
642
- print '> '
643
- filename = gets.chomp
644
- rescue StandardError => ee
645
- p ee
646
- puts 'エラーです。文字列を確認してください!'
647
- end
648
-
649
- puts ''
650
- puts '変更前のエンコードを指定してください'
651
- puts 'ISO-2022-JP,SJIS,eucJP,UTF-8 が候補です。'
652
- print '> '
653
- befenco = gets.chomp
654
-
655
- begin
656
- puts ''
657
- puts 'エンコードを指定してください'
658
- puts 'ISO-2022-JP,SJIS,eucJP,UTF-8 が候補です。'
659
- print '> '
660
- aftenco = gets.chomp
661
- puts
662
- rescue StandardError => ed
663
- p ed
664
- puts 'エラーです。エンコーディングを確認してください!'
665
- end
666
-
667
- ut = Encoding::Converter.new(befenco, aftenco)
668
- p ut.convert(filename)
669
- ut.finish.dump
670
- puts
671
-
672
- ensure
673
- puts '終了は exit を入力してください!'
674
- puts
675
- end
676
- print '> '
677
- elsif line.match?(dark[1])
678
- begin
679
- puts 'eval族の館へようこそ!
680
- 簡単な文字列を評価してください'
681
- print '> '
682
- re = gets.chomp
683
- puts ''
684
- p eval(re)
685
- puts ''
686
- rescue StandardError => et
687
- p et
688
- print '> '
689
- puts 'エラーです。文字列を確認してください!'
690
- puts ''
691
- retry
692
- ensure
693
- puts '終了は exit を入力してください!'
694
- end
695
- print '> '
696
-
697
- elsif line.match?(dark[2])
698
- begin
699
- puts ''
700
- puts 'OUTPUT'.center(60, '-')
701
- puts ''
702
- puts '外部コマンドを実行できます!'
703
- puts ''
704
- puts 'OUTPUT'.center(60, '-')
705
- puts ''
706
- print '> '
707
- re = gets.chomp
708
- puts ''
709
- stdout, stderr, status = Open3.capture3(re)
710
- puts stdout
711
- puts ''
712
- rescue StandardError => et
713
- p et
714
- print '> '
715
- puts 'エラーです。文字列を確認してください!'
716
- puts ''
717
- retry
718
- ensure
719
- puts '終了は exit を入力してください!'
720
- end
721
- print '> '
722
-
723
- elsif line.match?(once[7])
724
- puts ''
725
- puts 'WEEK'.center(60, '-')
726
- puts ''
727
- puts '入力した日付を曜日で判定します'
728
- puts '半角数字で入力してください'
729
- puts 'それでは、スタート!'
730
- puts ''
731
- puts 'WEEK'.center(60, '-')
732
- puts ''
733
-
734
- begin
735
- puts '調べたい年を入力してください'
736
- print '> '
737
- nen = gets.chomp.to_i
738
- rescue StandardError => ee
739
- p ee
740
- puts 'エラーです。数字を確認してください!'
741
- end
742
-
743
- puts ''
744
-
745
- begin
746
- puts '調べたい月を入力してください'
747
- print '> '
748
- mon = gets.chomp.to_i
749
- rescue StandardError => ey
750
- p ey
751
- puts 'エラーです。数字を確認してください!'
752
- end
753
-
754
- puts ''
755
-
756
- begin
757
- puts '調べたい日を入力してください'
758
- print '> '
759
- days = gets.chomp.to_i
760
- rescue StandardError => ex
761
- p ex
762
- puts 'エラーです。数字を確認してください!'
763
- end
764
-
765
- puts ''
766
-
767
- t = Time.local(nen, mon, days)
768
-
769
- if t.sunday?
770
- puts "#{nen}年#{mon}月#{days}日は、日曜日です。"
771
- puts ''
772
- elsif t.monday?
773
- puts "#{nen}年#{mon}月#{days}日は、月曜日です。"
774
- puts ''
775
- elsif t.tuesday?
776
- puts "#{nen}年#{mon}月#{days}日は、火曜日です。"
777
- puts ''
778
- elsif t.wednesday?
779
- puts "#{nen}年#{mon}月#{days}日は、水曜日です。"
780
- puts ''
781
- elsif t.thursday?
782
- puts "#{nen}年#{mon}月#{days}日は、木曜日です。"
783
- puts ''
784
- elsif t.friday?
785
- puts "#{nen}年#{mon}月#{days}日は、金曜日です。"
786
- puts ''
787
- elsif t.saturday?
788
- puts "#{nen}年#{mon}月#{days}日は、土曜日です。"
789
- puts ''
790
- else
791
- puts 'ありえない曜日を指しています...終了します! '
792
- exit!
793
- end
794
-
795
- print '> '
796
-
797
- elsif line.match?(once[8])
798
- puts ''
799
- puts 'WEEK'.center(60, '-')
800
- puts ''
801
- puts '入力した日付をカレンダーで表示します'
802
- puts '半角数字で入力してください'
803
- puts 'それでは、スタート!'
804
- puts ''
805
- puts 'WEEK'.center(60, '-')
806
- puts ''
807
-
808
- begin
809
- puts '調べたい年を入力してください'
810
- print '> '
811
- nen = gets.chomp.to_i
812
- rescue StandardError => ee
813
- p ee
814
- puts 'エラーです。数字を確認してください!'
815
- end
816
-
817
- puts ''
818
-
819
- begin
820
- puts '調べたい月を入力してください'
821
- print '> '
822
- mon = gets.chomp.to_i
823
- rescue StandardError => ey
824
- p ey
825
- puts 'エラーです。数字を確認してください!'
826
- end
827
-
828
- puts ''
829
-
830
- t = Time.local(nen, mon)
831
-
832
- pyimport :calendar
833
- puts(calendar.month(nen, mon))
834
-
835
- puts ''
836
-
837
- # The command which can be called is only once.
838
- print '> '
839
-
840
- elsif line.match?(other[0])
841
-
842
- require 'net/http'
843
- require 'uri'
844
- require 'json'
845
- require 'time'
846
- require 'date'
847
- require 'rinku'
848
- require 'sanitize'
849
-
850
-
851
- text = <<-EOS
852
- ------------------------------------------------------------------------
853
-
854
- IDの詳細はこちら → https://github.com/takkii/Utakata/wiki/Utakata-wiki
855
-
856
- ※ 日本全国のIDから自分の地域IDを入力!
857
- ------------------------------------------------------------------------
858
- EOS
859
-
860
- links = Rinku.auto_link(text, mode=:all, link_attr=nil, skip_tags=nil)
861
- puts Sanitize.clean(links)
862
-
863
- begin
864
- puts '調べたい地域のIDを入力してください'
865
- puts ''
866
- print '> '
867
- ID = gets.chomp
868
- rescue StandardError => es
869
- p es
870
- puts 'エラーです。IDを確認してください!'
871
- end
872
-
873
- url = 'https://weather.tsukumijima.net/api/forecast?city=' + ID
874
- uri = URI.parse(url)
875
- json = Net::HTTP.get(uri)
876
- result = JSON.parse!(json)
877
- today_tel = result['forecasts'][0]['telop']
878
- tomor_tel = result['forecasts'][1]['telop']
879
- min_tem = result['forecasts'][1]['temperature']['min']['celsius']
880
- max_tem = result['forecasts'][1]['temperature']['max']['celsius']
881
- des = result['description']['text']
882
- des1 = result['description']['publicTime']
883
- des2 = DateTime.parse(des1)
884
-
885
- # puts result
886
- puts ' 天気予報 '.center(60, '-')
887
- puts ''
888
- puts '今日の天気は、' + today_tel + ' でしょう '
889
- puts '最低気温は、' + min_tem + '' + ' でしょう '
890
- puts '最高気温は、' + max_tem + '' + ' でしょう '
891
- puts '明日の天気は、' + tomor_tel + ' でしょう '
892
- puts ''
893
- puts ' 天気予報 '.center(60, '-')
894
- puts ''
895
- puts ''
896
- puts ' 天気概況文 '.center(60, '-')
897
- puts
898
- puts des
899
- puts ''
900
- print ' 天気概況文の発表時刻 : '
901
- puts des2.strftime('%Y年%m月%d日 %H時%M分%S秒')
902
- puts ''
903
- puts ' 天気概況文 '.center(60, '-')
904
-
905
- print '> '
906
-
907
- elsif line.match?(other[1])
908
- require 'rss'
909
- require 'date'
910
- require 'kconv'
911
-
912
- begin
913
- puts '調べたいRSSのURLを入力してください'
914
- print '> '
915
- URL = gets.chomp
916
- rescue StandardError => eq
917
- p eq
918
- puts 'エラーです。URLを確認してください!'
919
- end
920
-
921
- rss = RSS::Parser.parse(URL)
922
-
923
- puts ''
924
-
925
- rss.items.collect do |scale|
926
- puts scale.title
927
- end
928
-
929
- puts ''
930
- print '> '
931
-
932
- elsif line.match?(other[2])
933
-
934
- require 'feedjira'
935
- require 'httparty'
936
- require 'date'
937
- require 'kconv'
938
-
939
- begin
940
- puts ''
941
- puts '調べたいRSSのURLを入力してください'
942
- puts ''
943
- print '>'
944
- URL = gets.chomp
945
- rescue StandardError => es
946
- p es
947
- puts 'エラーです。URLを確認してください!'
948
- end
949
-
950
- Feedjira.logger.level = Logger::FATAL
951
- atom = HTTParty.get(URL).body
952
-
953
- Feedjira.parse(atom).entries.collect do |entry|
954
- v = /1[0-9]/
955
- w = /0[0-9]/
956
- x = /2[0-4]/
957
- s = entry.published.to_time.strftime '%H'
958
-
959
- if s.match?(v)
960
- print '#'
961
- print ' '
962
- elsif s.match?(w)
963
- print '$'
964
- print ' '
965
- elsif s.match?(x)
966
- print '@'
967
- print ' '
968
- end
969
- end
970
-
971
- puts ''
972
- print '>'
973
-
974
- elsif line.match?(other[3])
975
-
976
- begin
977
- puts 'rssの出力結果を貼り付けてください'
978
- print '>'
979
- re = gets.chomp
980
- rescue StandardError => ee
981
- p ee
982
- puts 'エラーです。数字を確認してください!'
983
- end
984
-
985
- puts 'ログの最近の投稿時間を判別します...'
986
-
987
- str = re.split('')
988
-
989
- puts ''
990
- print '20~24時に投稿した回数は...'
991
- print str.count('@')
992
- puts ' 回あります'
993
- print '0時から9時に投稿した回数は...'
994
- print str.count('$')
995
- puts ' 回あります'
996
- print '10時から19時に投稿した回数は...'
997
- print str.count('#')
998
- puts ' 回あります'
999
-
1000
- puts ''
1001
- enum = [str.count('@'), str.count('$'), str.count('#')]
1002
-
1003
- q = enum.max
1004
- t = enum.min
1005
-
1006
- puts '最も多い数字は ' + q.to_s + ' 回です'
1007
- puts '最も少ない数字は ' + t.to_s + ' 回です'
1008
-
1009
- puts ''
1010
- print '合計 '
1011
- print str.count('@') + str.count('$') + str.count('#')
1012
- puts ' 回です'
1013
- puts ''
1014
-
1015
- exit!
1016
-
1017
- elsif line.match?(other[4])
1018
-
1019
- require 'rss'
1020
- require 'date'
1021
- require 'kconv'
1022
-
1023
- # date = Time.new.strftime('現在時刻 : %Y年%m月%d日 %H時%M分')
1024
-
1025
- begin
1026
- puts '調べたいRSSのURLを入力してください'
1027
- print '>'
1028
- URL = gets.chomp
1029
- rescue StandardError => es
1030
- p es
1031
- puts 'エラーです。URLを確認してください!'
1032
- end
1033
-
1034
- rss = RSS::Parser.parse(URL)
1035
-
1036
- rss.items.collect do |scale|
1037
- # puts scale.pubDate.strftime '投稿時刻 : %Y年%m月%d日 %H時%M分'
1038
- # scale.pubDate.strftime '%H'
1039
-
1040
- v = /1[0-9]/
1041
- w = /0[0-9]/
1042
- x = /2[0-4]/
1043
- s = scale.pubDate.strftime '%H'
1044
-
1045
- if s.match?(v)
1046
- print '#'
1047
- print ' '
1048
- elsif s.match?(w)
1049
- print '$'
1050
- print ' '
1051
- elsif s.match?(x)
1052
- print '@'
1053
- print ' '
1054
- # print ' '
1055
- # puts scale.title
1056
- # puts scale.link
1057
- # puts scale.description
1058
- # print ' '
1059
- end
1060
- end
1061
- puts ''
1062
- print '>'
1063
-
1064
- elsif line.match?(once[9])
1065
- begin
1066
- x = Random.rand(1..100)
1067
-
1068
- puts ''
1069
- puts '何回まで、繰り返すか指定してください (20回が限度です)'
1070
- print '> '
1071
- num = (gets.chomp.to_i).freeze
1072
- puts "#{num}回、繰り返すまでに当ててください:"
1073
- puts ''
1074
- puts '1 ~ 100までの数字をいれてください、NumberGameスタート!'
1075
- print '> '
1076
-
1077
- if num < 21
1078
- num.times do |z|
1079
- input_n = (gets.chomp.to_i).freeze
1080
- input_m = input_n.to_s
1081
-
1082
- if input_n < 101
1083
- if input_m.match(/^0/o)
1084
- puts ''
1085
- puts '0と00または空白を入力したため、終了します...'
1086
- puts ''
1087
- break
1088
- elsif input_n < x
1089
- puts 'コンピュータの選んだ数字の方が大きいため大きい数字を入力してください'
1090
- print '> '
1091
- elsif input_n > x
1092
- puts 'コンピュータの選んだ数字の方が小さいため小さい数字を入力してください'
1093
- print '> '
1094
- elsif input_n == x
1095
- puts ''
1096
- puts 'おめでとうございます、正解です'
1097
- puts ''
1098
- puts "#{num}回範囲内: #{z+1}回目で正解しました"
1099
- puts ''
1100
- break
1101
- else
1102
- puts ''
1103
- puts '正解は' + x.to_s + 'でした'
1104
- puts ''
1105
- puts '処理を終了します...'
1106
- puts ''
1107
- break
1108
- end
1109
- else
1110
- puts ''
1111
- puts '100を超えた数字を入力したため、終了します...'
1112
- puts ''
1113
- break
1114
- end
1115
- end
1116
- else
1117
- puts ''
1118
- puts '繰り返す回数が20回を超えたため、終了します...'
1119
- puts ''
1120
- end
1121
-
1122
- rescue StandardError => s
1123
- puts s.backtrace
1124
- tanraku_execute
1125
-
1126
- ensure
1127
- puts '正解は' + x.to_s + 'でした'
1128
- puts ''
1129
- puts 'お疲れさまでした、NumberGameを終了します...処理を入力してください!'
1130
- print '> '
1131
- end
1132
-
1133
- else
1134
- puts "Can't Enter this Words. Please input help"
1135
- print '> '
1136
- end
1137
- end
1138
- # Wainting Action Code exit!
1139
-
1140
- # Exception throw!
1141
- rescue StandardError => ex
1142
- p ex
1143
- puts 'エラーです。文字列を確認してください!'
1144
- retry
1145
- print '> '
1146
-
1147
- # Ruby ensure is Java Exception of finally.
1148
- ensure
1149
- puts '終了は exit を入力してください!'
1150
- end
1151
-
1152
- GC.compact
1153
-
1154
- __END__
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # vim: filetype=ruby
5
+
6
+ require 'tanraku'
7
+
8
+ host_os = RbConfig::CONFIG['host_os']
9
+
10
+ case host_os
11
+ when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
12
+ begin
13
+ tanraku_execute
14
+ ensure
15
+ GC.auto_compact
16
+ end
17
+ end
18
+
19
+ require "#{File.dirname(__FILE__)}/../req/speak"
20
+
21
+ lib = File.expand_path('lib', __dir__)
22
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
23
+
24
+ class Emerald
25
+ attr_accessor :fibonacci, :fizzbizz, :version, :kurage
26
+
27
+ def version
28
+ print 'Rubyのバージョン情報を出力します! : '
29
+ puts RUBY_VERSION
30
+ end
31
+
32
+ def fibonacci
33
+ puts 'フィボナッチ数列を出力します! '
34
+ puts ''
35
+ lo = 1
36
+ hi = 1
37
+ print lo
38
+ print ' '
39
+ while hi < 50
40
+ print hi
41
+ hi = lo + hi
42
+ lo = hi - lo
43
+ print ' '
44
+ end
45
+ puts ''
46
+ end
47
+
48
+ def fizzbizz
49
+ puts 'FizzBizz問題の出力結果です!'
50
+ puts ''
51
+ (1..15).each do |t|
52
+ if t % 15 == 0
53
+ print 'FizzBizz'
54
+ elsif t % 3 == 0
55
+ print 'Fizz'
56
+ elsif t % 5 == 0
57
+ print 'Bizz'
58
+ else
59
+ print t
60
+ end
61
+ print ' '
62
+ end
63
+ puts ''
64
+ end
65
+
66
+ def kurage
67
+ a = rand(15)
68
+ print '~'
69
+ 0.upto(a) do
70
+ print '~'
71
+ end
72
+ puts '<コ:彡'
73
+ puts ''
74
+ end
75
+ end
76
+
77
+ saikoro = Random.rand(4)
78
+ case saikoro
79
+ when 2 then
80
+ Emerald.new.kurage
81
+ when 1 then
82
+ Emerald.new.fibonacci
83
+ when 0 then
84
+ Emerald.new.fizzbizz
85
+ else
86
+ Emerald.new.version
87
+ end
88
+
89
+ puts ''
90
+ puts 'helpを入力またはTab補完で実行しましょう!'
91
+
92
+ begin
93
+ str = %w[sessi kashi exit help].map!(&:freeze).freeze
94
+
95
+ once = %w[find delete remove rename makefolder NumberGame2 Encode week calendar NumberGame].map!(&:freeze).freeze
96
+
97
+ lucky = %w[loto6 Numbers kuji].map!(&:freeze).freeze
98
+
99
+ dark = %w[OneRunner Eval output].map!(&:freeze).freeze
100
+
101
+ denki = %w[Anpea Volt Rister].map!(&:freeze).freeze
102
+
103
+ other = %w[weather reader atom result rss].map!(&:freeze).freeze
104
+
105
+ WORDS = (str + once + lucky + dark + denki + other).map!(&:freeze).freeze
106
+
107
+ Readline.completion_proc = proc { |word|
108
+ WORDS.grep(/\A#{Regexp.quote word}/)
109
+ }
110
+
111
+ print '> '
112
+
113
+ # search words exit!
114
+ while (line = Readline.readline(''))
115
+
116
+ line.chomp!
117
+
118
+ if line.match?(str[0])
119
+
120
+ def seru(b)
121
+ (b - 32) * 5 / 9
122
+ end
123
+ puts '華氏を入力してください!'
124
+ .print '> '
125
+ f = gets.to_i
126
+ m = seru(f)
127
+ puts "摂氏は、#{m.round}です。"
128
+
129
+ print '> '
130
+
131
+ elsif line.match?(str[1])
132
+
133
+ def seru(b)
134
+ (1.8 * b) + 32
135
+ end
136
+ puts '摂氏を入力してください!'
137
+ print '> '
138
+ f = gets.to_i
139
+ m = seru(f)
140
+ puts "華氏は、#{m.round}です。"
141
+
142
+ print '> '
143
+
144
+ elsif line.match?(str[2])
145
+ exit!
146
+
147
+ elsif line.match?(lucky[0])
148
+
149
+ class Loto6
150
+ def sum(a, b, c, d, e, f)
151
+ x = Random.rand(a) + 1
152
+ y = Random.rand(b) + 1
153
+ z = Random.rand(c) + 1
154
+ s = Random.rand(d) + 1
155
+ t = Random.rand(e) + 1
156
+ d = Random.rand(f) + 1
157
+ [x, y, z, s, t, d]
158
+ end
159
+ end
160
+
161
+ taka = Loto6.new
162
+ n = taka.sum(43, 43, 43, 43, 43, 43)
163
+
164
+ puts 'Loto6で参考にする数字をランダムで表示します!'
165
+ puts ''
166
+ print n
167
+ print ' '
168
+ puts ''
169
+ puts ''
170
+ puts '※当たるも八卦、当たらぬも八卦。勝負は時の運です。'
171
+
172
+ print '> '
173
+
174
+ elsif line.match?(lucky[1])
175
+
176
+ puts 'ナンバーズで参考にする数字をランダムで表示します!'
177
+ puts ''
178
+ class Numbers
179
+ def sum(a, b, c, d)
180
+ x = Random.rand(a)
181
+ y = Random.rand(b)
182
+ z = Random.rand(c)
183
+ s = Random.rand(d)
184
+ [x, y, z, s]
185
+ end
186
+ end
187
+
188
+ taka = Numbers.new
189
+ p taka.sum(10, 10, 10, 10)
190
+ puts ''
191
+ puts '※当たるも八卦、当たらぬも八卦。勝負は時の運です。'
192
+
193
+ print '> '
194
+
195
+ elsif line.match?(lucky[2])
196
+
197
+ puts '今日の運勢を占ってみましょう。'
198
+ puts '大吉→中吉→吉→小吉→凶→大凶'
199
+
200
+ a = rand(16)
201
+
202
+ case a
203
+ when 0..2
204
+ puts '大吉'
205
+ puts 'さぁ、外に出て頑張ろう。仕事へGo!'
206
+ when 3..5
207
+ puts '中吉'
208
+ puts 'ほどほどな普通。ストレスと向き合え!'
209
+ when 6..8
210
+ puts '吉'
211
+ puts 'だんだん疲れてきたんだな。ゆっくり休め!'
212
+ when 9..11
213
+ puts '小吉'
214
+ puts 'あまりいいことがないから、ジッとしているに限る。'
215
+ when 12..14
216
+ puts '凶'
217
+ puts 'ピンチのあとのチャンス到来。あきらめるな。'
218
+ when 15..16
219
+ puts '大凶'
220
+ puts '今日は何かまずい気をつけろ!'
221
+ else
222
+ puts '数字があふれています!注意!'
223
+ end
224
+ print '> '
225
+
226
+ elsif line.match?(dark[0])
227
+
228
+ begin
229
+ puts '
230
+ ワンライナー、1行コードの館へようこそ。さぁ、はじめましょう!'
231
+ print '> '
232
+ re = gets.chomp
233
+ puts ''
234
+ eval(re)
235
+ puts ''
236
+ rescue StandardError => et
237
+ p et
238
+ print '> '
239
+ puts 'エラーです。文字列を確認してください!'
240
+ puts ''
241
+ retry
242
+ ensure
243
+ puts '終了は exit を入力してください!'
244
+ end
245
+
246
+ print '> '
247
+
248
+ elsif line.match?(denki[0])
249
+
250
+ def anpea(a, b)
251
+ b / a
252
+ end
253
+
254
+ puts ''
255
+ puts '抵抗を入力してください'
256
+
257
+ print '> '
258
+ f = gets.to_i
259
+
260
+ puts ''
261
+ puts '電圧を入力してください'
262
+ print '> '
263
+
264
+ g = gets.to_i
265
+ m = anpea(f, g)
266
+
267
+ puts
268
+ puts "電流は#{m.round}です。"
269
+
270
+ print '> '
271
+
272
+ elsif line.match?(denki[1])
273
+
274
+ def volt(c, d)
275
+ c * d
276
+ end
277
+
278
+ puts
279
+ puts '抵抗を入力してください'
280
+ print '> '
281
+
282
+ h = gets.to_i
283
+ puts
284
+ puts '電流を入力してください'
285
+
286
+ print '> '
287
+
288
+ i = gets.to_i
289
+ j = volt(h, i)
290
+
291
+ puts ''
292
+ puts "電圧は#{j.round}です。"
293
+
294
+ print '> '
295
+
296
+ elsif line.match?(denki[2])
297
+
298
+ def rister(k, l)
299
+ k / l
300
+ end
301
+
302
+ puts
303
+ puts '電流を入力してください'
304
+ print '> '
305
+
306
+ l = gets.to_i
307
+ puts ''
308
+ puts '電圧を入力してください'
309
+
310
+ print '> '
311
+
312
+ k = gets.to_i
313
+ q = rister(k, l)
314
+
315
+ puts ''
316
+ puts "抵抗は#{q.round}です。"
317
+
318
+ print '> '
319
+
320
+ elsif line.match?(str[3])
321
+
322
+ puts 'COMMAND'.center(60, '-')
323
+
324
+ puts '
325
+ sessi 華氏から摂氏へ変換します
326
+
327
+ kashi 摂氏から華氏へ変換します
328
+
329
+ kuji 今日の運勢を占います
330
+
331
+ Numbers Numbers4の候補となる数字を乱数を使って出力します
332
+
333
+ loto6 Loto6の候補となる数字を乱数を使って出力します
334
+
335
+ OneRunner ワンライナーの館へ案内します
336
+
337
+ delete ファイルを指定して削除できます
338
+
339
+ find 単語を探します
340
+
341
+ remove フォルダを消します
342
+
343
+ rename ファイルの名前を変えます
344
+
345
+ makefolder フォルダを作成します
346
+
347
+ NumberGame 数字当てゲームです (疑似乱数版)
348
+
349
+ NumberGame2 数字当てゲームです (乱数版)
350
+
351
+ Encode 文字列のエンコードを評価します
352
+
353
+ Eval eval族の館へようこそ、足し算などが行えます
354
+
355
+ Anpea オームの法則を使い、電流を調べます
356
+
357
+ Volt オームの法則を使い、電圧を調べます
358
+
359
+ Rister オームの法則を使い、抵抗を調べます
360
+
361
+ week 現在日付と曜日を表示します
362
+
363
+ calendar PyCallでpythonを呼び出しカレンダー表示します
364
+
365
+ output 外部コマンドを実行できます
366
+ ※ ただし、入力待ちは実行できません
367
+
368
+ weather zinbei2の天気機能を移植しました
369
+
370
+ reader RSSの取得先からタイトル表示 (雨音から移植)
371
+
372
+ atom gem install feedjira (v3.0.0~)
373
+ gem install httparty
374
+ atom形式のrssを読み込むことができます
375
+
376
+ result rssの記号を個数としてカウントします
377
+ ただし、カウント後zinbeiwを終了します
378
+
379
+ rss RSS投稿時間帯を判別します
380
+
381
+ 終了するときは、exitと入力します'
382
+
383
+ puts 'COMMAND'.center(60, '-')
384
+ print '> '
385
+
386
+ elsif line.match?(once[0])
387
+
388
+ begin
389
+ print '探したい文字列を入力してください: '
390
+ re = gets.chomp
391
+ rescue StandardError => et
392
+ p et
393
+ puts 'エラーです。文字列を確認してください!'
394
+ retry
395
+ end
396
+
397
+ begin
398
+ print '探したいフォルダのパスを指定してください: '
399
+ fo = gets.chomp
400
+ rescue StandardError => es
401
+ p es
402
+ puts 'エラーです。文字列を確認してください!'
403
+ end
404
+
405
+ begin
406
+ Dir.chdir(fo)
407
+ rescue Errno::EEXIST
408
+ Errno::EEXIST
409
+ end
410
+
411
+ begin
412
+ print 'ファイル名を拡張子を含んで入力してください: '
413
+
414
+ filename = gets.chomp
415
+ File.open(filename) do |d|
416
+ puts ' '
417
+
418
+ while (liner = d.gets)
419
+ liner.chomp!
420
+ next unless liner.match?(re)
421
+ printf('%4d 行目 : %s ', d.lineno, liner)
422
+ print ': Find!(発見!)'
423
+ puts ' '
424
+ puts ' '
425
+ end
426
+ end
427
+ rescue StandardError => ex
428
+ p ex
429
+ puts 'エラーです。ファイル名を確認してください。\n'
430
+ retry
431
+ ensure
432
+ puts '終了は exit を入力してください!'
433
+ end
434
+
435
+ print '> '
436
+
437
+ elsif line.match?(once[1])
438
+
439
+ begin
440
+ print '消したいフォルダのパスを指定してください: '
441
+ mo = gets.chomp
442
+ rescue StandardError => es
443
+ p es
444
+ puts 'エラーです。文字列を確認してください!'
445
+ end
446
+
447
+ begin
448
+ Dir.chdir(mo)
449
+ rescue Errno::EEXIST
450
+ Errno::EEXIST
451
+ end
452
+
453
+ begin
454
+ print 'ファイル名を拡張子を含んで入力してください: '
455
+
456
+ del = readline.chomp!
457
+ File.delete(del)
458
+
459
+ puts '削除しました。'
460
+ rescue StandardError => ex
461
+ p ex
462
+ puts 'エラーです。ファイル名を確認してください。\n'
463
+ retry
464
+ ensure
465
+ puts '終了は exit を入力してください!'
466
+ end
467
+
468
+ print '> '
469
+
470
+ elsif line.match?(once[2])
471
+
472
+ begin
473
+ print '削除したいフォルダのパスを指定してください: '
474
+ st = gets.chomp
475
+ rescue StandardError => es
476
+ p es
477
+ puts 'エラーです。文字列を確認してください!'
478
+ end
479
+
480
+ begin
481
+ Dir.chdir(st)
482
+ rescue Errno::EEXIST
483
+ Errno::EEXIST
484
+ end
485
+
486
+ begin
487
+ print '削除したいフォルダ名を拡張子を含んで入力してください: '
488
+
489
+ rem = readline.chomp!
490
+ Dir.rmdir(rem)
491
+
492
+ puts '削除しました。'
493
+ rescue StandardError => ex
494
+ p ex
495
+ puts 'エラーです。ファイル名を確認してください。\n'
496
+ retry
497
+ ensure
498
+ puts '終了は exit を入力してください!'
499
+ end
500
+
501
+ print '> '
502
+
503
+ elsif line.match?(once[3])
504
+
505
+ begin
506
+ print '名前を変えたいフォルダのパスを指定してください: '
507
+ nem = gets.chomp
508
+ rescue StandardError => es
509
+ p es
510
+ puts 'エラーです。文字列を確認してください!'
511
+ end
512
+
513
+ begin
514
+ Dir.chdir(nem)
515
+ rescue Errno::EEXIST
516
+ Errno::EEXIST
517
+ end
518
+
519
+ begin
520
+ print '現在のファイル名を拡張子を含んで入力してください: '
521
+ re = gets.chomp!
522
+ rescue StandardError => ex
523
+ p ex
524
+ puts 'エラーです。ファイル名を確認してください。\n'
525
+ retry
526
+ end
527
+
528
+ begin
529
+ print '変更するファイル名を拡張子を含んで入力してください: '
530
+
531
+ no = gets.chomp!
532
+
533
+ File.rename(re, no)
534
+
535
+ puts '変更しました。'
536
+ rescue StandardError => ex
537
+ p ex
538
+ puts 'エラーです。ファイル名を確認してください。\n'
539
+ retry
540
+ ensure
541
+ puts '終了は exit を入力してください!'
542
+ end
543
+
544
+ print '> '
545
+
546
+ elsif line.match?(once[4])
547
+
548
+ begin
549
+ print '作成したいフォルダのパスを指定してください: '
550
+ mk = gets.chomp
551
+ rescue StandardError => es
552
+ p es
553
+ puts 'エラーです。文字列を確認してください!'
554
+ end
555
+
556
+ begin
557
+ Dir.chdir(mk)
558
+ rescue Errno::EEXIST
559
+ Errno::EEXIST
560
+ end
561
+
562
+ begin
563
+ print 'フォルダ名を入力してください: '
564
+
565
+ ma = readline.chomp!
566
+ Dir.mkdir(ma)
567
+
568
+ puts '作成しました。'
569
+ rescue StandardError => ex
570
+ p ex
571
+ puts 'エラーです。ファイル名を確認してください。\n'
572
+ retry
573
+ ensure
574
+ puts '終了は exit を入力してください!'
575
+ end
576
+
577
+ print '> '
578
+
579
+ elsif line.match?(once[5])
580
+
581
+ begin
582
+ x = SecureRandom.random_number(1..99).freeze
583
+
584
+ puts ''
585
+ puts '何回まで、繰り返すか指定してください (20回が限度です)'
586
+ print '> '
587
+ num = (gets.chomp.to_i).freeze
588
+
589
+ # ^[+-]?([1-9][0-9]*|0)$
590
+ num_s = num.to_s
591
+ unless num_s.match('^([1-9][0-9]?|0[1-9])$') || {}[:match]
592
+ tanraku_execute
593
+ end
594
+
595
+ puts "#{num}回、繰り返すまでに当ててください:"
596
+ puts ''
597
+ puts '1 ~ 99までの数字をいれてください、NumberGameスタート!'
598
+ print '> '
599
+
600
+ if num < 21
601
+ num.times do |z|
602
+ input_n = (gets.chomp.to_i).freeze
603
+ input_m = input_n.to_s
604
+
605
+ # 1 ~ 99までの整数
606
+ unless input_m.match('^([1-9][0-9]?|0[1-9])$') || {}[:match]
607
+ tanraku_execute
608
+ end
609
+
610
+ if input_m.match(/^0/o)
611
+ puts ''
612
+ puts '0と00または空白を入力したため、終了します...'
613
+ puts ''
614
+ break
615
+ elsif input_n < x
616
+ puts 'コンピュータの選んだ数字の方が大きいため大きい数字を入力してください'
617
+ print '> '
618
+ elsif input_n > x
619
+ puts 'コンピュータの選んだ数字の方が小さいため小さい数字を入力してください'
620
+ print '> '
621
+ elsif input_n == x
622
+ puts ''
623
+ puts 'おめでとうございます、正解です'
624
+ puts ''
625
+ puts "#{num}回範囲内: #{z+1}回目で正解しました"
626
+ puts ''
627
+ break
628
+ else
629
+ puts ''
630
+ puts '正解は' + x.to_s + 'でした'
631
+ puts ''
632
+ puts '処理を終了します...'
633
+ puts ''
634
+ break
635
+ end
636
+ end
637
+ else
638
+ puts ''
639
+ puts '繰り返す回数が20回を超えたため、終了します...'
640
+ puts ''
641
+ end
642
+
643
+ rescue StandardError => s
644
+ puts s.backtrace
645
+ tanraku_execute
646
+
647
+ ensure
648
+ puts '正解は' + x.to_s + 'でした'
649
+ puts ''
650
+ puts 'お疲れさまでした、NumberGameを終了します...処理を入力してください!'
651
+ print '> '
652
+ end
653
+
654
+ elsif line.match?(once[6])
655
+
656
+ puts ''
657
+
658
+ class Enco
659
+ begin
660
+ puts '文字列を入力してください'
661
+ print '> '
662
+ filename = gets.chomp
663
+ rescue StandardError => ee
664
+ p ee
665
+ puts 'エラーです。文字列を確認してください!'
666
+ end
667
+
668
+ puts ''
669
+ puts '変更前のエンコードを指定してください'
670
+ puts 'ISO-2022-JP,SJIS,eucJP,UTF-8 が候補です。'
671
+ print '> '
672
+ befenco = gets.chomp
673
+
674
+ begin
675
+ puts ''
676
+ puts 'エンコードを指定してください'
677
+ puts 'ISO-2022-JP,SJIS,eucJP,UTF-8 が候補です。'
678
+ print '> '
679
+ aftenco = gets.chomp
680
+ puts
681
+ rescue StandardError => ed
682
+ p ed
683
+ puts 'エラーです。エンコーディングを確認してください!'
684
+ end
685
+
686
+ ut = Encoding::Converter.new(befenco, aftenco)
687
+ p ut.convert(filename)
688
+ ut.finish.dump
689
+ puts
690
+
691
+ ensure
692
+ puts '終了は exit を入力してください!'
693
+ puts
694
+ end
695
+ print '> '
696
+ elsif line.match?(dark[1])
697
+
698
+ begin
699
+ puts 'eval族の館へようこそ!
700
+ 簡単な文字列を評価してください'
701
+ print '> '
702
+ re = gets.chomp
703
+ puts ''
704
+ p eval(re)
705
+ puts ''
706
+ rescue StandardError => et
707
+ p et
708
+ print '> '
709
+ puts 'エラーです。文字列を確認してください!'
710
+ puts ''
711
+ retry
712
+ ensure
713
+ puts '終了は exit を入力してください!'
714
+ end
715
+ print '> '
716
+
717
+ elsif line.match?(dark[2])
718
+
719
+ begin
720
+ puts ''
721
+ puts 'OUTPUT'.center(60, '-')
722
+ puts ''
723
+ puts '外部コマンドを実行できます!'
724
+ puts ''
725
+ puts 'OUTPUT'.center(60, '-')
726
+ puts ''
727
+ print '> '
728
+ re = gets.chomp
729
+ puts ''
730
+ stdout, stderr, status = Open3.capture3(re)
731
+ puts stdout
732
+ puts ''
733
+ rescue StandardError => et
734
+ p et
735
+ print '> '
736
+ puts 'エラーです。文字列を確認してください!'
737
+ puts ''
738
+ retry
739
+ ensure
740
+ puts '終了は exit を入力してください!'
741
+ end
742
+ print '> '
743
+
744
+ elsif line.match?(once[7])
745
+
746
+ puts ''
747
+ puts 'WEEK'.center(60, '-')
748
+ puts ''
749
+ puts '入力した日付を曜日で判定します'
750
+ puts '半角数字で入力してください'
751
+ puts 'それでは、スタート!'
752
+ puts ''
753
+ puts 'WEEK'.center(60, '-')
754
+ puts ''
755
+
756
+ begin
757
+ puts '調べたい年を入力してください'
758
+ print '> '
759
+ nen = gets.chomp.to_i
760
+ rescue StandardError => ee
761
+ p ee
762
+ puts 'エラーです。数字を確認してください!'
763
+ end
764
+
765
+ puts ''
766
+
767
+ begin
768
+ puts '調べたい月を入力してください'
769
+ print '> '
770
+ mon = gets.chomp.to_i
771
+ rescue StandardError => ey
772
+ p ey
773
+ puts 'エラーです。数字を確認してください!'
774
+ end
775
+
776
+ puts ''
777
+
778
+ begin
779
+ puts '調べたい日を入力してください'
780
+ print '> '
781
+ days = gets.chomp.to_i
782
+ rescue StandardError => ex
783
+ p ex
784
+ puts 'エラーです。数字を確認してください!'
785
+ end
786
+
787
+ puts ''
788
+
789
+ t = Time.local(nen, mon, days)
790
+
791
+ if t.sunday?
792
+ puts "#{nen}年#{mon}月#{days}日は、日曜日です。"
793
+ puts ''
794
+ elsif t.monday?
795
+ puts "#{nen}年#{mon}月#{days}日は、月曜日です。"
796
+ puts ''
797
+ elsif t.tuesday?
798
+ puts "#{nen}年#{mon}月#{days}日は、火曜日です。"
799
+ puts ''
800
+ elsif t.wednesday?
801
+ puts "#{nen}年#{mon}月#{days}日は、水曜日です。"
802
+ puts ''
803
+ elsif t.thursday?
804
+ puts "#{nen}年#{mon}月#{days}日は、木曜日です。"
805
+ puts ''
806
+ elsif t.friday?
807
+ puts "#{nen}年#{mon}月#{days}日は、金曜日です。"
808
+ puts ''
809
+ elsif t.saturday?
810
+ puts "#{nen}年#{mon}月#{days}日は、土曜日です。"
811
+ puts ''
812
+ else
813
+ puts 'ありえない曜日を指しています...終了します! '
814
+ exit!
815
+ end
816
+
817
+ print '> '
818
+
819
+ elsif line.match?(once[8])
820
+
821
+ puts ''
822
+ puts 'WEEK'.center(60, '-')
823
+ puts ''
824
+ puts '入力した日付をカレンダーで表示します'
825
+ puts '半角数字で入力してください'
826
+ puts 'それでは、スタート!'
827
+ puts ''
828
+ puts 'WEEK'.center(60, '-')
829
+ puts ''
830
+
831
+ begin
832
+ puts '調べたい年を入力してください'
833
+ print '> '
834
+ nen = gets.chomp.to_i
835
+ rescue StandardError => ee
836
+ p ee
837
+ puts 'エラーです。数字を確認してください!'
838
+ end
839
+
840
+ puts ''
841
+
842
+ begin
843
+ puts '調べたい月を入力してください'
844
+ print '> '
845
+ mon = gets.chomp.to_i
846
+ rescue StandardError => ey
847
+ p ey
848
+ puts 'エラーです。数字を確認してください!'
849
+ end
850
+
851
+ puts ''
852
+
853
+ t = Time.local(nen, mon)
854
+
855
+ pyimport :calendar
856
+ puts(calendar.month(nen, mon))
857
+
858
+ puts ''
859
+ print '> '
860
+
861
+ elsif line.match?(other[0])
862
+
863
+ text = <<-EOS
864
+ ------------------------------------------------------------------------
865
+
866
+ IDの詳細はこちら → https://github.com/takkii/Utakata/wiki/Utakata-wiki
867
+
868
+ 日本全国のIDから自分の地域IDを入力!
869
+ ------------------------------------------------------------------------
870
+ EOS
871
+
872
+ links = Rinku.auto_link(text, mode=:all, link_attr=nil, skip_tags=nil)
873
+ puts Sanitize.clean(links)
874
+
875
+ begin
876
+ puts '調べたい地域のIDを入力してください'
877
+ puts ''
878
+ print '> '
879
+ ID = gets.chomp
880
+ rescue StandardError => es
881
+ p es
882
+ puts 'エラーです。IDを確認してください!'
883
+ end
884
+
885
+ url = 'https://weather.tsukumijima.net/api/forecast?city=' + ID
886
+ uri = URI.parse(url)
887
+ json = Net::HTTP.get(uri)
888
+ result = JSON.parse!(json)
889
+ today_tel = result['forecasts'][0]['telop']
890
+ tomor_tel = result['forecasts'][1]['telop']
891
+ min_tem = result['forecasts'][1]['temperature']['min']['celsius']
892
+ max_tem = result['forecasts'][1]['temperature']['max']['celsius']
893
+ des = result['description']['text']
894
+ des1 = result['description']['publicTime']
895
+ des2 = DateTime.parse(des1)
896
+
897
+ puts ' 天気予報 '.center(60, '-')
898
+ puts ''
899
+ puts '今日の天気は、' + today_tel + ' でしょう '
900
+ puts '最低気温は、' + min_tem + '℃' + ' でしょう '
901
+ puts '最高気温は、' + max_tem + '℃' + ' でしょう '
902
+ puts '明日の天気は、' + tomor_tel + ' でしょう '
903
+ puts ''
904
+ puts ' 天気予報 '.center(60, '-')
905
+ puts ''
906
+ puts ''
907
+ puts ' 天気概況文 '.center(60, '-')
908
+ puts
909
+ puts des
910
+ puts ''
911
+ print ' 天気概況文の発表時刻 : '
912
+ puts des2.strftime('%Y年%m月%d日 %H時%M分%S秒')
913
+ puts ''
914
+ puts ' 天気概況文 '.center(60, '-')
915
+
916
+ print '> '
917
+
918
+ elsif line.match?(other[1])
919
+
920
+ begin
921
+ puts '調べたいRSSURLを入力してください'
922
+ print '> '
923
+ URL = gets.chomp
924
+ rescue StandardError => eq
925
+ p eq
926
+ puts 'エラーです。URLを確認してください!'
927
+ end
928
+
929
+ rss = RSS::Parser.parse(URL)
930
+
931
+ puts ''
932
+
933
+ rss.items.collect do |scale|
934
+ puts scale.title
935
+ end
936
+
937
+ puts ''
938
+ print '> '
939
+
940
+ elsif line.match?(other[2])
941
+
942
+ begin
943
+ puts ''
944
+ puts '調べたいRSSのURLを入力してください'
945
+ puts ''
946
+ print '>'
947
+ URL = gets.chomp
948
+ rescue StandardError => es
949
+ p es
950
+ puts 'エラーです。URLを確認してください!'
951
+ end
952
+
953
+ Feedjira.logger.level = Logger::FATAL
954
+ atom = HTTParty.get(URL).body
955
+
956
+ Feedjira.parse(atom).entries.collect do |entry|
957
+ v = /1[0-9]/
958
+ w = /0[0-9]/
959
+ x = /2[0-4]/
960
+ s = entry.published.to_time.strftime '%H'
961
+
962
+ if s.match?(v)
963
+ print '#'
964
+ print ' '
965
+ elsif s.match?(w)
966
+ print '$'
967
+ print ' '
968
+ elsif s.match?(x)
969
+ print '@'
970
+ print ' '
971
+ end
972
+ end
973
+
974
+ puts ''
975
+ print '>'
976
+
977
+ elsif line.match?(other[3])
978
+
979
+ begin
980
+ puts 'rssの出力結果を貼り付けてください'
981
+ print '>'
982
+ re = gets.chomp
983
+ rescue StandardError => ee
984
+ p ee
985
+ puts 'エラーです。数字を確認してください!'
986
+ end
987
+
988
+ puts 'ログの最近の投稿時間を判別します...'
989
+
990
+ str = re.split('')
991
+
992
+ puts ''
993
+ print '20~24時に投稿した回数は...'
994
+ print str.count('@')
995
+ puts ' 回あります'
996
+ print '0時から9時に投稿した回数は...'
997
+ print str.count('$')
998
+ puts ' 回あります'
999
+ print '10時から19時に投稿した回数は...'
1000
+ print str.count('#')
1001
+ puts ' 回あります'
1002
+
1003
+ puts ''
1004
+ enum = [str.count('@'), str.count('$'), str.count('#')]
1005
+
1006
+ q = enum.max
1007
+ t = enum.min
1008
+
1009
+ puts '最も多い数字は ' + q.to_s + ' 回です'
1010
+ puts '最も少ない数字は ' + t.to_s + ' 回です'
1011
+
1012
+ puts ''
1013
+ print '合計 '
1014
+ print str.count('@') + str.count('$') + str.count('#')
1015
+ puts ' 回です'
1016
+ puts ''
1017
+
1018
+ exit!
1019
+
1020
+ elsif line.match?(other[4])
1021
+
1022
+ begin
1023
+ puts '調べたいRSSのURLを入力してください'
1024
+ print '>'
1025
+ URL = gets.chomp
1026
+ rescue StandardError => es
1027
+ p es
1028
+ puts 'エラーです。URLを確認してください!'
1029
+ end
1030
+
1031
+ rss = RSS::Parser.parse(URL)
1032
+
1033
+ rss.items.collect do |scale|
1034
+ # puts scale.pubDate.strftime '投稿時刻 : %Y年%m月%d日 %H時%M分'
1035
+ # scale.pubDate.strftime '%H'
1036
+
1037
+ v = /1[0-9]/
1038
+ w = /0[0-9]/
1039
+ x = /2[0-4]/
1040
+ s = scale.pubDate.strftime '%H'
1041
+
1042
+ if s.match?(v)
1043
+ print '#'
1044
+ print ' '
1045
+ elsif s.match?(w)
1046
+ print '$'
1047
+ print ' '
1048
+ elsif s.match?(x)
1049
+ print '@'
1050
+ print ' '
1051
+ end
1052
+ end
1053
+ puts ''
1054
+ print '>'
1055
+
1056
+ elsif line.match?(once[9])
1057
+
1058
+ begin
1059
+ x = Random.rand(1..99)
1060
+
1061
+ puts ''
1062
+ puts '何回まで、繰り返すか指定してください (20回が限度です)'
1063
+ print '> '
1064
+ num = (gets.chomp.to_i).freeze
1065
+
1066
+ # ^[+-]?([1-9][0-9]*|0)$
1067
+ num_s = num.to_s
1068
+ unless num_s.match('^([1-9][0-9]?|0[1-9])$') || {}[:match]
1069
+ tanraku_execute
1070
+ end
1071
+
1072
+ puts "#{num}回、繰り返すまでに当ててください:"
1073
+ puts ''
1074
+ puts '1 ~ 99までの数字をいれてください、NumberGameスタート!'
1075
+ print '> '
1076
+
1077
+ if num < 21
1078
+ num.times do |z|
1079
+ input_n = (gets.chomp.to_i).freeze
1080
+ input_m = input_n.to_s
1081
+
1082
+ # 1 ~ 99までの整数
1083
+ unless input_m.match('^([1-9][0-9]?|0[1-9])$') || {}[:match]
1084
+ tanraku_execute
1085
+ end
1086
+
1087
+ if input_m.match(/^0/o)
1088
+ puts ''
1089
+ puts '0と00または空白を入力したため、終了します...'
1090
+ puts ''
1091
+ break
1092
+ elsif input_n < x
1093
+ puts 'コンピュータの選んだ数字の方が大きいため大きい数字を入力してください'
1094
+ print '> '
1095
+ elsif input_n > x
1096
+ puts 'コンピュータの選んだ数字の方が小さいため小さい数字を入力してください'
1097
+ print '> '
1098
+ elsif input_n == x
1099
+ puts ''
1100
+ puts 'おめでとうございます、正解です'
1101
+ puts ''
1102
+ puts "#{num}回範囲内: #{z+1}回目で正解しました"
1103
+ puts ''
1104
+ break
1105
+ else
1106
+ puts ''
1107
+ puts '正解は' + x.to_s + 'でした'
1108
+ puts ''
1109
+ puts '処理を終了します...'
1110
+ puts ''
1111
+ break
1112
+ end
1113
+ end
1114
+ else
1115
+ puts ''
1116
+ puts '繰り返す回数が20回を超えたため、終了します...'
1117
+ puts ''
1118
+ end
1119
+
1120
+ rescue StandardError => s
1121
+ puts s.backtrace
1122
+ tanraku_execute
1123
+
1124
+ ensure
1125
+ puts '正解は' + x.to_s + 'でした'
1126
+ puts ''
1127
+ puts 'お疲れさまでした、NumberGameを終了します...処理を入力してください!'
1128
+ print '> '
1129
+ end
1130
+
1131
+ else
1132
+ puts "Can't Enter this Words. Please input help"
1133
+ print '> '
1134
+ end
1135
+ end
1136
+
1137
+ # Exception throw!
1138
+ rescue StandardError => ex
1139
+ p ex
1140
+ puts 'エラーです。文字列を確認してください!'
1141
+ retry
1142
+ print '> '
1143
+ # Once Run.
1144
+ ensure
1145
+ puts '終了は exit を入力してください!'
1146
+ GC.compact
1147
+ end
1148
+
1149
+ __END__