Πώς να δημιουργήσετε ένα αρχείο υπογραφής GitHub από το Microsoft Word χρησιμοποιώντας TypeScript

Τι? Γιατί να θέλει κανείς να δημιουργήσει ένα αρχείο MD από ένα έγγραφο Microsoft word; Εάν αυτή ήταν η πρώτη σκέψη που είχατε μετά την ανάγνωση αυτού του τίτλου, επιτρέψτε μου να σας δώσω μια ισχυρή περίπτωση χρήσης.

Σκεφτείτε μια κατάσταση όπου χρησιμοποιείτε το Git ή οποιοδήποτε άλλο σύστημα ελέγχου έκδοσης (VCS) για τις πηγές του έργου σας, καθώς και για τα αντικείμενα του. Τώρα, όπως τα περισσότερα έργα, αποφασίζετε να χρησιμοποιήσετε τη λέξη Microsoft για τεκμηρίωση και να την ελέγξετε στο Git. Και πάλι, πολλά μέλη της ομάδας επεξεργάζονται το ίδιο έγγραφο. Μετά την επεξεργασία, κάνουν check-in στο αρχείο στο αποθετήριο.

Τώρα, το Git θα μπορεί να διατηρήσει το ιστορικό του εγγράφου σας. Πώς θα μπορείτε να δείτε τις αλλαγές που έγιναν στο έγγραφο από το τελευταίο check in; Ναι, μπορείτε να χρησιμοποιήσετε τη λειτουργία αλλαγής κομματιού της λέξης της Microsoft, αλλά δεν είναι βρώμικο; Ή για χάρη του παραδείσου, θα μπορείτε να χρησιμοποιήσετε το βοηθητικό πρόγραμμα Git diff για να ελέγξετε γρήγορα τις διαφορές; Θα έλεγα, όχι.

Τότε ποια είναι η λύση; Πρέπει να σταματήσετε να χρησιμοποιείτε το Microsoft Word για τεκμηρίωση; Ή θα πρέπει να μεταβείτε σε κάποιο άλλο VCS;

Δεν θα έλεγα ούτε. Τι λέτε για τη διατήρηση της τεκμηρίωσής σας στη λέξη Microsoft; Στη συνέχεια, αλλάξτε το σε αρχείο markdown (MD) (σε απλούς όρους, αρχείο κειμένου) κατά τη φάση κατασκευής και κάντε check in; Εάν αυτή η λύση σας ενθουσιάζει, συνεχίστε να διαβάζετε.

Αλλά προτού προχωρήσω στη μετατροπή, επιτρέψτε μου να σας πω πρώτα τι ακριβώς είναι ένα αρχείο υποβάθμισης.

Τι είναι το markdown ή ένα αρχείο MD;

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

Τώρα, υπάρχουν πολλές εφαρμογές της γλώσσας (όπως το GFM aka Github με γεύση Markdown). Κάθε μία από αυτές τις υλοποιήσεις έχει τις δικές της βελτιώσεις και δυνατότητες που δεν είναι απαραίτητα συμβατές μεταξύ τους.

Κάθε εφαρμογή υποστηρίζει διάφορα κοινά χαρακτηριστικά όπως παραγράφους, μπλοκ εισαγωγικά, επικεφαλίδες και λίστες. Αυτό βοηθά στη διατήρηση του κειμένου με δομημένο τρόπο όπως το Microsoft Word. Ωστόσο, αντί να χρησιμοποιούν εσωτερικούς δυαδικούς κωδικούς, τα αρχεία MD χρησιμοποιούν χαρακτήρες απλού κειμένου για αυτές τις δυνατότητες. Αυτό καθιστά ένα αρχείο MD ένα αρχείο κειμένου αλλά όχι ένα δυαδικό αρχείο όπως ένα αρχείο docx.

Για παράδειγμα, στη γεύση markdown του GitHub, εδώ είναι τα διάφορα χαρακτηριστικά και οι τρόποι αναπαραγωγής τους με τη μορφή κειμένου σε σύγκριση με ένα έγγραφο λέξης.

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

ΕΝΤΑΞΕΙ! Είμαι πεπεισμένος. Δείξε μου τον κωδικό.

Αποποίηση ευθυνών: Αυτό το έργο εμπνέεται από τον πηγαίο κώδικα TypeScript. Κατά την περιήγησή μου, βρήκα αυτήν την ιδέα της μετατροπής ενός εγγράφου λέξεων σε αρχείο MD. Μπορείτε να δείτε τον πηγαίο κώδικα εδώ.

Για απλότητα, έχω αφαιρέσει μερικές ενότητες κώδικα στο αποθετήριο μου. Ο αρχικός κώδικας προοριζόταν να μετατρέψει την τεκμηρίωση προδιαγραφών TypeScript σε αρχείο MD. Αυτό το αρχείο περιέχει πολλά προσαρμοσμένα στυλ. Έτσι, μόλις τελειώσετε με αυτό το άρθρο, μπορείτε να διαβάσετε τον κώδικα μετατροπέα TypeScript και να εκτιμήσετε τις ικανότητές του να εκτελεί πιο περίπλοκες μετατροπές.

