consolidate demo plugins to common package

This commit is contained in:
MinchinWeb 2021-05-08 11:17:46 -06:00
parent 09d652899a
commit b8f0e6a35f
5 changed files with 100 additions and 4 deletions

View file

@ -32,6 +32,11 @@ jobs:
python-version: 3.9
steps:
- name: Extract branch name
shell: bash
run: echo "##[set-output name=branch;]$(echo ${GITHUB_REF#refs/heads/})"
id: extract_branch
- uses: actions/checkout@v2
- name: Set up Python ${{ matrix.python-version }}
@ -49,9 +54,9 @@ jobs:
run: |
pip install poetry
poetry config --local virtualenvs.in-project true
poetry add git+https://github.com/MinchinWeb/jrnl-rot13-exporter.git
poetry install --remove-untracked
poetry install
poetry install
poetry run python -m pip install -e "git+${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git@{{ steps.extract_branch.outputs.branch }}#egg=jrnl-demo-plugins&subdirectory=tests/external_plugins_src"
- name: Test with pytest
if: success() || failure()

View file

@ -0,0 +1,39 @@
# pelican\contrib\exporter\custom_json.py
import json
from jrnl.plugins.base import BaseExporter
from jrnl.plugins.util import get_tags_count
__version__ = "v1.0.0"
class Exporter(BaseExporter):
"""
This basic Exporter can convert entries and journals into JSON.
"""
names = ["json"]
extension = "json"
version = __version__
@classmethod
def entry_to_dict(cls, entry):
return {
"title": entry.title,
"body": entry.body,
"date": entry.date.strftime("%Y-%m-%d"),
}
@classmethod
def export_entry(cls, entry):
"""Returns a json representation of a single entry."""
return json.dumps(cls.entry_to_dict(entry), indent=2) + "\n"
@classmethod
def export_journal(cls, journal):
"""Returns a json representation of an entire journal."""
tags = get_tags_count(journal)
result = {
"entries": [cls.entry_to_dict(e) for e in journal.entries],
}
return json.dumps(result, indent=2)

View file

@ -2,10 +2,11 @@ import codecs
from jrnl.plugins.base import BaseExporter
__version__ = "1.0.0"
__version__ = "v1.0.0"
class Exporter(BaseExporter):
names = ["rot13"]
names = ["rot13", "txt"]
extension = "txt"
version = __version__

View file

@ -13,3 +13,4 @@ from jrnl.plugins.base import BaseExporter
class Exporter(BaseExporter):
names = ["testing", "test"]
version = "v0.0.1"
extension = "test"

View file

@ -0,0 +1,50 @@
# pelican\contrib\importer\sample_json.py
import json
import sys
from jrnl import Entry
from jrnl.plugins.base import BaseImporter
__version__ = "v1.0.0"
class Importer(BaseImporter):
"""JSON Importer for jrnl."""
names = ["json"]
version = __version__
@staticmethod
def import_(journal, input=None):
"""
Given a nicely formatted JSON file, will add the
contained Entries to the journal.
"""
old_cnt = len(journal.entries)
if input:
with open(input, "r", encoding="utf-8") as f:
data = json.loads(f)
else:
try:
data = sys.stdin.read()
except KeyboardInterrupt:
print(
"[Entries NOT imported into journal.]",
file=sys.stderr,
)
sys.exit(0)
for json_entry in data:
raw = json_entry["title"] + "/n" + json_entry["body"]
date = json_entry["date"]
entry = Entry.Entry(journal, date, raw)
journal.entries.append(entry)
new_cnt = len(journal.entries)
print(
"[{} entries imported to '{}' journal]".format(
new_cnt - old_cnt, journal.name
),
file=sys.stderr,
)