X-Git-Url: https://git.phdru.name/?p=bookmarks_db.git;a=blobdiff_plain;f=Storage%2Fbkmk_stflad.py;h=63ee0400b5b55f9d47339abef630859ecbbc9853;hp=b936c4a723b5485295ace7ed958706d23fabaa84;hb=c88cb7a75e7caf1d67466cfa107981d95115fa0c;hpb=a04eaa0346e8aa5ad86a195f8f4d36487ebfe09c diff --git a/Storage/bkmk_stflad.py b/Storage/bkmk_stflad.py index b936c4a..63ee040 100644 --- a/Storage/bkmk_stflad.py +++ b/Storage/bkmk_stflad.py @@ -18,123 +18,123 @@ 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(""" -Level: %d -Folder: %s -AddDate: %s -Comment: %s -LastModified: %s -""" % (level, f.name, f.add_date, f.comment, f.last_modified or '')) - - def bookmark(self, b, level): - self.outfile.write(""" -Level: %d -Title: %s -URL: %s -AddDate: %s -LastVisit: %s -LastModified: %s -Keyword: %s -Comment: %s -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 + 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 + Comment: %s + LastModified: %s + """ % (level, f.name, f.add_date, f.comment, f.last_modified or '')) + + def bookmark(self, b, level): + self.outfile.write(""" + Level: %d + Title: %s + URL: %s + AddDate: %s + LastVisit: %s + LastModified: %s + Keyword: %s + Comment: %s + 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