Add language to book data.
[quanlib.git] / book.rb
diff --git a/book.rb b/book.rb
index cd14ab690b6164c14c7f842b4755e85bb87d231e..d7135690d4d60514f4c900d59dc76698d3eb164d 100644 (file)
--- a/book.rb
+++ b/book.rb
@@ -3,24 +3,26 @@ require 'nokogiri'
 require 'rubygems'
 require 'zip'
 
-require 'author'
-require 'classification'
-require 'cover'
-require 'store'
+require_relative 'author'
+require_relative 'classification'
+require_relative 'cover'
+require_relative 'store'
 
 class Book
   @@DC_NS_URL = 'http://purl.org/dc/elements/1.1/'
 
+  attr_accessor :author
+  attr_accessor :classification_id
+  attr_accessor :cover
+  attr_accessor :description
+  attr_accessor :language
+  attr_accessor :path
+  attr_accessor :series_id
+  attr_accessor :title
+  attr_accessor :volume
+
   def initialize(store)
-    @author = nil
-    @classification_id = nil
-    @cover = nil
-    @description = nil
-    @path = nil
-    @series_id = nil
     @store = store
-    @title = nil
-    @volume = nil
   end
 
   def load_from_file!(fileName)
@@ -47,38 +49,6 @@ class Book
     return false
   end
 
-  def author
-    return @author
-  end
-
-  def author=(value)
-    @author = value
-  end
-
-  def classification_id
-    @classification_id
-  end
-
-  def classification_id=(value)
-    @classification_id = value
-  end
-
-  def cover
-    return @cover
-  end
-
-  def cover=(value)
-    @cover = value
-  end
-
-  def description
-    @description
-  end
-
-  def description=(value)
-    @description = value
-  end
-
   def heading
     result = []
 
@@ -142,34 +112,10 @@ class Book
     return '(Book:' + data.join(',') + ')'
   end
 
-  def path
-    @path
-  end
-
-  def path=(value)
-    @path = value
-  end
-
-  def series_id
-    @series_id
-  end
-
-  def series_id=(value)
-    @series_id = value
-  end
-
   def to_s
     return inspect()
   end
 
-  def title
-    @title
-  end
-
-  def title=(value)
-    @title = value
-  end
-
   def title_grouping
     if nil == @path
       return nil
@@ -178,14 +124,6 @@ class Book
     return File.basename(@path, '.*')
   end
 
-  def volume
-    @volume
-  end
-
-  def volume=(value)
-    @volume = value
-  end
-
   protected
   def isUpper?(c)
     return /[[:upper:]]/.match(c)
@@ -371,6 +309,17 @@ class Book
       end
     end
 
+    #---------------------------------------
+    # Language
+
+    langNodes = opfDoc.css('dc|language', 'dc' => @@DC_NS_URL)
+    if (langNodes.length > 0)
+      langNode = langNodes[0]
+      if langNode
+        @language = langNode.content
+      end
+    end
+
     #---------------------------------------
     # Other metadata:  series, volume, cover