Skip to content

francosansone/markdown-to-html

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Parser Mardown a HTML

Trabajo final de la materia ALP de LCC

El proyecto consiste en un parser de un Markdown reducido a HTML.

Para el mismo se definió un DSL, usando básicamente deep embedding, dado que el trabajo es realizado por la función de ejecución, el tipo no es más que una representación de la estructura del códio Markdown.

Podemos Representar:

  • Headers
  • Listas desordenadas
  • Párrafos con letra normal, negrita e itálica.

El tipo que definimos es

type Markdown = [Block]

data Block = Header (Int, String)

       | List [String]

       | Paragraph [Text]

deriving Show
       
data Text = Bold String

      | Italic String

      | Normal String

deriving Show

Y una serie de funciones primitivas

parseHeader :: String -> Maybe Block

parseList :: [String] -> Block

parseParagraph :: [String] -> Block

parseBold :: String -> (Maybe Text, String)

parseItalic :: String -> (Maybe Text, String)

La función

parser :: [String] -> Markdown

se encarga de seleccionarlas y combinarlas oportunamente.

El tipo Mardown funciona como lenguaje intermedio. La conversión de un archivo markdown a nuestro tipo nos permitiría construir todo tipo de generadores, por ejemplo, HTML, Látex, etc.

Para compilar el mismo, corremos el script compile.sh, para correr el ejemplo en la carpeta sample, corremos el script run.sh. La salida estará en sample/sample.html. Corriendo parser input_file output_file podemos probar otros archivos.

Referencias usadas durante el desarrollo de este trabajo:

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published