Blame alexandria-0.6.8-yaml-unescape.patch
|
Mamoru Tasaka |
a04e982 |
--- alexandria-0.6.8/lib/alexandria/models/library.rb.broken_yaml 2009-12-07 05:16:57.000000000 +0900
|
|
Mamoru Tasaka |
a04e982 |
+++ alexandria-0.6.8/lib/alexandria/models/library.rb 2012-10-13 03:25:24.000000000 +0900
|
|
Mamoru Tasaka |
a04e982 |
@@ -78,8 +78,23 @@
|
|
Mamoru Tasaka |
a04e982 |
|
|
Mamoru Tasaka |
a04e982 |
test[1] = filename if test[0] == 0
|
|
Mamoru Tasaka |
a04e982 |
|
|
Mamoru Tasaka |
a04e982 |
+ book_valid_p = true
|
|
Mamoru Tasaka |
a04e982 |
+
|
|
Mamoru Tasaka |
a04e982 |
if not File.size? test[1]
|
|
Mamoru Tasaka |
a04e982 |
log.warn { "Book file #{test[1]} was empty"}
|
|
Mamoru Tasaka |
a04e982 |
+ book_valid_p = false
|
|
Mamoru Tasaka |
a04e982 |
+ end
|
|
Mamoru Tasaka |
a04e982 |
+
|
|
Mamoru Tasaka |
a04e982 |
+ if book_valid_p
|
|
Mamoru Tasaka |
a04e982 |
+ begin
|
|
Mamoru Tasaka |
a04e982 |
+ book = self.regularize_book_from_yaml(test[1])
|
|
Mamoru Tasaka |
a04e982 |
+ rescue Psych::SyntaxError => e
|
|
Mamoru Tasaka |
a04e982 |
+ log.warn "Book file #{test[1]} could not be parsed"
|
|
Mamoru Tasaka |
a04e982 |
+ book_valid_p = false
|
|
Mamoru Tasaka |
a04e982 |
+ end
|
|
Mamoru Tasaka |
a04e982 |
+ end
|
|
Mamoru Tasaka |
a04e982 |
+
|
|
Mamoru Tasaka |
a04e982 |
+ if not book_valid_p
|
|
Mamoru Tasaka |
a04e982 |
md = /([\dxX]{10,13})#{EXT[:book]}/.match(filename)
|
|
Mamoru Tasaka |
a04e982 |
if md
|
|
Mamoru Tasaka |
a04e982 |
file_isbn = md[1]
|
|
Mamoru Tasaka |
a04e982 |
@@ -90,7 +105,7 @@
|
|
Mamoru Tasaka |
a04e982 |
end
|
|
Mamoru Tasaka |
a04e982 |
next
|
|
Mamoru Tasaka |
a04e982 |
end
|
|
Mamoru Tasaka |
a04e982 |
- book = self.regularize_book_from_yaml(test[1])
|
|
Mamoru Tasaka |
a04e982 |
+
|
|
Mamoru Tasaka |
a04e982 |
old_isbn = book.isbn
|
|
Mamoru Tasaka |
a04e982 |
old_pub_year = book.publishing_year
|
|
Mamoru Tasaka |
a04e982 |
begin
|
|
Mamoru Tasaka |
a04e982 |
@@ -178,6 +193,8 @@
|
|
Mamoru Tasaka |
a04e982 |
end
|
|
Mamoru Tasaka |
a04e982 |
|
|
Mamoru Tasaka |
a04e982 |
def self.regularize_book_from_yaml(name)
|
|
Mamoru Tasaka |
a04e982 |
+ require 'syck/encoding'
|
|
Mamoru Tasaka |
a04e982 |
+
|
|
Mamoru Tasaka |
a04e982 |
text = IO.read(name)
|
|
Mamoru Tasaka |
a04e982 |
|
|
Mamoru Tasaka |
a04e982 |
#Code to remove the mystery string in books imported from Amazon
|
|
Mamoru Tasaka |
a04e982 |
@@ -198,7 +215,7 @@
|
|
Mamoru Tasaka |
a04e982 |
new_yaml.sub!(/^\s*\-+\s*/, '')
|
|
Mamoru Tasaka |
a04e982 |
text.sub!(md[0], "loaned_since: #{new_yaml}\n")
|
|
Mamoru Tasaka |
a04e982 |
end
|
|
Mamoru Tasaka |
a04e982 |
- book = YAML.load(text)
|
|
Mamoru Tasaka |
a04e982 |
+ book = YAML.load(Syck::unescape(text))
|
|
Mamoru Tasaka |
a04e982 |
unless book.isbn.class == String
|
|
Mamoru Tasaka |
a04e982 |
# HACK
|
|
Mamoru Tasaka |
a04e982 |
md = /isbn: (.+)/.match(text)
|