zim-wiki team mailing list archive
-
zim-wiki team
-
Mailing list archive
-
Message #01399
Re: go with the dominant syntaxes: label/tags and tables
On Wednesday, September 28, 2011, Jaap Karssenberg wrote:
> If you want to plug into zim you could have a look at the "print to browser"
> plugin, which adds a button to the tasklist dialog for html export. If you
> want to make it a background script, try re-using the code of the tasklist
> plugin for accessing the index.
It's just two functions in my script that runs whenever I synchronize my flat files with the Web server. It's actually rather stupid, just pulling the text out of the txt files. I've attached it below though I doubt it would be of use to others, but perhaps an expire plugin that moves [x] tasks to a journal/calendar might be.
> No zim's "@" syntax does not predate the twitter convention. But you will
> find there are older systems using "@" for tags as well. Main reason I
> choose this syntax is that in HTML "#" is used for anchors, which is a
> feature we still want to add to zim.
OK.
> Actually work is ongoing to make zim support multiple syntaxes. No need to
> have one-size-fits all in this respect. See previous discussion on this
> list, as well as various syntax related feature requests in the bug tracker.
Yes, I saw some discussion of that a month or so ago, but I didn't know it was being actively developed. (My fingers are crossed.) BTW: no bugs are listed here:
https://bugs.launchpad.net/~zim-wiki
~~~~~~~~~~~~~~~~~~~``
def log2work(done_tasks):
'''
Log completed zim tasks to work microblog
'''
import hashlib
log_items = []
for activity, task in done_tasks:
# zim syntax for href/em to HTML
task = re.sub('\[\[(.*?)\|(.*)\]\]', ur'<a href="\1">\2</a>', task)
task = re.sub('\/\/(.*?)\/\/', ur'<em>\1</em>', task)
date_token = get_Now_YMD()
digest = hashlib.md5(task.encode('utf-8', 'replace')).hexdigest()
uid = "e" + date_token + "-" + digest[:4]
log_item = '<li class="event" id="%s">%s: %s] %s</li>\n' % \
(uid, date_token, activity, task)
log_items.append(log_item)
OUT_FILE = HOME+'/data/2web/reagle.org/joseph/plan/plans/index.html'
fd = codecs.open(OUT_FILE, 'r', 'utf-8', 'replace')
content = fd.read()
fd.close()
insertion_regexp = re.compile('(<h2>Done Work</h2>\s*<ol>)')
newcontent = insertion_regexp.sub(u'\\1 \n %s' %
''.join(log_items), content, re.DOTALL|re.IGNORECASE)
if newcontent:
fd = codecs.open(OUT_FILE, 'w', 'utf-8', 'replace')
fd.write(newcontent)
fd.close()
else:
print_usage("Sorry, output regexp subsitution failed.")
def retire_tasks(directory):
'''
Removes completed '[x]' zim tasks form zim
'''
if 'zim' in check_output(["ps", "axw"]):
print("Zim is presently running; tasks not retired.")
return
else:
zim_files = locate('*.txt', directory)
for zim_filename in zim_files:
info(zim_filename)
done_tasks =[]
activity = 'misc'
new_wiki_page = []
with open(zim_filename, 'r') as wiki_page:
for line in wiki_page:
label = re.search('@\w+', line)
if label:
activity = label.group(0).strip()[1:]
if '[x]' in line:
item = line.split(']',1)[1].strip()
done_tasks.append((activity, item))
else:
new_wiki_page.append(line)
if done_tasks:
new_wiki_page_fd = open(zim_filename, 'w')
new_wiki_page_fd.writelines("%s" % line for line in new_wiki_page)
new_wiki_page_fd.close()
log2work(done_tasks)
Follow ups
References