Рубрики
Без рубрики

Сделайте свой собственный конвертер Markown (с новыми функциями) – часть 1

Здравствуйте, D Это простое сообщение о том, как сделать свой собственный анализатор Markdown, в части 2 мы сделаем … Теги с программированием, Python, Markdown, Regex.

Здравствуйте; 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"{alt[0][0]}"
    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
# Google Logo

Увидимся в части 2

Пока: D.

Оригинал: “https://dev.to/knassar702/make-your-own-markdown-converter-with-new-features-part-1-1p95”