#!/usr/bin/env python3
import argparse
from datetime import datetime
import os
import subprocess
import sys
langs_dirs = {'fa'}
khorshidi_months = [
'فروردین', 'اردیبهشت', 'خرداد',
'تیر', 'مرداد', 'شهریور',
'مهر', 'آبان', 'آذر',
'دی', 'بهمن', 'اسفند',
]
miladi_months = [
'ژانویه', 'فوریه', 'مارس',
'آوریل', 'مه', 'ژوئن',
'ژوئیه', 'اوت', 'سپتامبر',
'اکتبر', 'نوامبر', 'دسامبر',
]
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument('filename')
args = parser.parse_args()
MD = os.getenv('MD', 'lowdown')
MD_opts = os.getenv('MD_opts', '')
cur_dir = os.path.split(os.getcwd())[-1]
try:
with open(args.filename, 'r') as file:
for line in file:
space_index = 0
try:
space_index = line.index(' ')
except ValueError as e:
print(f'error: line does not contain a space character: {line}')
continue
date = line[:space_index]
is_en = False
while date.startswith('../'):
date = date[3:]
is_en = True
date = date[:10]
if cur_dir in langs_dirs:
year = date[:4]
month_index = int(date[5:7]) - 1
if not date.startswith('2'): # shamsi (good enough for my uses)
month = khorshidi_months[month_index]
else:
month = miladi_months[month_index]
short_date = f'{month} {year}'
short_date = (short_date.translate(
str.maketrans('0123456789',
'۰۱۲۳۴۵۶۷۸۹')))
else:
short_date = (datetime
.strptime(date, '%Y/%m/%d')
.strftime('%b %Y'))
title = line[space_index:].strip()
title_md = (subprocess
.run([MD] + MD_opts.split(), input=title,
text=True, capture_output=True)
.stdout
.rstrip())
if title_md.startswith('<p>'):
title_md = title_md[3:]
if title_md.endswith('</p>'):
title_md = title_md[:-4]
print(f'<tr><td>{short_date}</td>')
if cur_dir in langs_dirs and is_en:
print(f'<td><a href="{line[:space_index]}" hreflang="en">{title_md}</a></td></tr>\n')
else:
print(f'<td><a href="{line[:space_index]}">{title_md}</a></td></tr>\n')
except FileNotFoundError as e:
print(f'error: could not find file {args.filename}')
return 1
return 0
if __name__ == '__main__':
sys.exit(main())