ncode-syosetu-core 0.3.0 → 0.3.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
  SHA256:
3
- metadata.gz: ced6daefa3566dd623f1b39e96f8d8dc863517d5acb49a0d0c59888162af4788
4
- data.tar.gz: 46a2c39df0910ac0feed9f24bb681ee4a8a85d192eb786f5a7d95238d1f16cbc
3
+ metadata.gz: 3519e75bb238cc402ef2e4d7c4e9bd24fd51112274a103fee29d83929f58ed0f
4
+ data.tar.gz: 54c1bd9261fab79f23b96c71e2dfc7616ebcbda8ba60366111f0f6697e848d4d
5
5
  SHA512:
6
- metadata.gz: 2bfc117c976f50af6b269786bf3caf42f7e207d1b6a0d94f87333d4f533c6e88bcbf917b6017d60b5ce312ffeecc7ce986874fb8062a5a0712fff19550c9d5df
7
- data.tar.gz: 6f99a37a4d659c7c341679bf8e29de50d29caf8c5a88e730320f1e1da2a64772d2f72c1cee59bc82b4c1e925debf0028a23bcb54862715838786dbecedd67967
6
+ metadata.gz: 6bc9982c1376a0b7817fd81628760d1af54bb17a48cdffdf9f30551fc0fac132a2fcb4bbfcaa9435df7b25f4115417993bcf82534f74778193b27dcb8398bd49
7
+ data.tar.gz: e54374af620b833fadea6842b3a0579194902403008f4530e9e5f3a664e2cbf13d0c5af4f6d7d674e7667b867b529e313140fabb4a03f65a39e4be478cad315a
@@ -27,13 +27,18 @@ module NcodeSyosetu
27
27
  def get(ncode)
28
28
  toc = get_toc(ncode)
29
29
 
30
- episodes = toc.episodes.map do |episode|
31
- if episode[:number]
32
- get_episode(ncode, episode[:text], episode[:number])
30
+ episodes =
31
+ if toc.short_story?
32
+ [toc.to_episode]
33
33
  else
34
- NcodeSyosetu::Model::Heading.new(episode[:text])
34
+ toc.episodes.map do |episode|
35
+ if episode[:number]
36
+ get_episode(ncode, episode[:text], episode[:number])
37
+ else
38
+ NcodeSyosetu::Model::Heading.new(episode[:text])
39
+ end
40
+ end
35
41
  end
36
- end
37
42
 
38
43
  NcodeSyosetu::Model::Novel.new(toc, episodes)
39
44
  end
@@ -10,22 +10,42 @@ module NcodeSyosetu
10
10
  @abstract = page.search(".p-novel__summary").text.chomp
11
11
 
12
12
  @episodes = []
13
- page.at(".p-eplist").children.each do |sub_item|
14
- next unless sub_item.matches?('.p-eplist__chapter-title, .p-eplist__sublist')
15
- episode = { text: sub_item.text.gsub(/\s+/, " ").chomp }
16
- link = sub_item.search("a")
17
- unless link.empty?
18
- if link.attr("href").value =~ %r[/(\d+)/?$]
19
- episode[:number] = $1.to_i
13
+ eplist = page.at(".p-eplist")
14
+ if eplist
15
+ eplist.children.each do |sub_item|
16
+ next unless sub_item.matches?('.p-eplist__chapter-title, .p-eplist__sublist')
17
+ episode = { text: sub_item.text.gsub(/\s+/, " ").chomp }
18
+ link = sub_item.search("a")
19
+ unless link.empty?
20
+ if link.attr("href").value =~ %r[/(\d+)/?$]
21
+ episode[:number] = $1.to_i
22
+ end
20
23
  end
24
+ @episodes << episode
21
25
  end
22
- @episodes << episode
26
+
27
+ @body_html =
28
+ page.search(".p-novel__author").to_html <<
29
+ page.search(".p-novel__summary").to_html <<
30
+ page.search(".p-eplist").to_html
31
+ else
32
+ # Short story: the toc page itself contains the body.
33
+ @short_story = true
34
+ @page = page
35
+
36
+ @body_html =
37
+ page.search(".p-novel__author").to_html <<
38
+ page.search(".p-novel__summary").to_html
23
39
  end
40
+ end
41
+
42
+ def short_story?
43
+ !!@short_story
44
+ end
24
45
 
25
- @body_html =
26
- page.search(".p-novel__author").to_html <<
27
- page.search(".p-novel__summary").to_html <<
28
- page.search(".p-eplist").to_html
46
+ def to_episode
47
+ raise "not a short story" unless short_story?
48
+ Episode.new(@title, 1, @page)
29
49
  end
30
50
 
31
51
  def html
@@ -1,3 +1,3 @@
1
1
  module NcodeSyosetu
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ncode-syosetu-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - hogelog
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-03-22 00:00:00.000000000 Z
11
+ date: 2026-09-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mechanize