#!/usr/bin/env python3 # -*-coding: utf-8-*- # Author : Christopher L # Blog : http://blog.chriscabin.com # GitHub : https://www.github.com/chrisleegit # File : asort.py # Date : 2016/08/22 11:12 # Version: 0.1 # Description: A very simple python script that can sort items alphabetically. from __future__ import print_function import os import shutil import re README_FILE = '../README_es-ES.md' TEMP_FILE = 'temp_es-ES.md' # only works for those items between BEGIN and END. BEGIN = '## Aplicaciones' END = '## Configurar' regex = re.compile(r"[^[]*\[([^]]*)\]") def main(): global README_FILE # make sure the script can find file: README.md README_FILE = os.path.abspath(README_FILE) if not os.path.exists(README_FILE): print('Error: archivo o directorio no existe: {}'.format(README_FILE)) exit(1) sort_enable = False items = list() print('cargando archivo: {}'.format(README_FILE)) # read file: README.md with open(README_FILE) as infile, open(TEMP_FILE, 'w') as outfile: # process each line for line in infile: if not sort_enable and BEGIN in line: sort_enable = True # if sort_enable and END in line: # sort_enable = False if sort_enable: # each item starts with a character '-' if line.startswith(('-')): line = line.strip() items.append(line) # When no more items, blank line or new header elif line == '\n': # when we meet the next header, we should stop adding new item to the list. for item in sorted(items, key=lambda x: regex.findall(x.upper())[len(regex.findall(x.upper()))-1]): # write the ordered list to the temporary file. print(item, file=outfile) items.clear() # remember to put the next header in the temporary file. print(line, end='', file=outfile) elif line.startswith('#'): sort_enable = False if END in line else True print(line, end='', file=outfile) else: print(line, end='', file=outfile) else: print(line, end='', file=outfile) print('reemplazar el archivo original: README_es-ES.md') shutil.move(TEMP_FILE, README_FILE) if __name__ == '__main__': main()