bbiff 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0c1a06f19c088ba3f97fb5f001619c04457be919
4
- data.tar.gz: 1ddafb3e022314b5faf792730855f8c208987199
3
+ metadata.gz: a336858969f74c19921c4bcbbb9372c9b248b86a
4
+ data.tar.gz: 637d9a30868080c684f45e98be3e4b3cae0fa724
5
5
  SHA512:
6
- metadata.gz: 212dd524640a9dfbf8882ff9f91866f8c2953de159047226dd163815acc8b0d821c76a3c57dbb46caa2da503d54b6ef508b605280b422794adefc32d79b75927
7
- data.tar.gz: a08cbd2ebed22e3504a5a03f3a2c13f3d14485e86147aedc0bd2a24e9585076e45da12ef69810ac5cdfc10f39dc0e50a72705827be0e27f568f3276a792f110c
6
+ metadata.gz: fcc542d4956eca74ea3ce9ef64b65828dfacc71212ab3498e69c35e27dc47442fa8e720ce869cb5b5759def5e01e4cd5e26e00c5e614b5ca88d7f5540e8b5961
7
+ data.tar.gz: 56c12ff08643a69dafe39feab20e0a49fb518dd135529e61bae7a28a7cd437ddea0a7b09a25a76a40a5dded7c41fb1ba2bdb0b6214d078db64b45c0c9d10846b
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ *~
1
2
  /.bundle/
2
3
  /.yardoc
3
4
  /Gemfile.lock
data/README.md CHANGED
@@ -46,6 +46,9 @@ ver 0.2.0
46
46
  * 最後に監視したスレッドを覚えておいて、URLを省略した時のデフォルト
47
47
  にするようにした。
48
48
 
49
+ ver 0.2.1
50
+ * スレタイに ( を含むスレのある掲示板のスレを指定すると落ちるバグを修正。
51
+
49
52
  ## 作者
50
53
 
51
54
  予定地 <plonk@piano.email.ne.jp>
@@ -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 "activesupport", "~> 4.0"
25
- spec.add_dependency "unicode-display_width"
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
File without changes
@@ -16,28 +16,18 @@ class C板
16
16
  end
17
17
 
18
18
  def 設定
19
- 応答 = Net::HTTP.start(@設定URL.host, @設定URL.port) { |http|
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
- 応答 = Net::HTTP.start(@スレ一覧URL.host, @スレ一覧URL.port) { |http|
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
- 応答 = Net::HTTP.start(url.host, url.port) { |http|
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 FormatError unless line =~ /^(\d+)\.cgi,([^(]+)\((\d+)\)$/
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
- res = Net::HTTP.start(url.host, url.port) { |http| http.get(url.path) }
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
 
@@ -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 t
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...(1.minute)
33
+ when 1...60
36
34
  "#{delta.to_i}秒前"
37
- when (1.minute)...(1.hour)
35
+ when 60...3600
38
36
  "#{(delta / 60).to_i}分前"
39
- when (1.hour)...(24.hours)
37
+ when 3600...(24 * 3600)
40
38
  "#{(delta / 3600).to_i}時間前"
41
- # when (1.day)...Float::INFINITY
42
39
  else
43
- "#{t.year}/#{t.month}/#{t.day}(#{weekday[t.wday]}) #{t.hour}:#{t.min}:#{t.sec}"
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 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
@@ -1,3 +1,3 @@
1
1
  module Bbiff
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
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.0
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-08 00:00:00.000000000 Z
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: activesupport
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: '4.0'
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: '4.0'
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: '0'
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: '0'
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.4.5
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.