bbiff 0.2.0 → 0.2.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 +4 -4
- data/.gitignore +1 -0
- data/README.md +3 -0
- data/bbiff.gemspec +2 -3
- data/bin/bbiff-show +0 -0
- data/lib/bbiff/bbs_reader.rb +15 -18
- data/lib/bbiff/res_format.rb +6 -9
- data/lib/bbiff/version.rb +1 -1
- metadata +10 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a336858969f74c19921c4bcbbb9372c9b248b86a
|
4
|
+
data.tar.gz: 637d9a30868080c684f45e98be3e4b3cae0fa724
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcc542d4956eca74ea3ce9ef64b65828dfacc71212ab3498e69c35e27dc47442fa8e720ce869cb5b5759def5e01e4cd5e26e00c5e614b5ca88d7f5540e8b5961
|
7
|
+
data.tar.gz: 56c12ff08643a69dafe39feab20e0a49fb518dd135529e61bae7a28a7cd437ddea0a7b09a25a76a40a5dded7c41fb1ba2bdb0b6214d078db64b45c0c9d10846b
|
data/.gitignore
CHANGED
data/README.md
CHANGED
data/bbiff.gemspec
CHANGED
@@ -21,7 +21,6 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.10"
|
22
22
|
spec.add_development_dependency "rake", "~> 10.0"
|
23
23
|
spec.add_development_dependency "rspec"
|
24
|
-
spec.add_dependency "
|
25
|
-
spec.add_dependency "
|
26
|
-
spec.add_dependency "toml-rb"
|
24
|
+
spec.add_dependency "unicode-display_width", "~>1.0.2"
|
25
|
+
spec.add_dependency "toml-rb", "~>0.3.12"
|
27
26
|
end
|
data/bin/bbiff-show
CHANGED
File without changes
|
data/lib/bbiff/bbs_reader.rb
CHANGED
@@ -16,28 +16,18 @@ class C板
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def 設定
|
19
|
-
|
20
|
-
http.get(@設定URL.path)
|
21
|
-
}
|
22
|
-
r = 応答.body
|
19
|
+
r = ダウンロード(@設定URL)
|
23
20
|
return 設定をパーズする(r.force_encoding("EUC-JP").encode("UTF-8"))
|
24
21
|
end
|
25
22
|
|
26
23
|
def スレ一覧
|
27
|
-
|
28
|
-
http.get(@スレ一覧URL.path)
|
29
|
-
}
|
30
|
-
r = 応答.body
|
24
|
+
r = ダウンロード(@スレ一覧URL)
|
31
25
|
return r.force_encoding("EUC-JP").encode("UTF-8")
|
32
26
|
end
|
33
27
|
|
34
28
|
def dat(スレッド番号)
|
35
29
|
url = dat_url(スレッド番号)
|
36
|
-
|
37
|
-
p url
|
38
|
-
http.get(url.path)
|
39
|
-
}
|
40
|
-
r = 応答.body
|
30
|
+
r = ダウンロード(url)
|
41
31
|
return r.force_encoding("EUC-JP").encode("UTF-8")
|
42
32
|
end
|
43
33
|
|
@@ -47,12 +37,19 @@ class C板
|
|
47
37
|
|
48
38
|
def threads
|
49
39
|
スレ一覧.each_line.map do |line|
|
50
|
-
fail
|
40
|
+
fail 'スレ一覧のフォーマットが変です' unless line =~ /^(\d+)\.cgi,(.+?)\((\d+)\)$/
|
51
41
|
id, title, last = $1.to_i, $2, $3.to_i
|
52
42
|
Thread.new(self, id, title, last)
|
53
43
|
end
|
54
44
|
end
|
55
45
|
|
46
|
+
def ダウンロード(url)
|
47
|
+
応答 = Net::HTTP.start(url.host, url.port) { |http|
|
48
|
+
http.get(url.path)
|
49
|
+
}
|
50
|
+
return 応答.body
|
51
|
+
end
|
52
|
+
|
56
53
|
private
|
57
54
|
|
58
55
|
def 設定をパーズする(文字列)
|
@@ -66,7 +63,7 @@ class Post
|
|
66
63
|
attr_reader :no, :name, :mail, :body
|
67
64
|
|
68
65
|
def self.from_line(line)
|
69
|
-
no, name, mail, date, body, = line.split('<>')
|
66
|
+
no, name, mail, date, body, = line.split('<>', 6)
|
70
67
|
Post.new(no, name, mail, date, body)
|
71
68
|
end
|
72
69
|
|
@@ -83,7 +80,7 @@ class Post
|
|
83
80
|
end
|
84
81
|
|
85
82
|
def to_s
|
86
|
-
[no, name, mail, @date, body].join('<>')
|
83
|
+
[no, name, mail, @date, body, '', ''].join('<>')
|
87
84
|
end
|
88
85
|
|
89
86
|
private
|
@@ -113,6 +110,7 @@ class Thread
|
|
113
110
|
end
|
114
111
|
|
115
112
|
def posts(range)
|
113
|
+
fail ArgumentError unless range.is_a? Range
|
116
114
|
dat_for_range(range).each_line.map do |line|
|
117
115
|
Post.from_line(line.chomp).tap do |post|
|
118
116
|
# ついでに last を更新
|
@@ -128,8 +126,7 @@ class Thread
|
|
128
126
|
query = "#{range.first}-#{range.last}"
|
129
127
|
end
|
130
128
|
url = URI(dat_url + query)
|
131
|
-
|
132
|
-
res.body.force_encoding("EUC-JP").encode("UTF-8")
|
129
|
+
@board.ダウンロード(url).force_encoding("EUC-JP").encode("UTF-8")
|
133
130
|
end
|
134
131
|
end
|
135
132
|
|
data/lib/bbiff/res_format.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
1
|
require 'cgi'
|
2
|
-
require 'active_support'
|
3
|
-
require 'active_support/core_ext/numeric'
|
4
2
|
require_relative 'bbs_reader'
|
5
3
|
|
6
4
|
class Fixnum
|
@@ -25,22 +23,21 @@ def render_resno(no)
|
|
25
23
|
no.to_s
|
26
24
|
end
|
27
25
|
|
28
|
-
def render_date
|
26
|
+
def render_date(t)
|
29
27
|
weekday = [*'日月火水木金土'.each_char]
|
30
28
|
delta = Time.now - t
|
31
29
|
|
32
30
|
case delta
|
33
31
|
when 0...1
|
34
32
|
"たった今"
|
35
|
-
when 1...
|
33
|
+
when 1...60
|
36
34
|
"#{delta.to_i}秒前"
|
37
|
-
when
|
35
|
+
when 60...3600
|
38
36
|
"#{(delta / 60).to_i}分前"
|
39
|
-
when
|
37
|
+
when 3600...(24 * 3600)
|
40
38
|
"#{(delta / 3600).to_i}時間前"
|
41
|
-
# when (1.day)...Float::INFINITY
|
42
39
|
else
|
43
|
-
"
|
40
|
+
"%d/%d/%d(%s) %02d:%02d:%02d" % [t.year, t.month, t.day, weekday[t.wday], t.hour, t.min, t.sec]
|
44
41
|
end
|
45
42
|
end
|
46
43
|
|
@@ -48,7 +45,7 @@ def indent(n, text)
|
|
48
45
|
text.each_line.map { |line| n.en + line }.join
|
49
46
|
end
|
50
47
|
|
51
|
-
def render_body
|
48
|
+
def render_body(body)
|
52
49
|
unescaped = CGI.unescapeHTML(body.gsub(/<br>/i, "\n"))
|
53
50
|
indent(4, unescaped) + "\n"
|
54
51
|
end
|
data/lib/bbiff/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bbiff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yoteichi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -53,47 +53,33 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: unicode-display_width
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.0.2
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: unicode-display_width
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
68
|
+
version: 1.0.2
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: toml-rb
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- - "
|
73
|
+
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
75
|
+
version: 0.3.12
|
90
76
|
type: :runtime
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- - "
|
80
|
+
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
82
|
+
version: 0.3.12
|
97
83
|
description:
|
98
84
|
email:
|
99
85
|
- plonk@piano.email.ne.jp
|
@@ -140,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
140
126
|
version: '0'
|
141
127
|
requirements: []
|
142
128
|
rubyforge_project:
|
143
|
-
rubygems_version: 2.
|
129
|
+
rubygems_version: 2.5.1
|
144
130
|
signing_key:
|
145
131
|
specification_version: 4
|
146
132
|
summary: notifies new post arrival on the Shitaraba BBS.
|