Ipython extension
Setting up the ipython extension is completely optional, and not required, but there for pure convenience.
You can add markata to your
~/.ipython/profile_default/ipython_config.py
as reccomended by
ipython with the snippet below.
c.InteractiveShellApp.extensions.append('markata')
I don't prefer this because I also have ipython installed in environments without markata installed, so I do the following in my personal config so that it does not error when missing markata.
import importlib
def activate_extension(extension):
try:
mod = importlib.import_module(extension)
getattr(mod, "load_ipython_extension")
c.InteractiveShellApp.extensions.append(extension)
except ModuleNotFoundError:
"extension is not installed"
except AttributeError:
"extension does not have a 'load_ipython_extension' function"
extensions = ["markata", ]
for extension in extensions:
activate_extension(extension)
Loading a markata instance
If you have the extension active an instance will automatically be created and
available as m
as well as markata
.
m
# or
markata
If you opt out of setting up the extension or use something other than ipython you can make an instance yourself.
from markata import Markata
m = Markata()
Looking through articles
Once you have an instance of markata
in memory you can look through your
articles using the list of articles, or the map function.
# get a list of frontmatter.Post objects
m.articles
# leverage the map function to filter
m.map('post', filter='"python" in tags')
m.map('post', filter='date>today')
Map
The map function
func
: What to return as the item in the list. This can ve a single attribute
like title
, or tags
, or the full post post
. It can also be any string of
python like 'date>today'
or something more complicated like
f'''"{markata.config['url']}/" + slug'''
m.map('post')
m.map('title')
m.map('slug')
m.map('"python" in tags')
m.map(f'''"{markata.config['url']}/" + slug''')
filter
: Filter is also just a string of python similar to the func
argument, but it filters based on the boolean value of the result. You can do
things like look for published posts published
, check for posts posted before
today date<today
, or articles with certain tags "python" in tags
.
m.map(filter='published')
m.map(filter='date<today')
m.map(filter='"python" in tags')
sort
: Sort will try to sort your articles based on the value returned.
m.map(sort='title')
m.map(sort='date')
m.map(sort='order')
reverse
: Reverse the results returned by map with the reverse
flag.
m.map(reverse=False)
m.map(reverse=True)