Δυναμική επισήμανση σύνταξης


Η δυναμική επισήμανση σύνταξης είναι η επισήμανση κώδικα που ο χρήστης μπορεί να αλλάξει. Υπάρχει μόνο ένα σημείο όπου συμβαίνει αυτό, και αυτό είναι ο online editor.

Note

Τα αποσπάσματα κώδικα, οι επαναλήψεις και τα παρόμοια είναι στατικά, αφού ο χρήστης δε μπορεί να αλλάξει τον κώδικά του επί τόπου. Αν θέλεις να μάθεις περισσότερα για το πώς χειριζόμαστε τη στατική επισήμανση σύνταξης, δες την τεκμηρίωση για τη στατική επισήμανση σύνταξης.

Υλοποίηση

Η δυναμική επισήμανση σύνταξης γίνεται με τη βιβλιοθήκη CodeMirror.

Όταν προσθέτεις υποστήριξη για τη γλώσσα σου, υπάρχουν τρεις επιλογές:

  1. Η γλώσσα υποστηρίζεται χωρίς πρόσθετα από το CodeMirror (δηλαδή αναφέρεται ως υποστηριζόμενη γλώσσα). Αν ισχύει αυτό, πήγαινε στην ενότητα Ενεργοποίηση γλώσσας.
  2. Η γλώσσα υποστηρίζεται μέσω ενός υπάρχοντος plugin του CodeMirror. Αν ισχύει αυτό, πήγαινε στην ενότητα Χρήση υπάρχοντος plugin.
  3. Η γλώσσα δεν υποστηρίζεται. Τώρα υπάρχουν τρεις επιλογές:
    1. Γράψε ένα plugin του CodeMirror από το μηδέν, όπως περιγράφεται στην ενότητα Δημιουργία νέου plugin.
    2. Η σύνταξη της γλώσσας σου μοιάζει (πολύ) με τη σύνταξη μιας άλλης γλώσσας (π.χ. η σύνταξη της Unison μοιάζει με της Haskell), οπότε θα μπορούσες να σκεφτείς να χρησιμοποιήσεις την επισήμανση σύνταξης εκείνης της γλώσσας για τη δική σου. Δες την ενότητα Ενεργοποίηση γλώσσας για περισσότερες πληροφορίες.
    3. Χωρίς δυναμική επισήμανση σύνταξης.

Ενεργοποίηση γλώσσας

Για να ενεργοποιήσεις την υποστήριξη του CodeMirror για τη γλώσσα σου, ξεκίνα ένα θέμα στο φόρουμ. Εμείς (το Exercism) θα δημιουργήσουμε τότε ένα Pull Request που ενεργοποιεί την υποστήριξη του CodeMirror για τη γλώσσα σου στον ιστότοπο.

Χρήση υπάρχοντος plugin

Για να χρησιμοποιήσεις ένα υπάρχον plugin, πρέπει να είναι δημοσιευμένο στο NPM.

Αν το plugin δεν είναι δημοσιευμένο στο NPM, μπορείς είτε:

  1. Να ρωτήσεις τον δημιουργό του plugin αν θέλει να το δημοσιεύσει στο NPM.
  2. Να κάνεις fork το αποθετήριο και να το δημοσιεύσεις μόνος σου.
  3. Να το κάνουμε fork εμείς (το Exercism) και να το δημοσιεύσουμε εμείς. Για να γίνει αυτό, άνοιξε ένα θέμα στο φόρουμ ζητώντας το.
Note

Η ιστοσελίδα του CodeMirror έχει μια λίστα με plugins γλωσσών φτιαγμένα από την κοινότητα.

Το επόμενο βήμα είναι να ενεργοποιήσεις τη γλώσσα.

Δημιουργία νέου plugin

Αυτά είναι τα βήματα για να ξεκινήσεις:

  1. Έλεγξε τη λίστα των αποθετηρίων μας για ένα υπάρχον codemirror-lang-... για να βεβαιωθείς ότι δεν υπάρχει ήδη κάποιο.
  2. Ξεκίνα ένα νέο θέμα στο φόρουμ του Exercism λέγοντάς μας για ποια γλώσσα θα ήθελες να δημιουργήσεις ένα plugin του CodeMirror.
  3. Μόλις δημιουργηθεί για σένα ένα αποθετήριο plugin του CodeMirror, υλοποίησε τη γραμματική για το track σου.
Note

Για να σε βοηθήσουμε να ξεκινήσεις, το αποθετήριο που δημιουργήθηκε για σένα περιέχει ένα ελάχιστο δείγμα γραμματικής πάνω στο οποίο μπορείς να χτίσεις και να το πειράξεις.

Έχουμε μια απίστευτα φιλική και υποστηρικτική κοινότητα που θα χαρεί να σε βοηθήσει καθώς δουλεύεις πάνω σε αυτό! Αν κολλήσεις, ξεκίνα ένα νέο θέμα στο φόρουμ του Exercism ή δημιούργησε νέα issues στο exercism/exercism όπως χρειάζεται 🙂

Θα χρειαστεί επίσης να δημοσιεύσεις το plugin στο NPM. Το επόμενο βήμα είναι να ενεργοποιήσεις τη γλώσσα.

Χρήση άλλης γλώσσας

Η σύνταξη της γλώσσας σου μοιάζει (πολύ) με τη σύνταξη μιας άλλης γλώσσας, οπότε θα μπορούσες να σκεφτείς να χρησιμοποιήσεις την επισήμανση σύνταξης εκείνης της γλώσσας για τη δική σου. Για να το κάνεις, ρύθμισε το track χρησιμοποιώντας το plugin του CodeMirror της άλλης γλώσσας. Δες την ενότητα Ενεργοποίηση γλώσσας για περισσότερες πληροφορίες.