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 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.