def exists(self): try: stats = os.stat(self.zotero_database) except Exception as e: raiseError(u"citation_vim.zotero.data.exists(): %s" % e) return False return True
def __init__(self, context): self.context = context self.zotero_path = context['zotero_path'] self.cache_path = context['cache_path'] self.et_al_limit = context['et_al_limit'] self.key_format = context['key_format'] self.html_regex = re.compile('<[^<]+?>') if not check_path(os.path.join(self.zotero_path, u"zotero.sqlite")): raiseError(u"{} is not a valid zotero path".format(self.zotero_path))
def get_parser(self): if self.context.mode == "bibtex": from citation_vim.bibtex.parser import bibtexParser parser = bibtexParser(self.context) elif self.context.mode == "zotero": from citation_vim.zotero.parser import zoteroParser parser = zoteroParser(self.context) else: raiseError(u"Citation.vim Error: g:citation_vim_mode must be either 'zotero' or 'bibtex'") return parser
def get_mode(self, context): context['mode'] = vim.eval("g:citation_vim_mode") if context['mode'] == "bibtex": context = self.get_bibtex_context(context) elif context['mode'] == "zotero": context = self.get_zotero_context(context) else: raiseError( u"'g:citation_vim_mode' must be set to 'zotero' or 'bibtex'") return context
def __init__(self, context): self.context = context self.zotero_path = context['zotero_path'] self.cache_path = context['cache_path'] self.et_al_limit = context['et_al_limit'] self.key_format = context['key_format'] self.clean_regex = re.compile( "[^A-Za-z0-9\ \!\$\&\*\+\-\.\/\:\;\<\>\?\[\]\^\_\`\|]+") self.html_regex = re.compile('<[^<]+?>') if not check_path(os.path.join(self.zotero_path, u"zotero.sqlite")): raiseError(u"{} is not a valid zotero path".format( self.zotero_path))
def load(self): """ Returns: A zotero database as an array of Items. """ if not check_path(os.path.join(self.zotero_path, u"zotero.sqlite")): raiseError(u"Citation.vim Error:", self.zotero_path, u"is not a valid zotero path") return [] zotero = zoteroData(self.context) zot_data = zotero.load() bb = betterBibtex(self.zotero_path, self.cache_path) citekeys = bb.load_citekeys() items = [] for zot_id, zot_item in zot_data: item = Item() item.abstract = zot_item.abstract item.author = self.format_author(zot_item) item.collections = zot_item.collections item.date = zot_item.date item.doi = zot_item.doi item.file = self.format_fulltext(zot_item) item.isbn = zot_item.isbn item.publication = zot_item.publication item.key = self.format_key(zot_item, citekeys) item.language = zot_item.language item.issue = zot_item.issue item.notes = self.format_notes(zot_item) item.pages = zot_item.pages item.publisher = zot_item.publisher item.tags = self.format_tags(zot_item) item.title = zot_item.title item.type = zot_item.type item.url = zot_item.url item.volume = zot_item.volume item.combine() items.append(item) return items
def load(self): """ Returns: A bibtex file as an array of Items. """ items = [] try: bib_data = self._read_file(self.bibtex_file) except Exception as e: raiseError(u"Failed to read {}".format(self.bibtex_file, '\r', u"Message: {}".format(str(e)))) for key in bib_data.entries: bib_entry = bib_data.entries[key] item = Item() item.abstract = self.get_field(bib_entry, "abstract") item.author = self.format_author(bib_entry) item.collections = [] item.date = self.get_field(bib_entry, "year") item.doi = self.get_field(bib_entry, "doi") item.file = self.format_file(bib_entry) item.isbn = self.get_field(bib_entry, "isbn") item.publication = self.get_field(bib_entry, "journal") item.key = key item.language = self.get_field(bib_entry, "language") item.issue = self.get_field(bib_entry, "number") item.notes = self.get_field(bib_entry, "annote") item.pages = self.get_field(bib_entry, "pages") item.publisher = self.get_field(bib_entry, "publisher") item.tags = self.get_field(bib_entry, "keyword") item.title = self.get_field(bib_entry, "title") item.type = bib_entry.type item.url = self.format_url(bib_entry) item.volume = self.get_field(bib_entry, "volume") item.combine() items.append(item) return items
def connect(): import vim script_path = os.path.join(vim.eval('s:script_path'), '../../../python') sys.path.insert(0, script_path) from citation_vim.utils import raiseError context = Context() context.mode = vim.eval("g:citation_vim_mode") if context.mode == "bibtex": try: file = vim.eval("g:citation_vim_bibtex_file") context.bibtex_file = os.path.expanduser(file) except: raiseError(u"Citation.vim Error: global variable 'g:citation_vim_bibtex_file' is not set") elif context.mode == "zotero": try: file = vim.eval("g:citation_vim_zotero_path") context.zotero_path = os.path.expanduser(file) except: raise(u"Citation.vim Error: global variable 'g:citation_vim_zotero_path' is not set") else: raiseError(u"Citation.vim Error: global variable 'g:citation_vim_mode' must be set to 'zotero' or 'bibtex'") try: context.cache_path = os.path.expanduser(vim.eval("g:citation_vim_cache_path")) except: raiseError(u"Citation.vim Error: global variable 'g:citation_vim_cache_path' is not set") context.collection = vim.eval("g:citation_vim_collection") context.desc_format = vim.eval("g:citation_vim_description_format") context.desc_fields = vim.eval("g:citation_vim_description_fields") context.wrap_chars = vim.eval("g:citation_vim_source_wrap") context.et_al_limit = vim.eval("g:citation_vim_et_al_limit") context.source = vim.eval("a:source") context.source_field = vim.eval("a:field") searchkeys = vim.eval("l:searchkeys") if len(searchkeys) > 0: context.searchkeys = searchkeys.split() else: context.searchkeys = [] builder = Builder(context) return builder.build_list() return []
def __init__(self, context): self.context = context if not check_path(self.context['bibtex_file']): raiseError(u"{} does not exist".format( self.context['bibtex_file'])) return []
def write_cache(self, itemlist): try: with open(self.cache_file, 'wb') as out_file: pickle.dump(itemlist, out_file) except Exception as e: raiseError(u"citation_vim.citation.write_cache(): %s" % e)
def read_cache(self): try: with open(self.cache_file, 'rb') as in_file: return pickle.load(in_file) except Exception as e: raiseError(u"citation_vim.citation.write_cache(): %s" % e)
def check_mode(self): if not self.context['mode'] in ["bibtex", "zotero"]: raiseError(u"g:citation_vim_mode must be either 'zotero' or 'bibtex', but is set to {}".format(self.context['mode']))