Ο πλήρης κωδικός που αναφέρεται σε αυτό το άρθρο μπορεί να αναφερθεί εδώ. Ολόκληρος ο κωδικός μπορεί να χωριστεί σε 3 ενότητες:

  1. Διαμορφώσεις Gulp.
  2. Εκτέλεση σεναρίου.
  3. Κύρια λειτουργία TypeScript

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

Στις διαμορφώσεις Gulp, έχω ορίσει 3 εργασίες. Το πρώτο είναι να καθαρίσετε τον κατάλογο build που είναι αρκετά τυπικός. Δεύτερον είναι η μεταγλώττιση του κώδικα TypeScript. Και το τελευταίο είναι να καλέσετε το CScript για την εκτέλεση του JavaScript.

Τι είναι το CScript;

Το CScript.exe (υπάρχει στο C: \ Windows \ System32) είναι ένα εκτελέσιμο πρόγραμμα που βασίζεται στην κονσόλα για τον κεντρικό υπολογιστή δέσμης ενεργειών που χρησιμοποιείται για την εκτέλεση των σεναρίων. Μπορεί να ερμηνεύσει γλώσσες δέσμης ενεργειών όπως VB Script ή JavaScript. Παρομοίως, έχουμε WScript αλλά χρησιμοποιείται για εφαρμογές παραθύρων. Σε αυτό, η κονσόλα δεν είναι συνδεδεμένη. Έτσι, εάν έχετε την απαίτηση να δημιουργήσετε μια εφαρμογή που βασίζεται στην κονσόλα, μπορούμε να χρησιμοποιήσουμε CScript.

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

Και οι δύο παρέχουν ένα περιβάλλον χρόνου εκτέλεσης για ένα JavaScript. Το CScript παρέχει εγγενή υποστήριξη για την τεχνική του μοντέλου αντικειμένων των Windows. Έτσι, αν προσπαθήσετε να εκτελέσετε αυτό το σενάριο μέσω Node, θα λάβετε ένα σφάλμα σαν αυτό.

var fileStream = νέο ActiveXObject ("ADODB.Stream"); ​​ReferenceError: Το ActiveXObject δεν έχει οριστεί

Τώρα, ποια είναι η τεχνική ενός μοντέλου αντικειμένου;

Component Object Model είναι μια τεχνολογία που αναπτύχθηκε από τη Microsoft. Δεν είναι μια γλώσσα αλλά ένα δυαδικό πρότυπο. Σύμφωνα με τον ορισμό,

Το Microsoft Component Object Model (COM) είναι ένα ανεξάρτητο από πλατφόρμα, κατανεμημένο, αντικειμενοστρεφές σύστημα για τη δημιουργία δυαδικών στοιχείων λογισμικού που μπορούν να αλληλεπιδράσουν. Το COM είναι η βασική τεχνολογία για το OLE της Microsoft (σύνθετα έγγραφα), το ActiveX (στοιχεία με δυνατότητα Internet), καθώς και άλλα.

Σε απλούς όρους, τα αντικείμενα COM είναι διασυνδέσεις με τα διάφορα αντικείμενα χρόνου εκτέλεσης. (Αυτός είναι ο λόγος για τον οποίο ο ορισμός έχει έναν όρο που ονομάζεται «δυαδικά στοιχεία λογισμικού»). Δεν είναι μια γλώσσα, αλλά μια τεχνική που προγραμματίζει τη γλώσσα αγνωστικής.

Η μόνη απαίτηση γλώσσας για το COM είναι ότι ο κώδικας δημιουργείται σε μια γλώσσα που μπορεί να δημιουργήσει δομές δεικτών. Είτε ρητά είτε έμμεσα, καλέστε τις λειτουργίες μέσω δεικτών. Οι αντικειμενοστρεφείς γλώσσες όπως το C ++ και το Smalltalk παρέχουν μηχανισμούς προγραμματισμού που απλοποιούν την εφαρμογή αντικειμένων COM

Μετά από αυτό, μπορούμε να χρησιμοποιήσουμε οποιαδήποτε άλλη γλώσσα όπως Java, VB ή JavaScript για να αλληλεπιδράσουμε με αυτά τα αντικείμενα COM. Αυτό θα μας δώσει περαιτέρω πρόσβαση σε εφαρμογές χρόνου εκτέλεσης. Στην περίπτωσή μας, σε εφαρμογές λέξεων της Microsoft.

Λοιπόν, λέτε ότι δεν μπορούμε να χρησιμοποιήσουμε καθόλου τον κόμβο εδώ;

Όχι, αυτό δεν είναι αλήθεια. Μπορούμε επίσης να χρησιμοποιήσουμε τον κόμβο αντί για CScript. Αλλά για να υποστηρίξουμε το COM, θα χρειαστεί να εγκαταστήσουμε ένα άλλο πακέτο που ονομάζεται win32com για υποστήριξη COM. Λεπτομέρειες μπορείτε να βρείτε εδώ.

