Здравствуйте; D Это простое сообщение о Как сделать свой собственный анализатор Markdown
В части 2 мы сделаем потрясающий парсер/особенности Markdown
Как работает соверенно у Markdown
Мы хорошо знаем простые вещи в этой части нашего поста (только основы, подготовка к второй части)
1- заголовок 2- включить изображения 3- Ссылки
Заголовок #
Вы можете добавить курс с большим шрифтом одним #
После повторения линии будет меньше по количеству #
- Преобразовать в HTML
Во-первых: получите первое слово в строке ( пространством
) и посчитайте #
и добавить счет #
в
Тег, например ### Привет
Это будет преобразовано в Привет
- Код
data = '### Hello' def geth(txt): c = txt.split(' ')[0].count('#') if c == 0 or c > 6: return txt else: v = f'{"".join(txt.split(" ")[1:])} ' return v results = geth(data) print(results)
Включить изображения/ссылки
Вы можете добавить изображения по Действительно [ALT TEXT] (ссылка на изображения)
- Преобразовать в HTML Получить содержимое
[]
и добавить его вAlt
Переменная вТег, то же самое с
()
Но добавьте его вSRC
Переменная, то же самое тины со ссылками, но вам нужно удалитьДействительно
до[]
К сожалению, разбирать это нам нужно Regex:)
Regex это страшно для многих программистов (например, я), потому что мы слишком лень, чтобы узнать это (или мы узнаем его, когда застрял с ним в нашем коде)
Здесь Regex мы будем использовать ! \ [[^ \]] * \] (. *?) \ s * ("(?:. * [^"]) ")? \ s * \)
- Код
import re def getlnk(txt): sub = '' r = re.search(r'\[[^\]]*\](.*?)\s*("(?:.*[^"])")?\s*\)',txt) if r: c = r.group() # get the content of [] name = re.findall(r'!\[(.*?)\](|. .)[(].*[)]',c) # get the content of () link = re.findall(r'[(].*[)]',c)[0] link = link.replace(link[0],'').replace(link[-1],'') # add the link and name sub += f'{name}' return sub # like getlnk function but with ! and Tag def getimg(txt): sub = '' r = re.search(r'!\[[^\]]*\](.*?)\s*("(?:.*[^"])")?\s*\)',txt) if r: c = r.group() alt = re.findall(r'!\[(.*?)\](|. .)[(].*[)]',c) link = re.findall(r'[(].*[)]',c)[0] link = link.replace(link[0],'').replace(link[-1],'') sub += f"" return sub print(getlnk('[Google](http://google.com)')) print(getimg('![Google Logo](https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/1280px-Google_2015_logo.svg.png)')) # Results # Google #
Увидимся в части 2
Пока: D.
Оригинал: “https://dev.to/knassar702/make-your-own-markdown-converter-with-new-features-part-1-1p95”