simple2ch 0.1.3 → 0.1.4

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: 0170aa4c9b6c57954cdcafb4637de91787e4013e
4
- data.tar.gz: 3f13604c021839d6844f5e54d64b9e7ce4c579e9
3
+ metadata.gz: 06540f8c53a91b5a17332526346eb10d30eef3a3
4
+ data.tar.gz: 558d933b554ff40333d429139832ff4ea012e07f
5
5
  SHA512:
6
- metadata.gz: 1512403f89049adb48022be4bd9a83840f6d89e09642db9123762c350507cf03c469b376fcba72a2e86b53575a35bdb3b6cab91fee00becc46b8528c46f939a4
7
- data.tar.gz: a941bbc19e40dbed17e5e5cffe5244358b762cbdef72a858cb76f433c1832a5987f962c29b72ae16494f3a1dcee179c52e4b862c0abc235b4ccf44d1861d1c8d
6
+ metadata.gz: a8ecd7d6c4f98653fb177b8591b466c4bd79a5360fa1ae81b849fa2deec149b243fd6eea88f80e2a58763069430705949b73f81aab9b5afa26a72859b9a64c5d
7
+ data.tar.gz: 97cafe8a2b0fe8f910cd791e5e3d3976195c438b9a5dba3140835b889e02edcf74292daadb7dfe5712cd717c98e1617572f7cc042d02a20c965542da2bf7fb5c
data/README.md CHANGED
@@ -8,21 +8,16 @@ Ruby用の2chの簡易リーダーです。
8
8
  [リファレンス](http://dogwood008.github.io/simple2ch/)
9
9
 
10
10
  ## 更新内容
11
+ [v0.1.4]
12
+ * デバッグ
13
+ * Thre#resesを実行した際に、IDを持たないレスがあれば、DatParseExceptionが起きる問題を修正
14
+ * エイリアス追加
15
+ * Thre#resをThre#resesのエイリアスに設定
16
+
11
17
  [v0.1.3]
12
18
  * デバッグ
13
19
  * Res#received_anchors呼び出し時にNoThreGivenExceptionが起きる場合がある問題を修正
14
20
 
15
- [v0.1.2]
16
- * リファクタリングとデバッグ
17
- * メソッド修正
18
- * Thre#reses(Array<Fixnum>)で指定したレス番号のレスを取得
19
- * Thre#resesは今まで通り使用可能
20
- * メソッド追加
21
- * Thre#received_anchors
22
- * 全レスについて被レスを返す
23
- * Res#received_anchors(Thre)
24
- * 自レスへの被レスを返す
25
-
26
21
 
27
22
  ## Installation
28
23
 
data/UPDATES.md CHANGED
@@ -1,3 +1,9 @@
1
+ [v0.1.4]
2
+ * デバッグ
3
+ * Thre#resesを実行した際に、IDを持たないレスがあれば、DatParseExceptionが起きる問題を修正
4
+ * エイリアス追加
5
+ * Thre#resをThre#resesのエイリアスに設定
6
+
1
7
  [v0.1.3]
2
8
  * デバッグ
3
9
  * Res#received_anchors呼び出し時にNoThreGivenExceptionが起きる場合がある問題を修正
data/lib/simple2ch/res.rb CHANGED
@@ -74,7 +74,7 @@ module Simple2ch
74
74
  end
75
75
 
76
76
  # 自レスへのアンカーが書き込まれているレス番号を返す
77
- # @return Array<Fixnum> レス番号
77
+ # @return [Array<Fixnum>] レス番号
78
78
  def received_anchors
79
79
  thre = get_thre
80
80
  received_anchors = thre.received_anchors
@@ -103,7 +103,7 @@ module Simple2ch
103
103
  # @param [String] dat datのデータ1行
104
104
  # @raise [DatParseException] Datのパースに失敗したときに発生
105
105
  def self.parse_dat(dat)
106
- split_date_and_id_regex = /(^\d{4}\/\d{2}\/\d{2}\(.\) \d{2}:\d{2}:\d{2}\.\d{2}) ID:(\S+)$/
106
+ split_date_and_id_regex = /(^\d{4}\/\d{2}\/\d{2}\(.\) \d{2}:\d{2}:\d{2}\.\d{2})(?: ID:(\S+)$){0,1}/
107
107
  ret = {}
108
108
  split = dat.split('<>')
109
109
  ret[:author] = split[0]
@@ -112,7 +112,7 @@ module Simple2ch
112
112
  ret[:contents] = split[3].strip
113
113
 
114
114
  date_and_author_id =~ split_date_and_id_regex
115
- if !$1 || !$2
115
+ if !$1
116
116
  raise DatParseException
117
117
  end
118
118
  ret[:date] = Time.parse $1
@@ -37,18 +37,26 @@ module Simple2ch
37
37
  end
38
38
 
39
39
  # Datを解析して、レスを返す
40
- # @param [Array<Fixnum>] num_of_reses 取得したいレス番号
40
+ # @param [Array<Fixnum>,Fixnum] num_of_reses 取得したいレス番号
41
41
  # @return [Array<Res>] レスの配列
42
42
  def reses(num_of_reses=nil)
43
43
  fetch_dat unless @reses
44
- if num_of_reses && num_of_reses.size > 0
45
- @reses.find_all{|r|
46
- num_of_reses.index(r.res_num)
47
- }
48
- else
49
- @reses
44
+ case num_of_reses
45
+ when Array
46
+ if num_of_reses.size > 0
47
+ @reses.find_all { |r|
48
+ num_of_reses.index(r.res_num)
49
+ }
50
+ else
51
+ raise 'Blank array was given.'
52
+ end
53
+ when Fixnum
54
+ @reses.find { |r| r.res_num == num_of_reses }
55
+ when NilClass
56
+ @reses
50
57
  end
51
58
  end
59
+ alias_method :res, :reses
52
60
 
53
61
  # 過去ログかどうかを返す
54
62
  # @return [Boolean] 過去ログか否か
@@ -1,3 +1,3 @@
1
1
  module Simple2ch
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
data/spec/res_spec.rb CHANGED
@@ -10,31 +10,31 @@ describe Simple2ch::Res do
10
10
  以下、\(^o^)/でVIPがお送りします<><>2014/09/04(木) 18:47:41.41 ID:bHgEtoQU0.net<> 思い切り二次創作じゃねえか <br> PS4でやるんだっけ <>} }
