Bläddra i källkod

Use Jinja filter for fixing date

Matthias Vogelgesang 10 år sedan
förälder
incheckning
2a31f59545
2 ändrade filer med 13 tillägg och 25 borttagningar
  1. 11 23
      convert.py
  2. 2 2
      cv.tex.in

+ 11 - 23
convert.py

@@ -12,6 +12,15 @@ def is_valid_file(parser, arg):
         return arg
 
 
+def simpledate(date_string):
+    try:
+        d = datetime.datetime.strptime(date_string, '%Y-%M-%d')
+        return d.strftime('%M/%Y')
+    except ValueError:
+        # in case this is not a date, we return it verbatim
+        return date_string
+
+
 def create_template(args):
     env = jinja2.Environment(loader=jinja2.FileSystemLoader('.'))
     env.block_start_string = '((*'
@@ -20,31 +29,10 @@ def create_template(args):
     env.variable_end_string = ')))'
     env.comment_start_string = '((='
     env.comment_end_string = '=))'
+    env.filters['simpledate'] = simpledate
     return env.get_template(args.template)
 
 
-def fix_date(date_string):
-    try:
-        d = datetime.datetime.strptime(date_string, '%Y-%M-%d')
-        return d.strftime('%M/%Y')
-    except ValueError:
-        # in case this is not a date, we return it verbatim
-        return date_string
-
-
-def preprocess(data):
-    # TODO: fix date in locale-agnostic way
-    for stage in data['education']:
-        stage['startDate'] = fix_date(stage['startDate'])
-        stage['endDate'] = fix_date(stage['endDate'])
-
-    for work in data['work']:
-        work['startDate'] = fix_date(work['startDate'])
-        work['endDate'] = fix_date(work['endDate'])
-
-    return data
-
-
 def main():
     parser = argparse.ArgumentParser()
 
@@ -56,7 +44,7 @@ def main():
                         help="JSON resume", required=True)
 
     args = parser.parse_args()
-    data = preprocess(json.load(open(args.resume, 'r')))
+    data = json.load(open(args.resume, 'r'))
     template = create_template(args)
     result = template.render(resume=data).encode('utf-8')
     print(result)

+ 2 - 2
cv.tex.in

@@ -67,7 +67,7 @@
 
   \begin{cvsection}{Ausbildung}
     ((* for stage in resume.education *))
-    \cvperiod{((( stage.startDate )))--((( stage.endDate )))}{\emph{((( stage.studyType )))}, ((( stage.institution )))}
+    \cvperiod{((( stage.startDate|simpledate )))--((( stage.endDate|simpledate )))}{\emph{((( stage.studyType )))}, ((( stage.institution )))}
     ((* if stage.highlights *))
       \vspace{-1.8em}
       \begin{itemize}
@@ -81,7 +81,7 @@
 
   \begin{cvsection}{Berufserfahrung}
     ((* for work in resume.work *))
-    \cvperiod{((( work.startDate )))--((( work.endDate )))}{((( work.company)))}
+    \cvperiod{((( work.startDate|simpledate )))--((( work.endDate|simpledate )))}{((( work.company)))}
     \emph{((( work.position )))}
     \vspace{0.6em}
     ((* endfor *))