%PDF- %PDF-
Direktori : /lib/python3/dist-packages/chm/ |
Current File : //lib/python3/dist-packages/chm/extra.py |
# Copyright (C) 2019 Mikhail Gusarov <dottedmag@dottedmag.net> # # pychm is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of the # License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public # License along with this program; see the file COPYING. If not, # write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA from . import chmlib, _chmlib _lang_objects = [ (b'/$FIftiMain', 0x7E), (b'$WWKeywordLinks/BTree', 0x34), (b'$WWAssociativeLinks/BTree', 0x34), ] def get_lcid(f): for (obj, offset) in _lang_objects: (res, ui) = chmlib.chm_resolve_object(f, obj) if res == chmlib.CHM_RESOLVE_SUCCESS: (size, content) = chmlib.chm_retrieve_object(f, ui, offset, 4) if size != 0: return struct.unpack('<i', content) return None def search(f, text, whole_words, titles_only): if not is_searchable(f): return False d = {} def cb(topic, url): d[topic] = url ret = _chmlib.search(f, text, whole_words, titles_only, cb) return ret, d _search_objects = [b'/$FIftiMain', b'/#TOPICS', b'/#STRINGS', b'/#URLTBL', b'/#URLSTR'] def is_searchable(chmfile): for obj in _search_objects: (res, _) = chmlib.chm_resolve_object(chmfile, obj) if res == chmlib.CHM_RESOLVE_FAILURE: return False return True