webcomics 1.0.7 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/comics_cbz.rb +55 -0
- data/lib/comics_db.rb +18 -1
- data/lib/comics_dir.rb +88 -0
- data/lib/comics_engine.rb +46 -5
- data/lib/version.rb +3 -0
- data/lib/webcomics.rb +2 -0
- metadata +21 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e7f24b4b88e65cdbb40396fedae879b6ad3f7c98
|
4
|
+
data.tar.gz: a7ff820f56bdb16d30d5e9b4b392dfdf51d6a88a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb23e4c9ebfa39f4b0956ab23184154d25dda7545d4a4fee321d8e283879d209f52d5ed593e62df9d4ad3f75acdb8700248d998dc7b7b68d43c7d092d46bc38e
|
7
|
+
data.tar.gz: 0c5527550e1013089a2179e94c8b88285ecea6839a5128bf20643e986b852f4c2af61ae9b326ec4d4d9568213a67534144688ee44fea353210ab310728e2bb7e
|
data/lib/comics_cbz.rb
ADDED
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'zip'
|
2
|
+
|
3
|
+
module WebComics
|
4
|
+
class CBZ < ComicsDir
|
5
|
+
attr_accessor :cbz
|
6
|
+
|
7
|
+
def self.cbz_or_zip?(file)
|
8
|
+
if File.extname(file) == ".cbz" || File.extname(file) == ".zip"
|
9
|
+
return true
|
10
|
+
else
|
11
|
+
return false
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def list_cbz_files
|
16
|
+
files_list = []
|
17
|
+
list_files.each do |cbz|
|
18
|
+
files_list.push(cbz) if CBZ.cbz_or_zip?(cbz)
|
19
|
+
end
|
20
|
+
|
21
|
+
files_list
|
22
|
+
end
|
23
|
+
|
24
|
+
def list_pages_inside(xml_ignore = true)
|
25
|
+
files_list = []
|
26
|
+
Zip::File.open("#{@series}/#{@cbz}") do |cbz|
|
27
|
+
cbz.each do |pages|
|
28
|
+
files_list.push(pages.name)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
return CBZ.ignore_xml(files_list) if xml_ignore
|
33
|
+
|
34
|
+
files_list
|
35
|
+
end
|
36
|
+
|
37
|
+
def extract(index = 0)
|
38
|
+
@page = nil
|
39
|
+
Zip::File.open("#{@series}/#{@cbz}") do |cbz|
|
40
|
+
@page = cbz.extract(list_pages_inside[index], list_pages_inside[index])
|
41
|
+
end
|
42
|
+
|
43
|
+
@page
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.ignore_xml(list)
|
47
|
+
files_list = []
|
48
|
+
list.each do |entry|
|
49
|
+
files_list.push(entry) if File.extname(entry) != ".xml"
|
50
|
+
end
|
51
|
+
|
52
|
+
files_list
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
data/lib/comics_db.rb
CHANGED
@@ -1,7 +1,24 @@
|
|
1
|
-
|
1
|
+
module WebComics
|
2
|
+
class ComicsDB
|
3
|
+
attr_accessor :db_record
|
4
|
+
attr_accessor :assets
|
2
5
|
|
6
|
+
def exists?
|
7
|
+
asset_names = []
|
8
|
+
|
9
|
+
Dir.entries(@assets).each do |a|
|
10
|
+
asset_names.push(a) if a == @db_record
|
11
|
+
end
|
12
|
+
|
13
|
+
!asset_names.empty?
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# This class is kept here for backwards compadibity with older versions.
|
3
19
|
class ComicsDB
|
4
20
|
def self.exists?(db_table, assets)
|
21
|
+
warn "[DEPRECATION] `ComicsDB.exists?(db_table, assets) is deprecated. Please use `WebComics::ComicsDB.exists?` instead."
|
5
22
|
asset_names = []
|
6
23
|
|
7
24
|
Dir.entries(assets).each do |a|
|
data/lib/comics_dir.rb
CHANGED
@@ -1,10 +1,90 @@
|
|
1
|
+
module WebComics
|
2
|
+
class ComicsDir
|
3
|
+
attr_accessor :series
|
1
4
|
|
5
|
+
def self.comics_entries(dir)
|
6
|
+
entries = Dir.entries(dir)
|
7
|
+
entries.delete(".")
|
8
|
+
entries.delete("..")
|
9
|
+
|
10
|
+
entries
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.trim(entries)
|
14
|
+
trimed_entries = []
|
15
|
+
entries.each do |e|
|
16
|
+
trimed_entries.push(File.basename(e, ".*"))
|
17
|
+
end
|
18
|
+
|
19
|
+
trimed_entries
|
20
|
+
end
|
21
|
+
|
22
|
+
def directory?
|
23
|
+
File.directory?(@series)
|
24
|
+
end
|
25
|
+
|
26
|
+
def list_directories
|
27
|
+
dirs_list = []
|
28
|
+
ComicsDir.comics_entries(@series).each do |d|
|
29
|
+
dirs_list.push(d) if File.directory?("#{@series}/#{d}")
|
30
|
+
end
|
31
|
+
|
32
|
+
dirs_list
|
33
|
+
end
|
34
|
+
|
35
|
+
def file?
|
36
|
+
File.file?(@series)
|
37
|
+
end
|
38
|
+
|
39
|
+
def list_files
|
40
|
+
files_list = []
|
41
|
+
ComicsDir.comics_entries(@series).each do |d|
|
42
|
+
files_list.push(d) if File.file?("#{@series}/#{d}")
|
43
|
+
end
|
44
|
+
|
45
|
+
files_list
|
46
|
+
end
|
47
|
+
|
48
|
+
def filter_alphanum_dirs
|
49
|
+
alphanum_dirs = []
|
50
|
+
list_directories.each do |d|
|
51
|
+
alphanum_dirs.push(d) if d =~ /[0-9]/ && d =~ /[a-z]/ || d =~ /[A-Z]/
|
52
|
+
end
|
53
|
+
|
54
|
+
alphanum_dirs
|
55
|
+
end
|
56
|
+
|
57
|
+
def filter_alpha_dirs
|
58
|
+
alpha_dirs = []
|
59
|
+
list_directories.each do |d|
|
60
|
+
alpha_dirs.push(d) if d =~ /[a-z]/ || d =~ /[A-Z]/
|
61
|
+
alpha_dirs.delete_if { |d| d =~ /[0-9]/ }
|
62
|
+
end
|
63
|
+
|
64
|
+
alpha_dirs
|
65
|
+
end
|
66
|
+
|
67
|
+
def filter_num_dirs
|
68
|
+
num_dirs = []
|
69
|
+
list_directories.each do |d|
|
70
|
+
num_dirs.push(d) if d =~ /[0-9]/
|
71
|
+
num_dirs.delete_if { |d| d =~ /[a-z]/ || d =~ /[A-Z]/ }
|
72
|
+
end
|
73
|
+
|
74
|
+
num_dirs
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# This class is kept here for backwards compadibity with older versions.
|
2
80
|
class ComicsDir
|
3
81
|
def initialize(series)
|
82
|
+
warn "[DEPRECATION] `ComicsDir.new(series)` is deprecated. Please use `WebComics::ComicsDir.new` instead."
|
4
83
|
@series = series
|
5
84
|
end
|
6
85
|
|
7
86
|
def comics_entries(dir)
|
87
|
+
warn "[DEPRECATION] `ComicsDir#comics_entries(dir)` is deprecated. Please use `WebComics::ComicsDir.comics_entries(dir)` instead."
|
8
88
|
entries = Dir.entries(dir)
|
9
89
|
entries.delete(".")
|
10
90
|
entries.delete("..")
|
@@ -13,6 +93,7 @@ class ComicsDir
|
|
13
93
|
end
|
14
94
|
|
15
95
|
def trim(entries)
|
96
|
+
warn "[DEPRECATION] `ComicsDir#trim(entries)` is deprecated. Please use `WebComics::ComicsDir.trim(entries)` instead."
|
16
97
|
trimed_entries = []
|
17
98
|
entries.each do |e|
|
18
99
|
trimed_entries.push(File.basename(e, ".*"))
|
@@ -22,10 +103,12 @@ class ComicsDir
|
|
22
103
|
end
|
23
104
|
|
24
105
|
def directory?(dir)
|
106
|
+
warn "[DEPRECATION] `ComicsDir#directory?(dir)` is deprecated. Please use `WebComics::ComicsDir#directory?` instead."
|
25
107
|
File.directory?(dir)
|
26
108
|
end
|
27
109
|
|
28
110
|
def list_directories(dir)
|
111
|
+
warn "[DEPRECATION] `ComicsDir#list_directories(dir)` is deprecated. Please use `WebComics::ComicsDir#list_directories` instead."
|
29
112
|
dirs_list = []
|
30
113
|
comics_entries("#{dir}/#{@series}").each do |d|
|
31
114
|
dirs_list.push(d) if directory?("#{dir}/#{@series}/#{d}")
|
@@ -35,10 +118,12 @@ class ComicsDir
|
|
35
118
|
end
|
36
119
|
|
37
120
|
def file?(f)
|
121
|
+
warn "[DEPRECATION] `ComicsDir#file?(f)` is deprecated. Please use `WebComics::ComicsDir#file?` instead."
|
38
122
|
File.file?(f)
|
39
123
|
end
|
40
124
|
|
41
125
|
def list_files(dir)
|
126
|
+
warn "[DEPRECATION] `ComicsDir#list_files(dir)` is deprecated. Please use `WebComics::ComicsDir#list_files` instead."
|
42
127
|
files_list = []
|
43
128
|
comics_entries(dir).each do |d|
|
44
129
|
files_list.push(d) if file?("#{dir}/#{d}")
|
@@ -48,6 +133,7 @@ class ComicsDir
|
|
48
133
|
end
|
49
134
|
|
50
135
|
def filter_alphanum_dirs(dir)
|
136
|
+
warn "[DEPRECATION] `ComicsDir#filter_alphanum_dirs(dir)` is deprecated. Please use `WebComics::ComicsDir#filter_alphanum_dirs` instead."
|
51
137
|
alphanum_dirs = []
|
52
138
|
list_directories(dir).each do |d|
|
53
139
|
alphanum_dirs.push(d) if d =~ /[0-9]/ && d =~ /[a-z]/ || d =~ /[A-Z]/
|
@@ -57,6 +143,7 @@ class ComicsDir
|
|
57
143
|
end
|
58
144
|
|
59
145
|
def filter_alpha_dirs(dir)
|
146
|
+
warn "[DEPRECATION] `ComicsDir#filter_alpha_dirs(dir)` is deprecated. Please use `WebComics::ComicsDir#filter_alpha_dirs` instead."
|
60
147
|
alpha_dirs = []
|
61
148
|
list_directories(dir).each do |d|
|
62
149
|
alpha_dirs.push(d) if d =~ /[a-z]/ || d =~ /[A-Z]/
|
@@ -67,6 +154,7 @@ class ComicsDir
|
|
67
154
|
end
|
68
155
|
|
69
156
|
def filter_num_dirs(dir)
|
157
|
+
warn "[DEPRECATION] `ComicsDir#filter_num_dirs(dir)` is deprecated. Please use `WebComics::ComicsDir#filter_num_dirs` instead."
|
70
158
|
num_dirs = []
|
71
159
|
list_directories(dir).each do |d|
|
72
160
|
num_dirs.push(d) if d =~ /[0-9]/
|
data/lib/comics_engine.rb
CHANGED
@@ -1,42 +1,83 @@
|
|
1
|
-
require_relative "comics_dir"
|
2
|
-
require_relative "comics_db"
|
3
1
|
require "fileutils"
|
4
2
|
|
3
|
+
module WebComics
|
4
|
+
class ComicsEngine < CBZ
|
5
|
+
FILE_EXT_ARRY = [".jpg", ".png", ".tiff", ".bmp", ".gif"]
|
6
|
+
|
7
|
+
def filter(entries)
|
8
|
+
entries.each_index do |i|
|
9
|
+
entries.delete_if { |e| e.include?(FILE_EXT_ARRY[i]) || e.include?("#") }
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
def assets_dirs
|
14
|
+
filter(ComicsDir.comics_entries(@series))
|
15
|
+
end
|
16
|
+
|
17
|
+
def list_pages_cbz
|
18
|
+
list_pages_inside.sort
|
19
|
+
end
|
20
|
+
|
21
|
+
def list_pages
|
22
|
+
if CBZ.cbz_or_zip?("#{@series}/#{@cbz}")
|
23
|
+
list_pages_cbz
|
24
|
+
else
|
25
|
+
img_list = []
|
26
|
+
FileUtils.cd(@series) do
|
27
|
+
ComicsDir.comics_entries(".").each do |e|
|
28
|
+
img_list.push(e) if File.extname(e) == ".jpg" || File.extname(e) == ".png"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
img_list.sort
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
5
39
|
class ComicsEngine
|
6
|
-
def initialize(table_name, assets)
|
40
|
+
def initialize(table_name = nil, assets)
|
41
|
+
warn "[DEPRECATION] `ComicsEngine.new(table_name = nil, assets)` is deprecated. Please use `WebComics::ComicsEngine.new` instead."
|
7
42
|
@table_name = table_name
|
8
43
|
@assets = assets
|
9
44
|
@comics_dir = ComicsDir.new(@assets)
|
10
45
|
end
|
11
46
|
|
12
47
|
def dbtable_assets_match?
|
48
|
+
warn "[DEPRECATION] `ComicsEngine#dbtable_assets_match?` is deprecated."
|
13
49
|
ComicsDB.exists?(@table_name, @assets)
|
14
50
|
end
|
15
51
|
|
16
52
|
def add_appendage
|
53
|
+
warn "[DEPRECATION] `ComicsEngine#add_appendage` is deprecated."
|
17
54
|
@o_assets = @assets
|
18
|
-
@assets = "#{@assets}/#{@table_name}"
|
55
|
+
@assets = "#{@assets}/#{@table_name}"
|
19
56
|
end
|
20
57
|
|
21
58
|
def remove_appendage
|
59
|
+
warn "[DEPRECATION] `ComicsEngine#remove_appendage` is deprecated."
|
22
60
|
@assets.slice(@o_assets)
|
23
61
|
end
|
24
62
|
|
25
63
|
def filter(entries)
|
64
|
+
warn "[DEPRECATION] `ComicsEngine#filter(entries)` is deprecated."
|
26
65
|
entries.delete_if do |e|
|
27
66
|
e.include?(".") || e.include?("#")
|
28
67
|
end
|
29
68
|
end
|
30
69
|
|
31
70
|
def assets_dirs
|
71
|
+
warn "[DEPRECATION] `ComicsEngine#assets_dirs` is deprecated. Please use `WebComics::ComicsEngine#assets_dirs` instead."
|
32
72
|
filter(@comics_dir.comics_entries(@assets))
|
33
73
|
end
|
34
74
|
|
35
75
|
def list_pages
|
76
|
+
warn "[DEPRECATION] `ComicsEngine#list_pages` is deprecated. Please use `WebComics::ComicsEngine#list_pages(file = "")` instead."
|
36
77
|
img_list = []
|
37
78
|
FileUtils.cd(@assets) do
|
38
79
|
@comics_dir.comics_entries(".").each do |e|
|
39
|
-
|
80
|
+
img_list.push(e) if File.extname(e) == ".jpg" || File.extname(e) == ".png"
|
40
81
|
end
|
41
82
|
end
|
42
83
|
|
data/lib/version.rb
ADDED
data/lib/webcomics.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webcomics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ralph Desir
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2016-02-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -39,19 +39,35 @@ dependencies:
|
|
39
39
|
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '3.3'
|
42
|
-
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rubyzip
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.1'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '1.1'
|
56
|
+
description: A gem for creating comic book reader websites.
|
43
57
|
email: battleroundscool@gmail.com
|
44
58
|
executables: []
|
45
59
|
extensions: []
|
46
60
|
extra_rdoc_files: []
|
47
61
|
files:
|
62
|
+
- lib/comics_cbz.rb
|
48
63
|
- lib/comics_db.rb
|
49
64
|
- lib/comics_dir.rb
|
50
65
|
- lib/comics_engine.rb
|
66
|
+
- lib/version.rb
|
51
67
|
- lib/webcomics.rb
|
52
68
|
homepage: https://github.com/Mav7/Ruby-WebComics
|
53
69
|
licenses:
|
54
|
-
-
|
70
|
+
- GPL-2.0
|
55
71
|
metadata: {}
|
56
72
|
post_install_message:
|
57
73
|
rdoc_options: []
|
@@ -69,9 +85,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
85
|
version: '0'
|
70
86
|
requirements: []
|
71
87
|
rubyforge_project:
|
72
|
-
rubygems_version: 2.
|
88
|
+
rubygems_version: 2.5.1
|
73
89
|
signing_key:
|
74
90
|
specification_version: 4
|
75
91
|
summary: Ruby Web comics library
|
76
92
|
test_files: []
|
77
|
-
has_rdoc:
|