
# Introduction

In this file we will see how to create an filter extention for quarto using Lua.
A filter extention is a flexible and powerful tool for introducing new global behaviors and/or new markdown rendering behaviors. For example, you could create filters to implement output folding, an image carousel, or just about anything you can imagine!

# Creation

To create a extention we need to have an "_extensions" folder and in this folder we need to create a folder for each extention.
For each extention we need to have a file name "_extension.yml" to tell quarto the structure of this extention. Here is an exemple:
```yaml
title: Leandre Name Filter
author: Léandre
version: 1.0.0
quarto-required: ">=1.3.0"
contributes:
  filters:
    - leandre.lua
```
In this file we can see that it include a file in .lua and that where the logic of the extention will be coded.

So in resume we have this file structure
```bash
_extensions/
└── leandre-filter
    ├── _extension.yml
    └── leandre.lua
```

# Code Exemple

For this exemple we will talk about the file leandre.lua
```lua
function Str(el)
    if el.text:find("Leandre") then
        el.text = el.text:gsub("Leandre", "Léandre")
    end
    return el
end
```
What do this small code do is searching for the string "Leandre" and when it find it. It will replace it with the string "Léandre"

# More resources

In this link you can find more information about the diferent function that can be use in the extention.

[https://quarto.org/docs/extensions/lua.html](https://quarto.org/docs/extensions/lua.html)
 
 
[https://quarto.org/docs/extensions/lua-api.html](https://quarto.org/docs/extensions/lua-api.html)

More about filter
[https://quarto.org/docs/extensions/filters.html](https://quarto.org/docs/extensions/filters.html)

And other type of extension
[https://quarto.org/docs/extensions/creating.html#development](https://quarto.org/docs/extensions/creating.html#development)