mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 16:48:31 +02:00
export changes
This commit is contained in:
parent
bcfd2d4b43
commit
81dfebb2c0
5 changed files with 4 additions and 87 deletions
|
@ -8,7 +8,7 @@ jrnl is a simple journal application for your command line.
|
||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
__title__ = 'jrnl'
|
__title__ = 'jrnl'
|
||||||
__version__ = '2.0.0-rc1'
|
__version__ = '2.0.0-rc2'
|
||||||
__author__ = 'Manuel Ebert'
|
__author__ = 'Manuel Ebert'
|
||||||
__license__ = 'MIT License'
|
__license__ = 'MIT License'
|
||||||
__copyright__ = 'Copyright 2013 - 2015 Manuel Ebert'
|
__copyright__ = 'Copyright 2012 - 2016 Manuel Ebert'
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
# encoding: utf-8
|
|
||||||
|
|
||||||
from __future__ import absolute_import, unicode_literals
|
|
||||||
from .util import ERROR_COLOR, RESET_COLOR
|
|
||||||
from .util import slugify, u
|
|
||||||
from .template import Template
|
|
||||||
import os
|
|
||||||
import codecs
|
|
||||||
|
|
||||||
|
|
||||||
class Exporter(object):
|
|
||||||
"""This Exporter can convert entries and journals into text files."""
|
|
||||||
def __init__(self, format):
|
|
||||||
with open("jrnl/templates/" + format + ".template") as f:
|
|
||||||
front_matter, body = f.read().strip("-\n").split("---", 2)
|
|
||||||
self.template = Template(body)
|
|
||||||
|
|
||||||
def export_entry(self, entry):
|
|
||||||
"""Returns a unicode representation of a single entry."""
|
|
||||||
return entry.__unicode__()
|
|
||||||
|
|
||||||
def _get_vars(self, journal):
|
|
||||||
return {
|
|
||||||
'journal': journal,
|
|
||||||
'entries': journal.entries,
|
|
||||||
'tags': journal.tags
|
|
||||||
}
|
|
||||||
|
|
||||||
def export_journal(self, journal):
|
|
||||||
"""Returns a unicode representation of an entire journal."""
|
|
||||||
return self.template.render_block("journal", **self._get_vars(journal))
|
|
||||||
|
|
||||||
def write_file(self, journal, path):
|
|
||||||
"""Exports a journal into a single file."""
|
|
||||||
try:
|
|
||||||
with codecs.open(path, "w", "utf-8") as f:
|
|
||||||
f.write(self.export_journal(journal))
|
|
||||||
return "[Journal exported to {0}]".format(path)
|
|
||||||
except IOError as e:
|
|
||||||
return "[{2}ERROR{3}: {0} {1}]".format(e.filename, e.strerror, ERROR_COLOR, RESET_COLOR)
|
|
||||||
|
|
||||||
def make_filename(self, entry):
|
|
||||||
return entry.date.strftime("%Y-%m-%d_{0}.{1}".format(slugify(u(entry.title)), self.extension))
|
|
||||||
|
|
||||||
def write_files(self, journal, path):
|
|
||||||
"""Exports a journal into individual files for each entry."""
|
|
||||||
for entry in journal.entries:
|
|
||||||
try:
|
|
||||||
full_path = os.path.join(path, self.make_filename(entry))
|
|
||||||
with codecs.open(full_path, "w", "utf-8") as f:
|
|
||||||
f.write(self.export_entry(entry))
|
|
||||||
except IOError as e:
|
|
||||||
return "[{2}ERROR{3}: {0} {1}]".format(e.filename, e.strerror, ERROR_COLOR, RESET_COLOR)
|
|
||||||
return "[Journal exported to {0}]".format(path)
|
|
||||||
|
|
||||||
def export(self, journal, format="text", output=None):
|
|
||||||
"""Exports to individual files if output is an existing path, or into
|
|
||||||
a single file if output is a file name, or returns the exporter's
|
|
||||||
representation as unicode if output is None."""
|
|
||||||
if output and os.path.isdir(output): # multiple files
|
|
||||||
return self.write_files(journal, output)
|
|
||||||
elif output: # single file
|
|
||||||
return self.write_file(journal, output)
|
|
||||||
else:
|
|
||||||
return self.export_journal(journal)
|
|
|
@ -48,6 +48,7 @@ default_config = {
|
||||||
'editor': os.getenv('VISUAL') or os.getenv('EDITOR') or "",
|
'editor': os.getenv('VISUAL') or os.getenv('EDITOR') or "",
|
||||||
'encrypt': False,
|
'encrypt': False,
|
||||||
'template': False,
|
'template': False,
|
||||||
|
'plugin_path': os.path.join(CONFIG_PATH, 'plugins'),
|
||||||
'default_hour': 9,
|
'default_hour': 9,
|
||||||
'default_minute': 0,
|
'default_minute': 0,
|
||||||
'timeformat': "%Y-%m-%d %H:%M",
|
'timeformat': "%Y-%m-%d %H:%M",
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
---
|
|
||||||
extension: txt
|
|
||||||
---
|
|
||||||
|
|
||||||
{% block journal %}
|
|
||||||
{% for entry in entries %}
|
|
||||||
{% include entry %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
||||||
|
|
||||||
{% block entry %}
|
|
||||||
{{ entry.title }}
|
|
||||||
{{ "-" * len(entry.title) }}
|
|
||||||
|
|
||||||
{{ entry.body }}
|
|
||||||
|
|
||||||
{% endblock %}
|
|
2
setup.py
2
setup.py
|
@ -83,7 +83,7 @@ setup(
|
||||||
"parsedatetime>=1.5",
|
"parsedatetime>=1.5",
|
||||||
"pytz>=2015.7",
|
"pytz>=2015.7",
|
||||||
"six>=1.10.0",
|
"six>=1.10.0",
|
||||||
"cryptography==1.4",
|
"cryptography>=1.8",
|
||||||
"tzlocal>=1.2",
|
"tzlocal>=1.2",
|
||||||
"pyyaml>=3.11",
|
"pyyaml>=3.11",
|
||||||
"keyring>=7.3",
|
"keyring>=7.3",
|
||||||
|
|
Loading…
Add table
Reference in a new issue