''' Created on Jul 23, 2014 @author: Brett Paufler Copyright Brett Paufler Complete Refactor 9-8-15 Given a double line separated text file (in input directory) outputs HTML markup for img figcaption (to output directory and console display) EDIT FOR JOB SPECIFIC NEEDS IN: if __main__ == '__name__': ''' from os import listdir def caption(file_path_in, template='img', **kwargs): '''Converts a text file to html markup for sequential images. Two different layouts: figcaption img Numbers start at: digits = 1, 0 digits = 2, 00 digits = 3, 000 incrementing +1 per line in text file Blank lines in file separate tags. New lines get
inserted Given: **kwargs passed per default_datum = { 'div_class': 'div_one', 'fig_class': 'fig_one', 'img_class': 'img_one', 'name': 'base_name', 'number': 'not passed', 'digits': 2, 'extension': 'jpg', 'alt': ' : Line Effect or Some Such', 'text': ' -- per input file --'} Spits Out:
 : Line Effect or Some Such
I'm coming home


Or:

 : Line Effect or Some Such

I'm coming home div_clas='', fig_class='', img_class='', name='', number='', digits=2, extension='', alt='', text='', ):''' #Talk About a Hack: kwargs = {'kwargs': {**kwargs}} or a nested dictionary datum = kwargs['kwargs'] #Additional Template Types Can Be Added Here if template == 'img': template = ('

\n\n

{text}\n\n') elif template == 'fig': template = ('
\n
\n' + '\n
{text}\n
\n
\n
\n' + '
\n
\n\n\n') #Text preprocessing text_raw = open(file_path_in, 'r').read() text_list_in = text_raw.split('\n\n') text_list_in = [t.replace('\n', '
') for t in text_list_in] #Main Workhorse Engine text_out = '' for i, text_in in enumerate(text_list_in): datum['number'] = ('{:>0%d}' % datum['digits']).format(i) datum['text'] = text_in text_out += template.format(**datum) print text_out return text_out if __name__ == '__main__': #BULK of EDITING IN default_datum #Numbers start at 00 #digits 2 == 00, 01, 02, etc default_datum = { 'div_class': 'div_one', 'fig_class': 'fig_one', 'img_class': 'img_one', 'name': 'exodus', 'number': 'not passed', 'digits': 2, 'extension': 'jpg', 'alt': ' - Tals of the Nav - Revised Line Effect', 'text': ' -- per input file --'} dir_in = './input/' for text_file in listdir(dir_in): iN = dir_in + text_file sN = iN.replace('input', 'output') #template = 'fig' or 'img' should be all that needs editing here text_out = caption(file_path_in=iN, template='img', kwargs=default_datum) with open(sN, 'w') as f: f.write(text_out)