11
11
  let(:res) { dat_data.split(/\n/).map.with_index(1) { |d, i| Simple2ch::Res.parse i, d } }
12
12
 
13
- context 'should have res number' do
13
+ describe 'should have res number' do
14
14
  subject { res[0].res_num }
15
15
  it { is_expected.to be_a_kind_of(Numeric) }
16
16
  it { is_expected.to be > 0 }
17
17
  end
18
18
 
19
- context 'should have author' do
19
+ describe 'should have author' do
20
20
  subject { res[0].author }
21
21
  it { is_expected.to be_a_kind_of(String) }
22
22
  it { is_expected.not_to be eq nil }
23
23
  end
24
24
 
25
- context 'should have author_id' do
25
+ describe 'should have author_id' do
26
26
  subject { res[0].author_id }
27
27
  it { is_expected.to be_a_kind_of(String) }
28
28
  it { is_expected.not_to be eq nil }
29
29
  end
30
30
 
31
- context 'should have contents' do
31
+ describe 'should have contents' do
32
32
  subject { res[0].contents }
33
33
  it { is_expected.to be_a_kind_of(String) }
34
34
  it { is_expected.not_to be eq nil }
35
35
  end
36
36
 
37
- context 'should have date' do
37
+ describe 'should have date' do
38
38
  subject { res[0].date }
39
39
  it { is_expected.to be_a_kind_of(Time) }
40
40
  it { is_expected.not_to be eq nil }
@@ -94,6 +94,16 @@ describe Simple2ch::Res do
94
94
  let(:anchor) { [] }
95
95
  it_behaves_like 'have valid anchors'
96
96
  end
97
+ context 'when a thre have both id and non-id reses', force: true do
98
+ let(:board_name) { 'プログラム技術' }
99
+ let(:url) { 'http://toro.2ch.sc/tech/' }
100
+ let(:thread_key) { '1382307475' }
101
+ let(:board) { Board.new(board_name, url) }
102
+ let(:thre) { Thre.new(board, thread_key) }
103
+ subject { thre.reses }
104
+ it { is_expected.to be_a_kind_of Array }
105
+ end
106
+
97
107
  end
