mangdown 0.9.1 → 0.9.3

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: d8edc98ea1b22509ee5e3239963a8ca582470da6
4
- data.tar.gz: 3448aa25bbe27b62e6adf625757057ba7442cda8
3
+ metadata.gz: 39eae36cb18260f996d55849997b0b28bd306985
4
+ data.tar.gz: 1b097d36b0d567f0464ec06ac0913a5f8efded53
5
5
  SHA512:
6
- metadata.gz: 7da3513f4a5261d9abb41b489cad7f78fedeedc28d8b82f1d4fa62c9512eaf37147eccfd2076ff9b30b09383ba7080b01087598befd72f0ca8f09406f297d074
7
- data.tar.gz: 3f1db8d04801ef1894d2d3ccef32767f5e63e9c4c761af4843be597e4b6727aa42b4471f50f57b339662a802fc3c202d2017695f003034d9be176fc8d927ddcf
6
+ metadata.gz: bd8cfb84002fed92ae7eb6ddba6a6d6e0fc73d7873f43afee0ed06324ee6975eb1988eca03c331f96322771b1d2df9a56351fb53bc85966e029bc5489fd32fc9
7
+ data.tar.gz: 89b574acbf8fa239f780307b9befbd73eb40481a7a44d637a50954c814f85cec2c14538a14254792ba392dfe7f3a2f2fa75cb670fc4e76ae1bdb75706669157f
@@ -3,7 +3,7 @@ Mangdown
3
3
 
4
4
  Commands
5
5
 
6
- M#find(string) - Will return an array of Mangdown::MDHash given
6
+ M.find(string) - Will return an array of Mangdown::MDHash given
7
7
  a string which is matched to manga names of the
8
8
  3000 most popular mangas on Mangareader.
9
9
 
@@ -37,12 +37,16 @@ Commands
37
37
  # naruto is the Mangdown::Manga object from the example above
38
38
  naruto.download_to(Dir.home + '/manga', 500, 549)
39
39
 
40
- M#clean_up - Will delete .manga_list.yml file from the home
40
+ M.cbz(path) - Will validate names of subdirectories in the path
41
+ and thier files and then Zip those subdirectories
42
+ with a .cbz extention
43
+
44
+ M.clean_up - Will delete .manga_list.yml file from the home
41
45
  directory
42
46
 
43
47
  M.clean_up
44
48
 
45
49
 
46
- M#help - Will display help for commands
50
+ M.help - Will display help for commands
47
51
 
48
52
  =======================================================================
@@ -3,6 +3,16 @@ module Mangdown
3
3
  extend self
4
4
  extend ::Mangdown::Tools
5
5
 
6
+ def all(main_dir)
7
+ # Make sure all sub dirs are checked
8
+ validate_file_or_dir_names(main_dir)
9
+ # Make sure all sub dirs have files checked
10
+ check_dir(main_dir) { |dir| validate_file_or_dir_names(dir)}
11
+ # Create cbz files for all sub dirs
12
+ cbz_sub_dirs(main_dir)
13
+ end
14
+
15
+ private
6
16
  def cbz_dir(dir)
7
17
  zip_file_name = dir + '.cbz'
8
18
  dir += '/' unless dir[-1] == '/'
@@ -20,17 +30,6 @@ module Mangdown
20
30
  end
21
31
  end
22
32
 
23
- def all(main_dir)
24
- # Make sure all sub dirs are checked
25
- validate_file_or_dir_names(main_dir)
26
- # Make sure all sub dirs have files checked
27
- check_dir(main_dir) { |dir| validate_file_or_dir_names(dir)}
28
- # Create cbz files for all sub dirs
29
- cbz_sub_dirs(main_dir)
30
- # new line
31
- puts
32
- end
33
-
34
33
  def check_dir(dir)
35
34
  Dir.glob(dir + '/*').each do |file_name|
36
35
  #do block on each file name, but skip .cbz files
@@ -56,6 +55,5 @@ module Mangdown
56
55
  num = "0" * zeros_to_add + num
57
56
  name.sub(/(\d+)(\.jpg)*\Z/, num + '\2')
58
57
  end
59
-
60
58
  end
61
59
  end
@@ -5,19 +5,23 @@ module Mangdown
5
5
  attr_reader :name, :uri, :pages, :manga, :chapter
6
6
 
7
7
  def initialize(name, uri)
