Пример #1
0
 def crear(self):
     """ Crear archivo md """
     # Elaborar contenido con la plantilla
     if self.plantilla is None:
         self.preparar_plantilla()
     ingredientes = self.metadatos()  # Entrega un diccionario
     ingredientes['content'] = self.contenido()
     cocinado = self.plantilla.render(**ingredientes)
     # Crear directorio
     destino_directorio_ruta = Path(
         str(self.config.salida_ruta) +
         cambiar_a_ruta_segura(self.relativo))
     destino_directorio_ruta.mkdir(parents=True, exist_ok=True)
     # Escribir archivo md
     nombre = cambiar_a_ruta_segura(self.ruta.parts[-1])
     destino_md_ruta = Path(destino_directorio_ruta, f'{nombre}.md')
     with open(destino_md_ruta, 'w') as puntero:
         puntero.write(cocinado)
     # Copiar imágenes
     imagenes_rutas = []
     for extension in self.config.imagenes_extensiones:
         imagenes_rutas.extend(list(self.ruta.glob(f'*.{extension}')))
     for imagen_ruta in imagenes_rutas:
         shutil.copyfile(imagen_ruta,
                         Path(destino_directorio_ruta, imagen_ruta.name))
     # Entregar línea para la terminal
     return str(destino_md_ruta)[len(str(self.config.salida_ruta)):]
Пример #2
0
 def metadatos(self):
     """ Metadatos entrega un diccionario si los tiene """
     # Primero a partir del nombre del archivo
     categoria = self.config.titulo
     nombre = self.ruta.parts[-1]
     creado, titulo = obtener_metadatos_del_nombre(
         nombre, self.config.fecha_por_defecto)
     modificado = creado
     slug = cambiar_a_identificador(
         self.relativo[1:]
     )  # Le quitamos el primer caracter que siempre es una diagonal
     url = cambiar_a_ruta_segura(self.relativo[1:] + '/')
     guardar_como = url + 'index.html'
     if self.oculto:
         estado = 'draft'
     else:
         estado = ''
     resumen = ''
     previa = ''
     etiquetas = ''
     # Segundo a partir de las líneas en el archivo md
     for seccion in self.secciones:
         metadatos = seccion.metadatos()
         if 'title' in metadatos:
             titulo = metadatos['title']
         if 'summary' in metadatos:
             resumen = metadatos['summary']
         if 'category' in metadatos:
             categoria = metadatos['category']
         if 'date' in metadatos:
             creado = modificado = metadatos['date']
         if 'modified' in metadatos:
             modificado = metadatos['modified']
         if 'status' in metadatos:
             estado = metadatos['status']
         if 'preview' in metadatos:
             previa = metadatos['preview']
         if 'tags' in metadatos:
             etiquetas = metadatos['tags']
     # Entregar
     return {
         'title': titulo,
         'slug': slug,
         'summary': resumen,
         'category': categoria,
         'tags': etiquetas,
         'url': url,
         'save_as': guardar_como,
         'date': creado,
         'modified': modificado,
         'status': estado,
         'preview': previa,
     }
Пример #3
0
 def crear(self):
     """ Crear """
     # Eliminar
     if self.config.eliminar_content_rama:
         destino_ruta = Path(str(self.config.salida_ruta) + cambiar_a_ruta_segura(self.relativo))
         if destino_ruta.exists():
             shutil.rmtree(destino_ruta)
     # Crear
     lineas = [super().crear()]
     if len(self.paginas) > 0:
         lineas += [pagina.crear() for pagina in self.paginas]
     # return('  ' * self.nivel + '\n'.join(lineas))
     return '  ' * self.nivel + 'Se crearon {} archivos con {}'.format(len(lineas), self.relativo)
Пример #4
0
 def alimentar(self):
     """ Alimentar """
     if self.ya_alimentado is False:
         vinculos = {}
         for directorio, nivel in self.rastrear_archivos_iniciales_md(
                 self.ruta, self.nivel + 1):
             etiqueta = directorio.parts[-1]
             relativo = cambiar_a_ruta_segura(
                 str(directorio)[len(str(self.ruta)) + 1:]) + '/'
             vinculos[etiqueta] = relativo
         # ¿Hay o no hay?
         if len(vinculos) > 0:
             self.vinculos = vinculos
         # Levantar bandera
         self.ya_alimentado = True
     # Entregar verdadero si hay
     return self.vinculos is not None
Пример #5
0
 def alimentar(self, base_ruta=None):
     """ Alimentar """
     if base_ruta is None:
         base_ruta = self.ruta.parent
     if self.ya_alimentado is False:
         posible_archivo_md_nombre = self.ruta.parts[-1]
         posible_archivo_md_ruta = Path(self.ruta,
                                        f'{posible_archivo_md_nombre}.md')
         if posible_archivo_md_ruta.exists(
         ) and posible_archivo_md_ruta.is_file():
             self.etiqueta = posible_archivo_md_nombre
             self.relativo = cambiar_a_ruta_segura(
                 str(self.ruta)[len(str(base_ruta)) + 1:]) + '/'
         # Levantar la bandera
         self.ya_alimentado = True
     # Entregar verdadero si hay
     return self.relativo is not None