Τελικός κωδικός

Τώρα, για να αλληλεπιδράσετε με την εφαρμογή λέξεων, έχουν χρησιμοποιηθεί διάφορα API. Και αφού χρησιμοποιούμε το μοντέλο αντικειμένου COM, αναφέρθηκα στο μοντέλο αντικειμένου λέξεων.

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

Τώρα, στο σενάριό μας, δημιουργήσαμε πρώτα ένα αντικείμενο εφαρμογής λέξεων χρησιμοποιώντας το ActiveXObject. Μόλις ληφθεί το αντικείμενο της εφαρμογής, το αντικείμενο του εγγράφου δημιουργείται περνώντας το όνομα του εγγράφου (που λαμβάνεται από τα επιχειρήματα της γραμμής εντολών του cscript calling).

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

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

Μπορείτε να βρείτε τον πραγματικό κωδικό γραφής εδώ. Ο κωδικός είναι αρκετά ευανάγνωστος. Ακολουθούν μερικές σημαντικές στιγμές:

  1. Αρχικά, ένα αντικείμενο εγγράφου μεταβιβάζεται στη συνάρτηση convertDocumentToMarkdown που επιστρέφει το κείμενο που θα γραφτεί σε ένα αρχείο MD.
  2. Επιπλέον, στο convertDocumentToMarkdown, οι μέθοδοι και οι ιδιότητες του αντικειμένου εγγράφου καλούνται να βρουν και να αντικαταστήσουν σχετικές δυνατότητες λέξεων με την αντίστοιχη σύνταξη γλώσσας GFM. Πρώτα, αναζητούνται συνδρομητικά και έντονα και πλάγια κείμενα. Μετά από αυτό, το κείμενο αντικαθίσταται από τον ειδικό κώδικα GFM. Και τέλος, τα στυλ λέξεων αφαιρούνται. Όλα αυτά γίνονται εδώ.
  3. Μετά από αυτό, αντικαθίστανται παραπομπές. Ωστόσο, αυτό είναι δύσκολο. Αρχικά, καλείται η συνάρτηση toggleShowCodes. Αυτό έχει παρόμοιο αντίκτυπο με το alt + F9 σε ένα έγγραφο λέξεων. Αυτό αντικαθιστά όλες τις παραπομπές σε ένα έγγραφο με τον κωδικό. Μετά από αυτό, η μέθοδος εύρεσης και αντικατάστασης καλείται για εύρεση και αντικατάσταση όλων των παραπομπών με στυλ GFM. Εδώ, το "19 REF" μεταφέρεται ως επιχείρημα σε μια συνάρτηση. Αυτό είναι ένα τυπικό κριτήριο αναζήτησης για την εύρεση όλων των παραπομπών σε ένα έγγραφο λέξεων. Επιτέλους, μετά την αντικατάσταση, καλείται ξανά η συνάρτηση toggleShowCodes για να επαναφέρει το έγγραφο στην αρχική του μορφή.
  4. Επιτέλους, καλείται η συνάρτηση writeDocument που κάνει την κύρια εργασία. Διαβάζει την παράγραφο του εγγράφου κατά παράγραφο και στη συνέχεια, χρησιμοποιώντας τη θήκη εναλλαγής, αναζητά τα στυλ των παραγράφων (όπως εάν είναι μια επικεφαλίδα ή ένας πίνακας ή μια παράγραφος λίστας ή μια εικόνα). Τώρα, ανάλογα με το στυλ που βρέθηκε, το επιθυμητό κείμενο γράφεται στο αρχείο MD.

Μία ή δύο λέξεις για την ενσωμάτωση εικόνων: Η ενσωμάτωση εικόνων σε ένα αρχείο MD είναι λίγο δύσκολη.

Πρώτα, πρέπει να αποθηκεύσετε τις εικόνες στο αποθετήριο git. Στη συνέχεια, ο σύνδεσμος πρέπει να δοθεί στο αρχείο MD για ενσωμάτωση σε αυτό. Η σύνταξη είναι! [Alt text] (path / in / the / repository / image1.jpg).

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

Τώρα, μπορεί να βρείτε τον πραγματικό κώδικα για να κάνετε όλα αυτά τα πράγματα πολύ κουραστικό, αλλά αυτό είναι όλα σύμφωνα με το API που εκτίθεται από την εφαρμογή Word. Μην ανησυχείτε γι 'αυτό. Μπορείτε σίγουρα να αναφέρετε τον κωδικό μου ή τον αρχικό κωδικό του TypeScript. Και οι δύο θα είναι ένας καλός εκκινητής για το επόμενο έργο σας.

Αα περίμενε!! Αυτό είναι. Το καταφέρατε μέχρι το τέλος; Καλά τότε ? Συγχαρητήρια! ; Και, αν σας άρεσε αυτό το άρθρο, παρακαλώ πατήστε αυτό το χειροκρότημα; παρακάτω κουμπί. Θα σήμαινε πολλά για μένα και θα βοηθήσει άλλους ανθρώπους να δουν την ιστορία. Στην υγειά σας! ;