8
- @manga = name.slice(/(^.+)\s/, 1)
9
- @chapter = name.slice(/\d+\z/)
10
- @name = name
11
- @uri = Mangdown::Uri.new(uri)
12
- @pages = []
8
+ # use a valid name
9
+ @name = name.sub(/\s(\d+)$/) { |num|
10
+ ' ' + num.to_i.to_s.rjust(3, '0')
11
+ }
12
+ @manga = name.slice(/(^.+)\s/, 1)
13
+ @chapter = name.slice(/\d+\z/)
14
+ @uri = Mangdown::Uri.new(uri)
13
15
  @properties = Properties.new(@uri)
16
+ @pages = []
14
17
 
15
18
  get_pages
19
+ @pages.sort_by! {|page| page.name}
16
20
  end
17
21
 
18
22
  # enumerates through pages
19
23
  def each
20
- @pages.each {|page| yield(page) if block_given?}
24
+ block_given? ? @pages.each { |page| yield(page) } : @pages.each
21
25
  end
22
26
 
23
27
  # explicit conversion to chapter
@@ -41,7 +45,6 @@ module Mangdown
41
45
  end
42
46
 
43
47
  private
44
-
45
48
  # get page objects for all pages in a chapter
46
49
  def get_pages
47
50
  threads = []
@@ -74,7 +77,6 @@ module Mangdown
74
77
  # mangareader chapter object
75
78
  class MRChapter < Chapter
76
79
  private
77
-
78
80
  # get the doc for a given page number
79
81
  def get_page_doc(num)
80
82
  root = @properties.root
@@ -103,7 +105,6 @@ module Mangdown
103
105
  # mangafox chapter object
104
106
  class MFChapter < Chapter
105
107
  private
106
-
107
108
  # get the doc for a given page number
108
109
  def get_page_doc(num)
