X-Git-Url: https://git.phdru.name/?a=blobdiff_plain;f=Storage%2Fbkmk_stflad.py;h=a60b30af872b215e62f7e80d151cdd672589ff66;hb=ff958ee854d80253b271de04945a57fafc0363c4;hp=ddcdc63bc919fcc3eea4571b0ee23950a62c3c16;hpb=c9cfb54ef36e77aee7187e4533f063d407073ad8;p=bookmarks_db.git diff --git a/Storage/bkmk_stflad.py b/Storage/bkmk_stflad.py index ddcdc63..a60b30a 100644 --- a/Storage/bkmk_stflad.py +++ b/Storage/bkmk_stflad.py @@ -5,11 +5,8 @@ Special version for compatibility with old (version 1) bkmk2db. This file is a part of Bookmarks database and Internet robot. """ -__version__ = "$Revision$"[11:-2] -__revision__ = "$Id$"[5:-2] -__date__ = "$Date$"[7:-2] __author__ = "Oleg Broytman " -__copyright__ = "Copyright (C) 2000-2011 PhiloSoft Design" +__copyright__ = "Copyright (C) 2000-2017 PhiloSoft Design" __license__ = "GNU GPL" __all__ = ['storage_flad'] @@ -21,22 +18,22 @@ from bkmk_objects import Folder, Bookmark, Ruler, Walker class storage_flad(Walker): - filename = "bookmarks_db.flad" - - def __init__(self): - self.first_object = 1 - - def root_folder(self, f): - header = string.replace(f.header, ".", ".\n") - header = string.replace(header, "<", "\n<", 3)[1:] - header_file = open("header", 'w') - header_file.write(header + "\n") - header_file.write('

%s

\n\n' % f.name) - if f.comment: header_file.write('
%s\n' % f.comment) - header_file.close() - - def start_folder(self, f, level): - self.outfile.write(""" + filename = "bookmarks_db.flad" + + def __init__(self): + self.first_object = 1 + + def root_folder(self, f): + header = string.replace(f.header, ".", ".\n") + header = string.replace(header, "<", "\n<", 3)[1:] + header_file = open("header", 'w') + header_file.write(header + "\n") + header_file.write('

%s

\n\n' % f.name) + if f.comment: header_file.write('
%s\n' % f.comment) + header_file.close() + + def start_folder(self, f, level): + self.outfile.write(""" Level: %d Folder: %s AddDate: %s @@ -44,8 +41,8 @@ Comment: %s LastModified: %s """ % (level, f.name, f.add_date, f.comment, f.last_modified or '')) - def bookmark(self, b, level): - self.outfile.write(""" + def bookmark(self, b, level): + self.outfile.write(""" Level: %d Title: %s URL: %s @@ -58,86 +55,86 @@ IconURI: %s Icon: %s Charset: %s """ % (level+1, b.name, b.href, b.add_date, b.last_visit, b.last_modified, - b.keyword, b.comment.replace('\n', "\\n"), - b.icon_href or '', b.icon or '', b.charset or '')) - - def ruler(self, r, level): - self.outfile.write("\nLevel: %s\nRuler: YES\n" % (level+1)) - - def store(self, root_folder): - self.outfile = open(self.filename, 'w') - root_folder.walk_depth(self) - self.outfile.close() - - def unindent(self, old_level, new_level): - while old_level > new_level: - old_level = old_level - 1 - del self.folder_stack[-1] - - if self.folder_stack: - self.current_folder = self.folder_stack[-1] - else: - self.current_folder = None - - def load(self): - bookmarks_db = fladm.load_from_file(self.filename, fladm.check_record, ["Level"]) - - root_folder = Folder() - self.folder_stack = [root_folder] - self.current_folder = root_folder - - header_file = open("header", 'r') - header = header_file.read() - header_file.close() - - header = string.split(header, "\n") - root_folder.header = string.join(header[:5], '') - root_folder.name = header[5][4:-5] - root_folder.comment = string.join(header[7:], '')[4:] - - save_level = 0 - got_folder = 1 # Start as if we already have one folder - - for record in bookmarks_db: - level = int(record["Level"]) - - if level == save_level: - pass - elif level == save_level + 1: - if not got_folder: - raise ValueError, "indent without folder" - elif level <= save_level - 1: - self.unindent(save_level, level) - else: - raise ValueError, "new level (%d) too big; must be %d - %d" % (level, save_level-1, save_level+1) - - save_level = level - got_folder = record.has_key("Folder") # Test here to save got_folder for next loop - - if record.has_key("URL"): - comment = record["Comment"].replace("\\n", '\n') - bookmark = Bookmark(record["URL"], record["AddDate"], - record["LastVisit"], record["LastModified"], - record["Keyword"], comment) - bookmark.name = record["Title"] - self.current_folder.append(bookmark) - - elif record.has_key("Folder"): - folder = Folder(record["AddDate"], record["Comment"], record["LastModified"]) - folder.name = record["Folder"] - self.current_folder.append(folder) - self.folder_stack.append(folder) - self.current_folder = folder - - elif record.has_key("Ruler"): - self.current_folder.append(Ruler()) - - else: - raise KeyError, "neither \"URL\" nor \"Folder\" nor \"Ruler\" in record " + str(record) - - if save_level >= 0: - self.unindent(save_level, 0) - else: - raise ValueError, "new level (%d) too little - must be >= 0" % save_level - - return root_folder + b.keyword, b.comment.replace('\n', "\\n"), + b.icon_href or '', b.icon or '', b.charset or '')) + + def ruler(self, r, level): + self.outfile.write("\nLevel: %s\nRuler: YES\n" % (level+1)) + + def store(self, root_folder): + self.outfile = open(self.filename, 'w') + root_folder.walk_depth(self) + self.outfile.close() + + def unindent(self, old_level, new_level): + while old_level > new_level: + old_level = old_level - 1 + del self.folder_stack[-1] + + if self.folder_stack: + self.current_folder = self.folder_stack[-1] + else: + self.current_folder = None + + def load(self): + bookmarks_db = fladm.load_from_file(self.filename, fladm.check_record, ["Level"]) + + root_folder = Folder() + self.folder_stack = [root_folder] + self.current_folder = root_folder + + header_file = open("header", 'r') + header = header_file.read() + header_file.close() + + header = string.split(header, "\n") + root_folder.header = string.join(header[:5], '') + root_folder.name = header[5][4:-5] + root_folder.comment = string.join(header[7:], '')[4:] + + save_level = 0 + got_folder = 1 # Start as if we already have one folder + + for record in bookmarks_db: + level = int(record["Level"]) + + if level == save_level: + pass + elif level == save_level + 1: + if not got_folder: + raise ValueError("indent without folder") + elif level <= save_level - 1: + self.unindent(save_level, level) + else: + raise ValueError("new level (%d) too big; must be %d - %d" % (level, save_level-1, save_level+1)) + + save_level = level + got_folder = record.has_key("Folder") # Test here to save got_folder for next loop + + if record.has_key("URL"): + comment = record["Comment"].replace("\\n", '\n') + bookmark = Bookmark(record["URL"], record["AddDate"], + record["LastVisit"], record["LastModified"], + record["Keyword"], comment) + bookmark.name = record["Title"] + self.current_folder.append(bookmark) + + elif record.has_key("Folder"): + folder = Folder(record["AddDate"], record["Comment"], record["LastModified"]) + folder.name = record["Folder"] + self.current_folder.append(folder) + self.folder_stack.append(folder) + self.current_folder = folder + + elif record.has_key("Ruler"): + self.current_folder.append(Ruler()) + + else: + raise KeyError("neither \"URL\" nor \"Folder\" nor \"Ruler\" in record " + str(record)) + + if save_level >= 0: + self.unindent(save_level, 0) + else: + raise ValueError("new level (%d) too little - must be >= 0" % save_level) + + return root_folder