# Copyright 2017 Lars Wirzenius # # This program 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 3 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. If not, see . import os import string import time class LayoutBase(object): def __init__(self): self._settigs = None self._time = None def set_settings(self, settings): self._settings = settings def set_time_tuple(self, tuple): self._time = tuple def get_filename(self, title): return os.path.join( self._settings['source'], self._settings['notes-dir'], self.subdir(), self.basename(title)) def subdir(self): raise NotImplementedError() def basename(self, title): raise NotImplementedError() class PkbLayout(LayoutBase): def subdir(self): return time.strftime('%Y/%m/%d', self._time) def basename(self, title): basename = '' acceptable = set(string.ascii_letters + string.digits + '-_') for c in title.lower(): if c in acceptable: basename += c elif not basename.endswith('_'): basename += '_' return basename.rstrip('_') or 'untitled' class CtLayout(LayoutBase): def subdir(self): return '%d' % self.app.now_tuple.tm_year, def basename(self, title): return time.strftime('%Y-%m-%d-%H:%M:%S', self.app.now_tuple),