DedSec Project

08. Δημιουργία περιεχομένων Markdown — DedSec Project

Εξαγωγή Markdown headings με αγνόηση code fences Προστέθηκε το αρχείο που έλειπε Το 08_markdown_headings.py υλοποιεί περιορισμένο scanner για ATX headings. Αναγνωρίζει levels 1 έως 6 με…

Εξαγωγή Markdown headings με αγνόηση code fences

Προστέθηκε το αρχείο που έλειπε

Το 08_markdown_headings.py υλοποιεί περιορισμένο scanner για ATX headings. Αναγνωρίζει levels 1 έως 6 με μέχρι τρία αρχικά κενά, αγνοεί headings σε fenced code, αφαιρεί τελικά διακοσμητικά hashes και δημιουργεί μοναδικά anchors για επαναλαμβανόμενους τίτλους. Τα ελληνικά Unicode γράμματα διατηρούνται. Δεν είναι πλήρης CommonMark parser ούτε μιμείται ακριβώς τα GitHub slugs.

Εκτέλεση

Τρέξε python 08_markdown_headings.py. Το fixture έχει δύο Intro headings, μία γραμμή code fence με # που δεν πρέπει να καταγραφεί, ελληνικό τίτλο και escaped #. Περιμένεις anchors intro, ελληνικά και intro-1. Ελέγχεται επίσης indented code line και προαιρετικό closing hash.

Απλούστερη υλοποίηση για μελέτη

import re
def simple_headings(text):
    result = []
    inside = False
    for line in text.splitlines():
        if line.startswith("~~~"):
            inside = not inside
            continue
        if not inside:
            match = re.match(r"^#{1,6}\s+(.+)$", line)
            if match:
                result.append(match.group(1))
    return result

Αυτό το μικρό fragment δείχνει το state ενός fence. Το πραγματικό script προσθέτει indentation, δύο τύπους fences, Unicode slugs, αριθμούς γραμμών και collision handling. Μη χρησιμοποιείς το απλό παράδειγμα ως πλήρη parser.

Δοκιμές επέκτασης

Πρόσθεσε fence τεσσάρων backticks που περιέχει γραμμή τριών, σύγκρινε GitHub anchors σε τίτλους με punctuation και αποφάσισε αν θα υποστηρίξεις Setext, inline links και HTML. Πρόσθεσε test για κάθε δυνατότητα. Η πλήρης CommonMark έχει περισσότερους κανόνες. Κώδικας: 08_markdown_headings.py. Πηγή: https://spec.commonmark.org/