kaki-utils 0.0.1
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.
- checksums.yaml +7 -0
- data/README.md +46 -0
- data/lib/kaki/utils/imgsuffix.rb +8 -0
- data/lib/kaki/utils/rec_decimal.rb +41 -0
- data/lib/kaki/utils/retry.rb +18 -0
- data/lib/kaki/utils.rb +93 -0
- metadata +48 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: aa8adc8d24d05a18c36681dafbc80dff35eed800
|
4
|
+
data.tar.gz: 0fb3a03864ed75010bea5573724fdb55334fb61b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2c41cac77aa4e932d292dac9586f54d252c629fd74bdb602b7169eb6cfbd381b0dca13b98cc139b7c16f420647c07a52d871fbcf3b780eac7b3c4d6dda3766bd
|
7
|
+
data.tar.gz: b9e9ae7aa96f02ce9569b3c3ac97e81634d1feb114636e631d6b1cb051bbf90fef5f51397d438d4996e65d982ff3c2b0473e82c12e6c5d2deef1ca20e57a4076
|
data/README.md
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
## modele Utils
|
2
|
+
|
3
|
+
```ruby
|
4
|
+
require "kaki/utils"
|
5
|
+
```
|
6
|
+
|
7
|
+
methods
|
8
|
+
|
9
|
+
* Utils.imgexist?(url)
|
10
|
+
* Utils.getfile(url, filename, max=0)
|
11
|
+
* Utils.key_wait
|
12
|
+
* Utils.progress_bar
|
13
|
+
* Utils.delete\_non\_img(file_name)
|
14
|
+
* Utils.delete\_empty\_folder(folder_name = './')
|
15
|
+
* Utils.bell (only Ubuntu)
|
16
|
+
|
17
|
+
## Recurring decimal
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
require "kaki/utils/rec_decimal"
|
21
|
+
```
|
22
|
+
|
23
|
+
methods
|
24
|
+
|
25
|
+
* Rational#to\_rec_decimal
|
26
|
+
* String#to_r
|
27
|
+
|
28
|
+
## image suffix
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
require "kaki/utils/imgsuffix"
|
32
|
+
```
|
33
|
+
|
34
|
+
method
|
35
|
+
|
36
|
+
* String#imgsuffix
|
37
|
+
|
38
|
+
## n times retry
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
require "kaki/utils/retry"
|
42
|
+
```
|
43
|
+
method
|
44
|
+
|
45
|
+
* Integer#times_retry(message: true, wait: 0)
|
46
|
+
|
@@ -0,0 +1,41 @@
|
|
1
|
+
class Rational
|
2
|
+
#分数を循環小数に直す
|
3
|
+
def to_rec_decimal
|
4
|
+
f, num = (self < 0) ? ["-", -self] : ["", self]
|
5
|
+
|
6
|
+
i = num.to_i
|
7
|
+
result = f + i.to_s
|
8
|
+
ra = num - i
|
9
|
+
return result if ra.zero?
|
10
|
+
result += "."
|
11
|
+
|
12
|
+
remainder = ra.numerator
|
13
|
+
deno = ra.denominator
|
14
|
+
place = []
|
15
|
+
rems = []
|
16
|
+
begin
|
17
|
+
rems << remainder
|
18
|
+
place << remainder * 10 / deno
|
19
|
+
remainder = remainder * 10 % deno
|
20
|
+
return result + place.join if remainder.zero?
|
21
|
+
end while not (idx = rems.find_index(remainder))
|
22
|
+
place.insert(idx, "(")
|
23
|
+
result + place.join + ")"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
class String
|
28
|
+
#循環小数を分数に直す
|
29
|
+
alias :__to_r__ :to_r
|
30
|
+
def to_r
|
31
|
+
st = delete(" ")
|
32
|
+
return st.__to_r__ unless (m = /^([^\d]?)(\d+)\.(\d*)\((\d+)\)$/.match(st))
|
33
|
+
f = (m[1] == "-") ? -1 : 1
|
34
|
+
|
35
|
+
result = (m[2] + "." + m[3]).__to_r__
|
36
|
+
l = m[4].length
|
37
|
+
result += Rational(m[4].to_i, 10 ** l - 1) * Rational(1, 10) ** m[3].length
|
38
|
+
result * f
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Integer
|
2
|
+
def times_retry(message: true, wait: 0)
|
3
|
+
n = 1
|
4
|
+
begin
|
5
|
+
yield(n)
|
6
|
+
rescue => e
|
7
|
+
if n <= self
|
8
|
+
puts "Error: retry #{n}" if message
|
9
|
+
puts e.backtrace if message
|
10
|
+
n += 1
|
11
|
+
sleep(wait)
|
12
|
+
retry
|
13
|
+
end
|
14
|
+
puts "Error: stop" if message
|
15
|
+
raise e
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/kaki/utils.rb
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'open-uri'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'fastimage'
|
4
|
+
require "io/console"
|
5
|
+
require 'gtk2'
|
6
|
+
|
7
|
+
module Utils
|
8
|
+
#画像か?
|
9
|
+
def imgexist?(url)
|
10
|
+
FastImage.size(url)
|
11
|
+
end
|
12
|
+
|
13
|
+
|
14
|
+
#Web上のバイナリファイルの保存
|
15
|
+
def getfile(url, filename, max=0)
|
16
|
+
count = 0
|
17
|
+
begin
|
18
|
+
open(filename, 'wb') do |file|
|
19
|
+
open(url) {|data| file.write(data.read)}
|
20
|
+
end
|
21
|
+
true
|
22
|
+
rescue
|
23
|
+
puts "ファイル入出力エラー: " + $!.message.encode("UTF-8")
|
24
|
+
count += 1
|
25
|
+
return false if count > max #max回までリトライする
|
26
|
+
puts "リトライ: #{count}"
|
27
|
+
sleep(1)
|
28
|
+
retry
|
29
|
+
end
|
30
|
+
end
|
31
|
+
module_function :imgexist?, :getfile
|
32
|
+
|
33
|
+
|
34
|
+
#一文字入力
|
35
|
+
def key_wait
|
36
|
+
c = nil
|
37
|
+
loop {break if (c = STDIN.getch)}
|
38
|
+
STDIN.cooked!
|
39
|
+
c
|
40
|
+
end
|
41
|
+
module_function :key_wait
|
42
|
+
|
43
|
+
|
44
|
+
#プログレスバーの表示
|
45
|
+
def progress_bar
|
46
|
+
w = Gtk::Window.new
|
47
|
+
w.signal_connect("destroy") {Gtk.main_quit}
|
48
|
+
w.set_size_request(300, 50)
|
49
|
+
w.border_width = 10
|
50
|
+
w.title = "Progress"
|
51
|
+
|
52
|
+
bar = Gtk::ProgressBar.new
|
53
|
+
w.add(bar)
|
54
|
+
|
55
|
+
Thread.new(bar) do |bar|
|
56
|
+
yield(bar)
|
57
|
+
end
|
58
|
+
|
59
|
+
w.show_all
|
60
|
+
Gtk.main
|
61
|
+
end
|
62
|
+
module_function :progress_bar
|
63
|
+
|
64
|
+
|
65
|
+
#画像ファイルでなければ削除
|
66
|
+
def delete_non_img(fname)
|
67
|
+
if Utils.imgexist?(fname)
|
68
|
+
false
|
69
|
+
else
|
70
|
+
FileUtils.rm(fname)
|
71
|
+
true
|
72
|
+
end
|
73
|
+
end
|
74
|
+
module_function :delete_non_img
|
75
|
+
|
76
|
+
|
77
|
+
#指定したディレクトリの空フォルダを削除
|
78
|
+
def delete_empty_folder(fname = './')
|
79
|
+
Dir.chdir(fname)
|
80
|
+
Dir.glob("*").each do |name|
|
81
|
+
next unless File.directory?(name)
|
82
|
+
Dir.rmdir(p name) if Dir.glob("./#{name}/*").empty? rescue next
|
83
|
+
end
|
84
|
+
end
|
85
|
+
module_function :delete_empty_folder
|
86
|
+
|
87
|
+
|
88
|
+
#ベルを鳴らす(Ubuntuのみ)
|
89
|
+
def bell
|
90
|
+
`paplay /usr/share/sounds/freedesktop/stereo/complete.oga`
|
91
|
+
end
|
92
|
+
module_function :bell
|
93
|
+
end
|
metadata
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: kaki-utils
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- obelisk
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-09-12 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: My trivial utilities.
|
14
|
+
email: obelisk_1968@mail.goo.ne.jp
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- README.md
|
20
|
+
- lib/kaki/utils.rb
|
21
|
+
- lib/kaki/utils/imgsuffix.rb
|
22
|
+
- lib/kaki/utils/rec_decimal.rb
|
23
|
+
- lib/kaki/utils/retry.rb
|
24
|
+
homepage:
|
25
|
+
licenses:
|
26
|
+
- MIT
|
27
|
+
metadata: {}
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ">="
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
requirements: []
|
43
|
+
rubyforge_project:
|
44
|
+
rubygems_version: 2.5.2
|
45
|
+
signing_key:
|
46
|
+
specification_version: 4
|
47
|
+
summary: My trivial utilities.
|
48
|
+
test_files: []
|