109
110
  Tools.get_doc(
@@ -4,59 +4,68 @@ module M
4
4
  include ::Mangdown
5
5
 
6
6
  DATA_FILE_PATH = Dir.home + '/.manga_list.yml'
7
-
8
- # check if the search key contains letters or numbers
9
- def valid_search?(search)
10
- search =~ /\w/
11
- end
12
-
13
- # check if the data file is current
14
- def file_current?(file)
15
- File.exists?(file) ? File.mtime(file) > (Time.now - 604800) : false
16
- end
7
+ HELP_FILE_PATH = File.expand_path(
8
+ '../../doc/help.txt', File.dirname(__FILE__)
9
+ )
17
10
 
18
11
  # return a list of hash with :uri and :name of mangas found in list
19
12
  def find(search)
20
- unless valid_search?(search)
21
- puts "Searches must contain letters and numbers.."
22
- return []
23
- end
24
-
25
- if file_current?(DATA_FILE_PATH)
26
- list = YAML.load(File.open(DATA_FILE_PATH, 'r').read)
27
- else
28
- list = MangaList.new(
29
- 'http://www.mangareader.net/alphabetical',
30
- 'http://mangafox.me/manga/'
31
- )
32
-
33
- File.open(DATA_FILE_PATH, 'w+') do |file|
34
- file.write( list.to_yaml )
35
- end
36
- end
37
-
38
- search_result = list.mangas.select do |manga|
39
- manga[:name].downcase.include?(search.downcase)
40
- end
41
-
42
- search_result
13
+ validate_search(search)
14
+ current_manga_list.mangas.select { |manga|
15
+ manga[:name].downcase.include?(search.downcase)
16
+ }
43
17
  end
44
18
 
45
19
  # cbz all subdirectories in a directory
46
20
  def cbz(dir)
47
- Dir.exist?(dir) ? CBZ.all(dir) : (puts "Cannot find directory")
21
+ Dir.exist?(dir) ? (CBZ.all(dir)) : (raise Errno::ENOENT, dir)
48
22
  end
49
23
 
50
24
  # display help file
51
25
  def help
52
- help_file = File.expand_path(
53
- '../../doc/help.txt', File.dirname(__FILE__)
54
- )
55
- puts File.open(help_file, 'r').read
26
+ puts File.open(HELP_FILE_PATH, 'r').read
56
27
  end
57
28
 
58
29
  # delete data file
59
30
  def clean_up
60
31
  File.delete(DATA_FILE_PATH) if File.exist?(DATA_FILE_PATH)
61
32
  end
33
+
34
+ private
35
+ # convenience method to access the data file path
36
+ def path
37
+ DATA_FILE_PATH
38
+ end
39
+
40
+ # check if the data file is current
41
+ def file_current?(f)
42
+ File.exists?(f) && File.mtime(f) > (Time.now - 604800)
43
+ end
44
+
45
+ # attempt to get the list from the data file
46
+ def data_from_file
47
+ YAML.load(File.open(path, 'r').read) if file_current?(path)
48
+ rescue Psych::SyntaxError => error
49
+ error
50
+ end
51
+
52
+
53
+ # get saved current manga list, if data is less than a week old
54
+ # otherwise fetch new data and write it to the data file
55
+ def current_manga_list
56
+ data = data_from_file
57
+ return data if data.is_a? Mangdown::MangaList
58
+
59
+ MangaList.new(
60
+ 'http://www.mangareader.net/alphabetical',
61
+ 'http://mangafox.me/manga/'
62
+ ).tap { |list| File.open(path,'w+') {|f| f.write(list.to_yaml)} }
63
+ end
64
+
65
+ # check if the search key contains letters or numbers
66
+ def validate_search(search)
67
+ unless search =~ /\w/
68
+ raise ArgumentError, "Searches must contain letters and numbers"
69
+ end
70
+ end
62
71
  end
@@ -14,8 +14,12 @@ module Mangdown
14
14
  # get a list of mangas from the uri
15
15
  def get_mangas(uri)
16
16
  properties = Properties.new(uri)
17
- doc = Tools.get_doc(uri)
18
-
17
+ if properties.empty?
18
+ raise ArgumentError,
19
+ "Bad URI: No Properties Specified for URI <#{uri}>"
20
+ end
21
+
22
+ doc = Tools.get_doc(uri)
19
23
  # This should be put in a tool
20
24
  doc.css(properties.manga_list_css_klass).each do |a|
21
25
  @mangas << MDHash.new(
@@ -2,25 +2,34 @@ module Mangdown
2
2
  class MDHash < ::Hash
3
3
 
4
4
  def initialize(options = {})
5
- self[:uri] = options[:uri]
6
- self[:name] = options[:name]
5
+ self[:uri] = options[:uri]
6
+ self[:name] = options[:name]
7
7
  end
8
8
 
9
9
  # explicit conversion to manga
10
10
  def to_manga
11
- Manga.new(self[:name], self[:uri])
11
+ Manga.new(name, uri)
12
12
  end
13
13
 
14
14
  # explicit conversion to chapter
15
15
  def to_chapter
16
- klass = Properties.new(self[:uri]).chapter_klass
17
- klass.new(self[:name], self[:uri])
16
+ Properties.new(uri).chapter_klass.new(name, uri)
18
17
  end
19
18
 
20
19
  # explicit conversion to page
21
20
  def to_page
22
- Page.new(self[:name], self[:uri])
21
+ Page.new(name, uri)
23
22
  end
23
+
24
+ # name reader
25
+ def name
26
+ self[:name]
27
+ end
28
+
29
+ # uri reader
30
+ def uri
31
+ self[:uri]
32
+ end
24
33
  end
25
34
  end
26
35
 
@@ -1,33 +1,39 @@
1
- class Mangdown::Page
1
+ module Mangdown
2
+ class Page
2
3
 
3
- include Mangdown
4
- include Comparable
4
+ include Mangdown
5
+ include Comparable
5
6
 
6
- attr_reader :name, :uri
7
+ attr_reader :name, :uri
7
8
 
8
- def initialize(name, uri)
9
- @name = name
10
- @uri = Mangdown::Uri.new(uri)
11
- end
9
+ def initialize(name, uri)
10
+ @name = name.sub(/(\s)(\d+)(\.\w+)$/) {
11
+ "#{Regexp.last_match[1]}" +
12
+ "#{Regexp.last_match[2].to_s.rjust(3, '0')}" +
13
+ "#{Regexp.last_match[3]}"
14
+ }
15
+ @uri = Mangdown::Uri.new(uri)
16
+ end
12
17
 
13
- # space ship operator for sorting
14
- def <=>(other)
15
- self.name <=> other.name
16
- end
18
+ # space ship operator for sorting
19
+ def <=>(other)
20
+ self.name <=> other.name
21
+ end
17
22
 
18
- # explicit conversion to page
19
- def to_page
20
- self
21
- end
23
+ # explicit conversion to page
24
+ def to_page
25
+ self
26
+ end
22
27
 
23
- # downloads to specified directory
24
- def download_to(dir = Dir.pwd)
25
- path = dir + '/' + name
26
- # don't download again
27
- return if File.exist?(path)
28
- image = open(uri).read
29
- File.open(path, 'wb') {|file| file.write(image)}
30
- rescue SocketError => error
31
- STDERR.puts( "#{error.message} | #{name} | #{uri}" )
28
+ # downloads to specified directory
29
+ def download_to(dir = Dir.pwd)
30
+ path = dir + '/' + name
31
+ # don't download again
32
+ return if File.exist?(path)
33
+ image = open(uri).read
34
+ File.open(path, 'wb') {|file| file.write(image)}
35
+ rescue SocketError => error
36
+ STDERR.puts( "#{error.message} | #{name} | #{uri}" )
37
+ end
32
38
  end
33
39
  end
@@ -9,7 +9,10 @@ module Mangdown
9
9
  case site
10
10
  when /mangareader/
11
11
  mangareader
12
- when /mangapanda/
12
+ when /mangapanda/
13
+ #mangapanda is a mirror of mangareader
14
+ #that being said, I really don't think this works
15
+ #especially with @info[:root]
13
16
  mangareader
14
17
  when /mangafox/
15
18
  mangafox
@@ -36,8 +39,14 @@ module Mangdown
36
39
  @info[:reverse] = true
37
40
  end
38
41
 
42
+ def empty?
43
+ @info.empty?
44
+ end
45
+
39
46
  private
40
47
  def method_missing(method, *args, &block)
48
+ # this should probably be if @info.has_key?(method)
49
+ # or more consisely @info.fetch(method) { super }
41
50
  return @info[method] unless @info[method].nil?
42
51
  super
43
52
  end
@@ -0,0 +1,40 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe Mangdown::CBZ do
4
+ describe 'CBZ all' do
5
+
6
+ before do
7
+ @fixtures_dir = File.expand_path('../../../fixtures', __FILE__)
8
+ @tmp_dir = File.expand_path('../../../../tmp', __FILE__)
9
+ @nisekoi_dir = @tmp_dir + "/Nisekoi"
10
+ FileUtils.cp_r(@fixtures_dir + '/Nisekoi', @tmp_dir)
11
+ Mangdown::CBZ.all(@nisekoi_dir)
12
+ end
13
+
14
+ after do
15
+ FileUtils.rm_r(@nisekoi_dir, force: true)
16
+ end
17
+
18
+ it 'must have equal numbers of cbz files and chapter directories' do
19
+ chapter_count = Dir["#{@nisekoi_dir}/*/"].length
20
+ cbz_count = Dir["#{@nisekoi_dir}/*.cbz"].length
21
+ cbz_count.must_equal(chapter_count)
22
+ end
23
+
24
+ it 'cbz file names should be valid' do
25
+ filenames = Dir["#{@nisekoi_dir}/*.cbz"]
26
+ filenames.each do |name|
27
+ name.must_match /\d{3}\.cbz/
28
+ end
29
+ end
30
+
31
+ it 'cbz image file names should be valid' do
32
+ zips = Dir["#{@nisekoi_dir}/*.cbz"]
33
+ names = zips.flat_map {|f| Zip::File.new(f).glob('*').map(&:name)}
34
+ names.each do |name|
35
+ # Don't use #must_match, it causes an error with Zip::File
36
+ (name =~ /Page \d{3}/).wont_be_nil
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,76 @@
1
+ require_relative '../../spec_helper'
2
+
3
+ describe Mangdown::Chapter do
4
+ let(:download_path) { File.expand_path('../../../../tmp', __FILE__) }
5
+ let(:chapter_name) { "Dragon Ball 1" }
6
+ let(:uri) {
7
+ "http://www.mangareader.net/105-2100-1/dragon-ball/chapter-1.html"
8
+ }
9
+
10
+ before do
11
+ VCR.insert_cassette 'events', record: :new_episodes
12
+ @chapter = Mangdown::MRChapter.new(chapter_name, uri)
13
+ end
14
+
15
+ after do
16
+ VCR.eject_cassette
17
+ FileUtils.rm_r("#{download_path}/#{chapter_name}", force: true)
18
+ end
19
+
20
+ describe 'new' do
21
+ it 'must return a kind of Chapter but not an instance of Chapter' do
22
+ end
23
+ end
24
+
25
+ describe 'to_chapter' do
26
+ it 'must return the same class of chapter' do
27
+ new_chapter = @chapter.to_chapter
28
+ new_chapter.must_be_instance_of @chapter.class
29
+ end
30
+ end
31
+
32
+ describe 'each' do
33
+ it 'must return an enumerator' do
34
+ @chapter.each.must_be_instance_of Enumerator
35
+ end
36
+
37
+ it 'must iterate through each page' do
38
+ count = 0
39
+ @chapter.each do |page|
40
+ page.must_be_instance_of Mangdown::Page
41
+ count += 1
42
+ end
43
+ count.must_equal @chapter.pages.length
44
+ end
45
+ end
46
+
47
+ describe 'download_to' do
48
+ before do
49
+ # @times will start at 0 and end at N, where N is the number
50
+ # of specs in this describe block
51
+ @times ||= 0
52
+ @chapter.download_to(download_path) if @times == 0
53
+ @times += 1
54
+ end
55
+
56
+ after do
57
+ # @times will start at 0 and end at N, where N is the number
58
+ # of specs in this describe block
59
+ if @times == 2 && Dir.exist?("#{download_path}/#{chapter_name}")
60
+ FileUtils.rm_r(@nisekoi_dir, force: true)
61
+ end
62
+ end
63
+
64
+ it 'must create a subdirectory with the chapter name' do
65
+ Dir.exist?("#{download_path}/#{chapter_name}").must_equal true
66
+ end
67
+
68
+ it 'must have page files in the sub directory' do
69
+ files = Dir["#{download_path}/#{chapter_name}/*"]
70
+ files.each do |name|
71
+ @chapter.pages.any? { |page| name =~ /#{page.name}/ }
72
+ .must_equal true
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,67 @@
1
+ require_relative '../../spec_helper'
2
+ require 'stringio'
3
+
4
+ describe M do
5
+ before do
6
+ VCR.insert_cassette 'events', record: :new_episodes
7
+ end
8
+
9
+ after do
10
+ VCR.eject_cassette
11
+ end
12
+
13
+ describe 'find' do
14
+ it 'must return an array of MDHash' do
15
+ results = M.find('Naruto')
16
+ results.each do |result|
17
+ result.must_be_instance_of Mangdown::MDHash
18
+ end
19
+ end
20
+
21
+ it 'must only accept good search terms' do
22
+ bad = ['@#$$#', '........', '@#%@#$%^']
23
+ good = ["666 Bats", "1 2 3", "Go! For! IT!"]
24
+ bad.each { |term| -> { M.find(term) }.must_raise ArgumentError }
25
+ good.each { |term| -> { M.find(term) }.must_be_silent }
26
+ end
27
+ end
28
+
29
+ describe 'cbz' do
30
+ # CBZ is tested in cbz_spec.rb
31
+ it 'must fail if given a bad path' do
32
+ path = "super_bad_path/that/cant/possibly/exist!!!"
33
+ -> { M.cbz(path) }.must_raise Errno::ENOENT
34
+ end
35
+
36
+ it 'must not fail if given a good path' do
37
+ # Before
38
+ fixtures_dir = File.expand_path('../../../fixtures', __FILE__)
39
+ tmp_dir = File.expand_path('../../../../tmp', __FILE__)
40
+ nisekoi_dir = tmp_dir + "/Nisekoi"
41
+ FileUtils.cp_r(fixtures_dir + '/Nisekoi', tmp_dir)
42
+
43
+ -> { M.cbz(nisekoi_dir) }.must_be_silent
44
+
45
+ # After
46
+ FileUtils.rm_r(nisekoi_dir, force: true)
47
+ end
48
+ end
49
+
50
+ describe 'help' do
51
+ it "must output instructions for the command methods" do
52
+ output = SpecHelper.stdout_for { M.help }
53
+ output.length.wont_be :zero?
54
+ ["M.help", "M.cbz", "M.clean_up"].each do |command|
55
+ output.must_match /#{command}/
56
+ end
57
+ end
58
+ end
59
+
60
+ describe 'clean_up' do
61
+ it "must delete the data file" do
62
+ File.open(M::DATA_FILE_PATH, 'a') { |f| f.write("HELLO!") }
63
+ M.clean_up
64
+ File.exist?(M::DATA_FILE_PATH).must_equal false
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,42 @@
1
+ require_relative '../../spec_helper.rb'
2
+
3
+ describe Mangdown::MangaList do
4
+ before do
5
+ VCR.insert_cassette 'events', record: :new_episodes
6
+ end
7
+
8
+ after do
9
+ VCR.eject_cassette
10
+ end
11
+
12
+ describe 'new' do
13
+ let(:mangareader) {
14
+ Mangdown::MangaList.new('http://www.mangareader.net/alphabetical')
15
+ }
16
+ let(:mangafox) {
17
+ Mangdown::MangaList.new('http://mangafox.me/manga/')
18
+ }
19
+ let(:multiple) { Mangdown::MangaList.new(
20
+ 'http://www.mangareader.net/alphabetical',
21
+ 'http://mangafox.me/manga/'
22
+ ) }
23
+
24
+ it 'must have a manga list with mangas (as md hashes)' do
25
+ [mangareader, mangafox].each do |type|
26
+ type.mangas.must_be_instance_of Array
27
+ type.mangas.each do |manga|
28
+ manga.must_be_instance_of Mangdown::MDHash
29
+ end
30
+ end
31
+ end
32
+
33
+ it 'must raise an ArgumentError if given a bad url' do
34
+ -> { Mangdown::MangaList.new('garbage-url.com/bogus') }
35
+ .must_raise ArgumentError
36
+ end
37
+
38
+ it 'must return a manga list with mangas from all input urls' do
39
+ multiple.mangas.length.must_be :>, (mangareader.mangas.length)
40
+ end
41
+ end
42
+ end
@@ -6,9 +6,9 @@ module Mangdown
6
6
  name: 'Bleach 537',
7
7
  manga: 'Bleach',
8
8
  chapter: '537',
9
- )
9
+ )
10
10
 
11
- chapter = @@chapter_hash.to_chapter
11
+ chapter = @@chapter_hash.to_chapter
12
12
  chapter.download
13
13
 
14
14
  STUB_PATH = File.expand_path('../../objects/chapter.yml', __FILE__)
@@ -49,9 +49,9 @@ module Mangdown
49
49
  name: 'Kitsune no Yomeiri 1',
50
50
  manga: 'Kitsune no Yomeiri',
51
51
  chapter: 1,
52
- )
52
+ )
53
53
 
