Hocam basit test mantığında ilerliyorum. İçinde bir sürü bad practice içeriyor olabilir :p
Bu main.py dosyası. Konsoldan ./main.py ilk-yazi-bu.df şeklinde çağırırsanız geliyor. Aşağıdakiler Python kodları. Bunu D diline çevirmeye çalışıyorum. Belki content'i regex ile alırken sıkıntı olmuş olabilir. Harf sayısı kadar adım sayıyor.
Ayrıca D'nin Json işlemini de kullanacağım nikola, pelican, octopress gibi bir yapı düşünüyorum :)
Hocam dosyaların tamamı bu kadar küçük olmasından kastınız :( Anlayamadım pek onu.
#!/usr/bin/python3
import re
import sys
import time
if len(sys.argv) != 2:
print('Usage: ./main.py file-name.df')
sys.exit(1)
file_from_cli = sys.argv[1]
art_title = re.compile(r'\[title=(.*?)\]')
art_desc = re.compile(r'\[description=(.*?)\]')
art_cat = re.compile(r'\[category=(.*?)\]')
art_date = re.compile(r'\[date=(.*?)\]')
art_content = re.compile(r'\[content\]([\s\S]*?)\[\/content\]')
now = time.strftime("%d %B %y -- %X")
file_name = file_from_cli
if file_name.lower().endswith(".df"):
access_log_file = open(file_name, "r").read()
else:
print("Ups! File extension must be '.df'")
sys.exit(1)
title_read = desc_read = cat_read = date_read = content_read = access_log_file
title_show = re.search(art_title, title_read)
desc_show = re.search(art_desc, desc_read)
cat_show = re.search(art_cat, cat_read)
date_show = re.search(art_date, date_read)
content_show = re.search(art_content, content_read)
title = title_show.group(1)
desc = desc_show.group(1)
cat = cat_show.group(1)
content = content_show.group(1)
date = date_show.group(1)
if not title:
print("Title can't be empty")
sys.exit(1)
if not desc:
print("Description can't be empty")
sys.exit(1)
if not cat:
cat = "Uncategorized"
if date != "now":
now = date
if not date:
now = time.strftime("%d %B %y -- %X")
if not content.strip('\n'):
print("Content can't be empty")
sys.exit(1)
link_from_title = title_show.group(1).lower().replace(" ", "-")
file_to = '%s.html' % link_from_title
with open(file_to, 'a') as the_file:
the_file.write("<html>\n\t")
the_file.write("<head>\n\t\t")
the_file.write("<meta charset='utf8' />\n\t\t")
the_file.write("<title>%s</title>\n\t" % title)
the_file.write("</head>\n\t")
the_file.write("<body>\n\t\t")
the_file.write("<h1>%s</h1>\n\t\t" % title)
the_file.write("<span>%s</span>\n\t\t" % desc)
the_file.write("<p>%s</p>\n\t\t" % cat)
the_file.write("<abbr title='{0}'>{0}</abbr>\n\t\t".format(now))
the_file.write("\n\t\t<blockquote>\n\t\t\t\t%s\n\t\t</blockquote>\n\t" % content)
the_file.write("</body>\n")
the_file.write("</html>\n")
print("The", file_to, "file is created...")
Bu da ilk-yazi-bu.df dosyası:
[title=Oldu Tamam]
[description=Bu Bir Açıklama]
[category=Python]
[date=25 Kasım 2015 Saat 01:54]
-vvvvvtest
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean in nibh eu risus finibus consectetur imperdiet nec lectus. Donec in interdum libero, non pretium orci. Ut pulvinar ante sit amet nibh auctor, id eleifend neque fringilla. Interdum et malesuada fames ac ante ipsum primis in faucibus. Cras varius leo nunc, vel tincidunt tortor sollicitudin congue. Nulla pretium sed elit at lacinia. Phasellus nunc quam, commodo at elit non, bibendum porttitor libero. In ipsum tellus, viverra at tellus eget, pellentesque semper est.
Mauris semper faucibus neque, vitae elementum diam vehicula et. Duis rhoncus interdum est sed ultrices. Nulla non sollicitudin dolor. Nam efficitur, augue vel varius hendrerit, mauris orci hendrerit nunc, et auctor metus leo nec justo. Quisque auctor nunc magna, eu dapibus erat vestibulum non. Praesent suscipit odio at tincidunt eleifend. Fusce vel nulla rutrum, vulputate purus vitae, blandit leo. In sapien diam, blandit in ultricies nec, tempus accumsan nisl. Nulla laoreet fermentum feugiat. Aliquam a est vel tortor efficitur pretium. Donec ultricies vulputate diam, sagittis pellentesque arcu suscipit ut.
Donec faucibus viverra ligula, sed pellentesque ante luctus quis. Proin auctor tortor id gravida fringilla. Duis auctor metus eu consequat scelerisque. Pellentesque ipsum nibh, sollicitudin quis nisi ac, tincidunt sollicitudin lectus. Ut ultrices justo eu pretium convallis. Quisque urna lorem, vestibulum a tellus ut, aliquet volutpat dui. Nulla sapien nisi, rutrum in augue a, semper dapibus dolor. Nulla ut orci diam. Vestibulum iaculis gravida nisl, quis luctus mi varius sed. Quisque justo risus, fermentum et posuere eget, porttitor eget risus. In rhoncus vestibulum tempor. Fusce tellus velit, commodo eget libero eu, sagittis faucibus enim. Donec eget rhoncus justo.
Vivamus congue vulputate gravida. Suspendisse viverra condimentum nisi, id ornare felis malesuada vitae. Fusce vestibulum justo erat, eget congue nunc congue id. Etiam ultrices felis non viverra venenatis. Phasellus urna lectus, porttitor sed massa in, fermentum lacinia velit. Nam erat justo, mollis eget nunc eu, cursus fringilla ante. Phasellus tincidunt lacinia iaculis. Aenean sit amet scelerisque sapien. In et porta odio.
Proin pharetra urna lectus, et accumsan justo luctus sed. Cras ac interdum arcu, a commodo felis. Fusce sed semper neque, in egestas est. Pellentesque sed lorem non odio facilisis mattis. Nulla velit eros, luctus quis nisi non, facilisis mattis turpis. Nullam tristique aliquam libero, sed eleifend quam porta quis. Proin ac diam varius, sollicitudin nibh vel, mollis purus. Nulla facilisi. Phasellus scelerisque arcu ipsum, a molestie tellus porttitor ut. Integer maximus tortor fringilla nibh elementum, eu efficitur odio egestas.
^^^^^
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]