예제 #1
0
 def _handle_pairs_of_parts_and_bodies(self):
   try:
     locales_to_bodies = {}
     locales_to_fields = {}
     locale = self.doc._locale_kwarg
     default_locale = None
     split_content = Format.split_front_matter(self.content)
     for part, body in utils.every_two(split_content):
       fields = utils.load_yaml(part, pod=self.doc.pod)
       if '$locale' in fields and '$locales' in fields:
         text = 'You must specify either $locale or $locales, not both.'
         raise BadFormatError(text)
       if '$locales' in fields:
         doc_locales = fields['$locales']
       else:
         doc_locales = [fields.get('$locale', default_locale)]
       for doc_locale in doc_locales:
         locales_to_fields[doc_locale] = fields
         locales_to_bodies[doc_locale] = body
     fields = locales_to_fields.get(default_locale)
     if locale in locales_to_fields:
       localized_fields = locales_to_fields[locale]
       if fields is None:
         fields = {}
       fields.update(localized_fields)
     default_body = locales_to_bodies.get(default_locale)
     self.body = locales_to_bodies.get(locale, default_body)
     self.body = self.body.strip() if self.body is not None else None
     self.fields = fields
   except (yaml.composer.ComposerError, yaml.scanner.ScannerError) as e:
     message = 'Error parsing {}: {}'.format(self.doc.pod_path, e)
     logging.exception(message)
     raise BadFormatError(message)
예제 #2
0
 def _handle_pairs_of_parts_and_bodies(self):
   locales_to_bodies = {}
   locales_to_fields = {}
   locale = str(self.doc.locale)
   default_locale = str(self.doc.default_locale)
   for part, body in utils.every_two(Format.split_front_matter(self.content)):
     fields = yaml.load(part)
     doc_locale = fields.get('$locale', default_locale)
     locales_to_fields[doc_locale] = fields
     locales_to_bodies[doc_locale] = body
   fields = locales_to_fields.get(default_locale)
   if locale in locales_to_fields:
     localized_fields = locales_to_fields[locale]
     if fields is None:
       fields = {}
     fields.update(localized_fields)
   self.body = locales_to_bodies.get(locale, locales_to_bodies.get(default_locale))
   self.body = self.body.strip() if self.body is not None else None
   self.fields = fields
예제 #3
0
 def _handle_pairs_of_parts_and_bodies(self):
   locales_to_bodies = {}
   locales_to_fields = {}
   locale = str(self.doc.locale)
   default_locale = str(self.doc.default_locale)
   for part, body in utils.every_two(Format.split_front_matter(self.content)):
     fields = yaml.load(part)
     doc_locale = fields.get('$locale', default_locale)
     locales_to_fields[doc_locale] = fields
     locales_to_bodies[doc_locale] = body
   fields = locales_to_fields.get(default_locale)
   if locale in locales_to_fields:
     localized_fields = locales_to_fields[locale]
     if fields is None:
       fields = {}
     fields.update(localized_fields)
   self.body = locales_to_bodies.get(locale, locales_to_bodies.get(default_locale))
   self.body = self.body.strip() if self.body is not None else None
   self.fields = fields
예제 #4
0
파일: formats.py 프로젝트: hookerz/grow
 def _iterate_content(self):
     pairs = utils.every_two(Format.split_front_matter(self.content))
     return [(part, body) for part, body in pairs]
예제 #5
0
파일: formats.py 프로젝트: kezlya/grow
 def _iterate_content(self):
     pairs = utils.every_two(Format.split_front_matter(self.content))
     return [(part, body) for part, body in pairs]