54
- chapter = hash.to_chapter
54
+ chapter = hash.to_chapter
55
55
 
56
56
  expect(chapter.pages).not_to be_empty
57
57
  end
@@ -3,32 +3,32 @@ require 'spec_helper.rb'
3
3
  module M
4
4
 
5
5
  describe "commands" do
6
- before(:all) do
6
+ before(:all) do
7
7
  hash = MDHash.new(
8
- uri: 'http://www.mangareader.net/6-no-trigger',
9
- name: '6 no Trigger'
10
- )
8
+ uri: 'http://www.mangareader.net/6-no-trigger',
9
+ name: '6 no Trigger'
10
+ )
11
11
  @manga = hash.to_manga
12
12
 
13
13
  hash = MDHash.new(
14
- uri: 'http://mangafox.me/manga/naruto/',
15
- name: 'Naruto'
16
- )
14
+ uri: 'http://mangafox.me/manga/naruto/',
15
+ name: 'Naruto'
16
+ )
17
17
  @mf_manga = hash.to_manga
18
18
 
19
- M.download(@manga, 1, 3)
20
- M.cbz("./#{@manga.name}")
21
- end
19
+ M.download(@manga, 1, 3)
20
+ M.cbz("./#{@manga.name}")
21
+ end
22
22
 
23
- it "should find a manga with the find command" do
24
- m = M.find('Naruto')
25
- expect(m.first[:name]).to eq('Naruto')
26
- end
23
+ it "should find a manga with the find command" do
24
+ m = M.find('Naruto')
25
+ expect(m.first[:name]).to eq('Naruto')
26
+ end
27
27
 
28
- it "should find a list of manga with the find command" do
29
- m = M.find('Trigger')
30
- expect(m.length).to be > 1
31
- end
28
+ it "should find a list of manga with the find command" do
29
+ m = M.find('Trigger')
30
+ expect(m.length).to be > 1
31
+ end
32
32
 
33
33
  it "should find a manga from MF" do
34
34
  m = M.find('naruto')
@@ -48,19 +48,19 @@ module M
48
48
 
49
49
  it "should download a manga from MF" do
50
50
  dir = Dir.pwd
51
- #@mf_manga.remove_chapters
51
+ #@mf_manga.remove_chapters
52
52
  M.download(@mf_manga, 500, 501)
53
53
  expect(Dir.glob(dir + "/#{@mf_manga.name}/*").length).to eq(2)
54
54
  end
55
55
 
56
- it "should download a manga with the download command" do
57
- chps = Dir.glob("#{Dir.pwd}/#{@manga.name}/*/")
58
- expect(chps.length).to eq(3)
59
- end
56
+ it "should download a manga with the download command" do
57
+ chps = Dir.glob("#{Dir.pwd}/#{@manga.name}/*/")
58
+ expect(chps.length).to eq(3)
59
+ end
60
60
 
61
- it "should cbz a manga with the cbz command" do
62
- cbz_s = Dir.glob("#{Dir.pwd}/#{@manga.name}/*.cbz")
63
- expect(cbz_s.length).to eq(3)
64
- end
65
- end
61
+ it "should cbz a manga with the cbz command" do
62
+ cbz_s = Dir.glob("#{Dir.pwd}/#{@manga.name}/*.cbz")
63
+ expect(cbz_s.length).to eq(3)
64
+ end
65
+ end
66
66
  end
@@ -4,9 +4,9 @@ module Mangdown
4
4
  @@manga_hash = MDHash.new(
5
5
  uri: 'http://www.mangareader.net/94/bleach.html',
6
6
  name: 'Bleach'
7
- )
7
+ )
8
8
 
9
- manga = @@manga_hash.to_manga
9
+ manga = @@manga_hash.to_manga
10
10
 
11
11
  MANGA_STUB_PATH = File.expand_path('../../objects/manga.yml',
12
12
  __FILE__)
@@ -34,9 +34,9 @@ module Mangdown
34
34
  context "as a MangaFox manga" do
35
35
  it "should have chapters" do
36
36
  hash = MDHash.new(
37
- uri: 'http://mangafox.me/manga/masca_the_beginning/',
38
- name: 'Masca: The Beginning'
39
- )
37
+ uri: 'http://mangafox.me/manga/masca_the_beginning/',
38
+ name: 'Masca: The Beginning'
39
+ )
40
40
  manga = hash.to_manga
41
41
  expect(manga.chapters_list).not_to be_empty
42
42
  end
@@ -65,10 +65,10 @@ module Mangdown
65
65
 
66
66
  context "when a chapter is retrieved" do
67
67
  before(:all) do
68
- @manga2 = YAML.load(File.open(
68
+ @manga2 = YAML.load(File.open(
69
69
  Mangdown::MANGA_STUB_PATH, 'r').read)
70
70
  @manga2.get_chapter(0)
71
- @mchapter = @manga2.chapters_list[0]
71
+ @mchapter = @manga2.chapters_list[0]
72
72
  end
73
73
 
74
74
  it "should have a chapter in chapters" do
@@ -79,14 +79,14 @@ module Mangdown
79
79
  expect(@manga2.chapters[0].name).to eq(@mchapter[:name])
80
80
  end
81
81
 
82
- it "should have the right chapter sub class" do
83
- klass = Chapter
84
- if @mchapter[:uri].include?('mangareader')
85
- klass = MRChapter
86
- end
87
-
88
- expect(@manga2.chapters[0].class).to eq(klass)
89
- end
82
+ it "should have the right chapter sub class" do
83
+ klass = Chapter
84
+ if @mchapter[:uri].include?('mangareader')
85
+ klass = MRChapter
86
+ end
87
+
88
+ expect(@manga2.chapters[0].class).to eq(klass)
89
+ end
90
90
  end
91
91
  end
92
92
  end
@@ -5,9 +5,9 @@ module Mangdown
5
5
  describe MDHash do
6
6
  before(:all) do
7
7
  @hash = MDHash.new(
8
- uri: 'http://www.mangareader.net/103/one-piece.html',
9
- name: 'One Piece'
10
- )
8
+ uri: 'http://www.mangareader.net/103/one-piece.html',
9
+ name: 'One Piece'
10
+ )
11
11
  end
12
12
 
13
13
  it "should get a manga object from get_manga" do
@@ -2,22 +2,22 @@ require 'spec_helper'
2
2
 
3
3
  module Mangdown
4
4
  describe Page do
5
- before(:all) do
6
- @dir = Dir.pwd
5
+ before(:all) do
6
+ @dir = Dir.pwd
7
7
  @page_hash = MDHash.new(
8
- uri: 'http://i25.mangareader.net/bleach/537/bleach-4149721.jpg',
9
- name: "Bleach 537 - Page 1"
10
- )
8
+ uri: 'http://i25.mangareader.net/bleach/537/bleach-4149721.jpg',
9
+ name: "Bleach 537 - Page 1"
10
+ )
11
11
 
12
- @page = @page_hash.to_page
13
- @page.download
12
+ @page = @page_hash.to_page
13
+ @page.download
14
14
  PAGE_STUB_PATH = File.expand_path('../../objects/page.yml',
15
15
  __FILE__)
16
16
 
17
17
  File.open(PAGE_STUB_PATH, 'w+') do |file|
18
18
  file.write(@page.to_yaml)
19
19
  end
20
- @page2 = YAML.load(File.open(PAGE_STUB_PATH, 'r').read)
20
+ @page2 = YAML.load(File.open(PAGE_STUB_PATH, 'r').read)
21
21
  end
22
22
 
23
23
  context "when page is downloaded" do
@@ -26,14 +26,14 @@ module Mangdown
26
26
  end
27
27
  end
28
28
 
29
- context "when a page is compared with a page loaded from a .yml file" do
29
+ context "when a page is compared with a page loaded from a .yml file" do
30
30
  it "should compare with #eql?" do
31
- expect(@page.eql?(@page2))
32
- end
31
+ expect(@page.eql?(@page2))
32
+ end
33
33
 
34
- it "should not compare with ==" do
35
- expect(!@page == @page2)
36
- end
37
- end
34
+ it "should not compare with ==" do
35
+ expect(!@page == @page2)
36
+ end
37
+ end
38
38
  end
39
39
  end
@@ -1,39 +1,22 @@
1
- require 'rspec'
2
- require 'yaml'
3
1
  require_relative '../lib/mangdown'
4
2
 
5
- M.clean_up
3
+ require 'minitest/autorun'
4
+ require 'webmock/minitest'
5
+ require 'vcr'
6
+ require 'fileutils'
6
7
 
7
- dirs = ['../../Bleach 537', '../../6 no Trigger', '../../Naruto']
8
-
9
- dirs.each do |d|
10
- dir = File.expand_path(d, __FILE__)
11
- if Dir.exist?(dir)
12
- print '*'
13
- FileUtils.rm_rf(dir)
14
- end
8
+ VCR.configure do |c|
9
+ c.cassette_library_dir = 'spec/fixtures/cpo_cassettes'
10
+ c.hook_into :webmock
15
11
  end
16
12
 
17
- path = File.expand_path('../../Bleach 537 - Page 1.jpg', __FILE__)
18
- if File.exist?(path)
19
- print '*'
20
- FileUtils.rm(path)
21
- end
22
-
23
- # This file was generated by the `rspec --init` command. Conventionally, all
24
- # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
25
- # Require this file using `require "spec_helper"` to ensure that it is only
26
- # loaded once.
27
- #
28
- # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
29
- RSpec.configure do |config|
30
- config.treat_symbols_as_metadata_keys_with_true_values = true
31
- config.run_all_when_everything_filtered = true
32
- config.filter_run :focus
33
-
34
- # Run specs in random order to surface order dependencies. If you find an
35
- # order dependency and want to debug it, you can fix the order by providing
36
- # the seed, which is printed after each run.
37
- # --seed 1234
38
- config.order = 'random'
13
+ module SpecHelper
14
+ extend self
15
+ def stdout_for
16
+ out, temp = StringIO.new, $stdout
17
+ $stdout = out
18
+ yield
19
+ out, $stdout = $stdout, temp
20
+ out.rewind and out.read
21
+ end
39
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mangdown
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.1
4
+ version: 0.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - jphager2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-11 00:00:00.000000000 Z
11
+ date: 2015-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -122,6 +122,48 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: webmock
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: vcr
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: rake
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
125
167
  description: A gem to download Manga, (pg integration in dev)
126
168
  email: jphager2@gmail.com
127
169
  executables: []
@@ -152,6 +194,10 @@ files:
152
194
  - models/manga.rb
153
195
  - models/page.rb
154
196
  - models/site.rb
197
+ - spec/lib/mangdown/cbz_spec.rb
198
+ - spec/lib/mangdown/chapter_spec.rb
199
+ - spec/lib/mangdown/commands_spec.rb
200
+ - spec/lib/mangdown/manga_list_spec.rb
155
201
  - spec/mangdown/chapter_spec.rb
156
202
  - spec/mangdown/commands_spec.rb
157
203
  - spec/mangdown/manga_list_spec.rb
@@ -160,7 +206,6 @@ files:
160
206
  - spec/mangdown/page_spec.rb
161
207
  - spec/mangdown/popular_spec.rb
162
208
  - spec/mangdown/tools_spec.rb
163
- - spec/objects/make_chapter.rb
164
209
  - spec/spec_helper.rb
165
210
  homepage: https://github.com/jphager2/mangdown
166
211
  licenses:
@@ -1,5 +0,0 @@
1
- require_relative '../../lib/mandown'
2
-
3
- include Mandown
4
-
5
- $chapter = Chapter.new('http://www.mangareader.net/bleach/537', 'Bleach 537')