98
108
 
99
109
  describe '#recepted_anchors' do
@@ -103,8 +113,8 @@ describe Simple2ch::Res do
103
113
  let(:board) { Board.new board_name, url }
104
114
  let(:thre) { Thre.new board, thread_key }
105
115
  let(:res) { thre.reses([40])[0] }
106
- let(:input_thre) { res.thre = thre}
107
- subject{ input_thre; res.received_anchors }
116
+ let(:input_thre) { res.thre = thre }
117
+ subject { input_thre; res.received_anchors }
108
118
  it { is_expected.to be_a_kind_of Array }
109
119
  its(:size) { is_expected.to be == 4 }
110
120
  it { is_expected.to be == [43, 44, 45, 54] }
data/spec/thre_spec.rb CHANGED
@@ -2,7 +2,7 @@ require 'rspec'
2
2
  require 'spec_helper'
3
3
 
4
4
  describe Simple2ch::Thre do
5
- let(:board) { Simple2ch::Board.new 'ニュース速報(VIP)', 'http://viper.2ch.sc/news4vip/'}
5
+ let(:board) { Simple2ch::Board.new 'ニュース速報(VIP)', 'http://viper.2ch.sc/news4vip/' }
6
6
  let(:dat_data) { '1409796283.dat<>C言語の勉強始めたんだがな (144)' }
7
7
  let(:thre) { Simple2ch::Thre.parse(board, dat_data) }
8
8
 
@@ -26,7 +26,7 @@ describe Simple2ch::Thre do
26
26
  describe 'should have responses' do
27
27
  subject { thre.reses }
28
28
  it { is_expected.to be_a_kind_of(Array) }
29
- it { subject.each{ |r| expect(r).to be_a_kind_of(Simple2ch::Res) } }
29
+ it { subject.each { |r| expect(r).to be_a_kind_of(Simple2ch::Res) } }
30
30
  its(:size) { is_expected.to be > 0 }
31
31
  end
32
32
 
@@ -37,23 +37,34 @@ describe Simple2ch::Thre do
37
37
 
38
38
  describe '#reses' do
39
39
  shared_examples 'have specified reses' do
40
- subject{thre.reses(specified_reses)}
41
- it{is_expected.to be_a_kind_of Array}
42
- its(:size){is_expected.to be == size}
40
+ subject { thre.reses(specified_reses) }
41
+ it { is_expected.to be_a_kind_of Array }
42
+ its(:size) { is_expected.to be == size }
43
43
  end
44
44
  context 'when without res_num' do
45
- let(:size){144}
46
- let(:specified_reses){nil}
45
+ let(:size) { 144 }
46
+ let(:specified_reses) { nil }
47
47
  it_behaves_like 'have specified reses'
48
48
  end
49
49
 
50
- context 'when with res_num' do
51
- let(:size){3}
52
- let(:specified_reses){[1,2,10]}
50
+ context 'when with res_nums' do
51
+ let(:size) { 3 }
52
+ let(:specified_reses) { [1, 2, 10] }
53
53
  it_behaves_like 'have specified reses'
54
- it{
54
+ it {
55
55
  extracted_reses = thre.reses(specified_reses)
56
- expect(extracted_reses[2]).to be == thre.reses.find{|r| r.res_num==10}
56
+ expect(extracted_reses[2]).to be == thre.reses.find { |r| r.res_num==10 }
57
+ }
58
+ end
59
+
60
+ context 'when with only a res_num' do
61
+ let(:size) { 3 }
62
+ let(:specified_res_num) { 10 }
63
+ subject { thre.reses(specified_res_num) }
64
+ it { is_expected.to be_a_kind_of Res }
65
+ it {
66
+ extracted_res = thre.reses(specified_res_num)
67
+ expect(extracted_res).to be == thre.reses.find { |r| r.res_num==specified_res_num }
57
68
  }
58
69
  end
59
70
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple2ch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - dogwood008
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-21 00:00:00.000000000 Z
11
+ date: 2014-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler