epubforge 0.0.7 → 0.0.8

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.7
1
+ 0.0.8
@@ -23,10 +23,9 @@ module EpubForge
23
23
  handle_errors do
24
24
  @execution_returned = self.klass.new.do( self.project, *(self.args) )
25
25
  end
26
- else
27
- puts "Error(s) trying to complete the requested action:"
28
- puts self.errors.join("\n")
29
26
  end
27
+
28
+ report_errors if errors?
30
29
 
31
30
  self.finish
32
31
  self
@@ -38,7 +37,11 @@ module EpubForge
38
37
  @errors << "#{e.class}: #{e.message}\n\t#{e.backtrace.join("\n\t")}"
39
38
  self
40
39
  end
41
-
40
+
41
+ def report_errors
42
+ puts @errors.join("\n\n------------------------------------------------------------------\n\n")
43
+ puts "Error(s) trying to complete the requested action:"
44
+ end
42
45
 
43
46
  def runnable?
44
47
  ! errors?
@@ -1,5 +1,4 @@
1
1
  class String
2
- TITLE_WORDS_NOT_CAPITALIZED = %W(a an in the for and nor but or yet so also)
3
2
  def epf_blank?
4
3
  self.strip.length == 0
5
4
  end
@@ -13,6 +12,23 @@ class String
13
12
  self.gsub(" ", "\\ ")
14
13
  end
15
14
 
15
+ def epf_titlecap_words
16
+ nocaps = %w(a and at be but in is nor of or so teh the to with)
17
+ upcase = %w(Ii Ii: Iii M.d.) # TODO: ick
18
+ debugger if self.match( /ii/i )
19
+
20
+ words = self.downcase.gsub(/\u00a0/, ' ').split(/(\s|\n)+/).map(&:strip).delete_if(&:epf_blank?)
21
+ first_word = true
22
+
23
+ for word in words
24
+ word.capitalize! unless nocaps.include?(word) && first_word == false # note: if the word is all caps, will downcase # TODO: What about M.D., state abbreviations, etc.? This is far from perfect.
25
+ word.upcase! if upcase.include?(word)
26
+ first_word = false
27
+ end
28
+
29
+ words.join(" ")
30
+ end
31
+
16
32
  def epf_underscorize
17
33
  self.downcase.gsub(/\s+/,"_").gsub(/[\W]/,"")
18
34
  end
@@ -29,7 +29,15 @@ module EpubForge
29
29
  end
30
30
 
31
31
  def get_title
32
- @title = @original_file.basename.to_s.split(".")[0..-2].map(&:capitalize).join(" : ")
32
+ html_doc = Nokogiri::HTML( @html )
33
+ h1 = html_doc.xpath("//h1").first
34
+
35
+ if h1.nil?
36
+ @title = @original_file.basename.to_s.split(".")[0..-2].map(&:capitalize).join(" : ")
37
+ else
38
+ title = h1.content
39
+ @title = title.gsub(/\s*\/+\s*/, "").epf_titlecap_words
40
+ end
33
41
  end
34
42
 
35
43
  def link
data/lib/epubforge.rb CHANGED
@@ -5,6 +5,7 @@
5
5
  # require 'builder'
6
6
  require 'thor'
7
7
  require 'optparse'
8
+ require 'nokogiri'
8
9
  require 'xdg' # keep configuration files in sane places
9
10
  require 'debugger'
10
11
  require 'erb'
@@ -19,8 +20,6 @@ require 'rbconfig'
19
20
  require 'fun_with_files'
20
21
  require 'fun_with_configurations'
21
22
 
22
-
23
-
24
23
  EpubForge = Module.new
25
24
  EpubForge::DEBUG = false
26
25
  # EpubForge.root responds with the gem directory
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: epubforge
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-22 00:00:00.000000000 Z
12
+ date: 2013-05-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: xdg
@@ -316,7 +316,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
316
316
  version: '0'
317
317
  segments:
318
318
  - 0
319
- hash: 1574289628664459478
319
+ hash: 2723822957058462033
320
320
  required_rubygems_version: !ruby/object:Gem::Requirement
321
321
  none: false
322
322
  requirements: