Hogyan lehet GitHub jelölési fájlt előállítani a Microsoft Wordből a TypeScript használatával

Mit? Miért akarna MD fájlt generálni egy Microsoft Word dokumentumból? Ha ez volt az első gondolat, miután elolvasta ezt a címet, akkor hadd mondjak egy erős felhasználási esetet.

Vizsgáljon meg egy olyan helyzetet, amikor a Git vagy bármely más verziókezelő rendszert (VCS) használja a projekt forrásaihoz, valamint annak műtermékeihez. Most, a legtöbb projekthez hasonlóan, úgy dönt, hogy a Microsoft szót használja a dokumentációhoz, és ellenőrzi azt a Git-ben. Ismét több csapattag szerkeszti ugyanazt a dokumentumot. Szerkesztés után bejelentkeznek a dokumentumba az adattárba.

Most Git képes lesz fenntartani a dokumentum előzményeit. Hogyan tudja megnézni azokat a módosításokat, amelyek a dokumentum legutóbbi bejelentkezése óta történtek? Igen, használhatja a Microsoft word pályaváltási módját, de nem rendetlen? Vagy az ég szerelmére, képes lesz-e használni a Git diff segédprogramot a különbségek gyors ellenőrzésére? Azt mondanám, nem.

Akkor mi a megoldás? Fel kellene hagynia a Microsoft Word dokumentációval történő használatát? Vagy váltson át más VCS-re?

Nem mondanám egyiket sem. Mit szólnál ahhoz, ha a dokumentációt Microsoft Word-ben tartanád? Ezután változtassa meg egy markdown (MD) fájlba (laikus szóhasználatban szöveges fájl) a készítés fázisában, és jelentkezzen be? Ha ez a megoldás izgat, folytassa az olvasást.

Mielőtt azonban rögtön áttérnék a konverzióra, hadd mondjam el, hogy mi is az a markdown fájl.

Mi az a jelölés vagy az MD fájl?

A Markdown egy szintaxis nyelv, amelynek célja a strukturált szöveg könnyű olvasása és írása. Továbbá könnyen megtanulható, és csak szövegszerkesztő szükséges a dokumentum létrehozásához.

Most a nyelv többféle megvalósítása létezik (például GFM, más néven Github ízű Markdown). Ezen megvalósítások mindegyikének megvannak a maga fejlesztései és tulajdonságai, amelyek nem feltétlenül kompatibilisek egymással.

Mindegyik megvalósítás különféle közös szolgáltatásokat támogat, mint például bekezdések, blokk idézetek, fejlécek és listák. Ez segít a szöveg strukturált fenntartásában, például a Microsoft Word-ben. De a belső bináris kódok helyett az MD fájlok egyszerű szöveges karaktereket használnak ezekhez a szolgáltatásokhoz. Így az MD fájl szövegfájl, de nem bináris fájl, mint egy docx fájl.

Például a GitHub markdown ízében itt találjuk a szöveges formában történő megjelenítésük különféle jellemzőit és módjait a word dokumentumhoz képest.

Az MD fájlok részletes előnyeiről a Word dokumentumokkal szemben hivatkozhat erre a cikkre is.

RENDBEN! Meg vagyok győzve. Mutasd meg a kódot.

Jogi nyilatkozat: Ezt a projektet a TypeScript forráskód ihlette. Böngészés közben megtaláltam ezt az ötletet, hogy egy Word dokumentumot MD fájlokká alakítsak. A forráskódját itt tekintheti meg.

Az egyszerűség kedvéért eltávolítottam néhány kódrészt a tárból. Az eredeti kód a TypeScript specifikációs dokumentáció MD fájlokká való átalakítását jelentette. Ez a fájl rengeteg testreszabott stílust tartalmaz. Tehát, ha elkészült ezzel a cikkel, nagyon sokat át tud menni a TypeScript átalakító kódon, és értékelheti, hogy képes-e bonyolultabb konverziók végrehajtására.

A cikkben említett teljes kódra itt hivatkozhatunk. A teljes kód 3 szakaszra osztható:

  1. Gulp konfigurációk.
  2. CScript végrehajtás.
  3. A TypeScript fő funkciója

Ahogy korábban említettük, a Word dokumentumot konvertálhatja MD fájlba a készítés fázisában. Ezt bármelyik feladat futó megteheti. Itt a zabálást választottam.

A Gulp konfigurációkban 3 feladatot definiáltam. Az első az, hogy megtisztítsuk a build könyvtárat, ami elég szabványos. A második a TypeScript kód fordítása. Az utolsó a CScript meghívása a JavaScript futtatásához.

Mi az a CScript?

A CScript.exe (a C: \ Windows \ System32 fájlban található) egy konzol alapú futtatható fájl a parancsfájlok futtatásához használt parancsfájlok számára. Értelmezni tudja a szkript nyelveket, mint például a VB Script vagy a JavaScript. Hasonlóképpen van nálunk WScript, de a Windows alkalmazásokhoz használják. Ebben a konzol nincs csatlakoztatva. Tehát, ha igénye van egy konzol alapú alkalmazás létrehozására, használhatjuk a CScript-et.

Most a projektünkben a CScript fő feladata, hogy futási környezetet biztosítson a szkriptünknek, azaz a JavaScript-nek. Most biztosan gondolkodik, miért nem a CScript helyett csomópontot használtam a JavaScript futtatásához.

Mindkettő futási környezetet biztosít a JavaScript számára. A CScript rejlő támogatást nyújt a Windows komponens objektum modell technikához. Tehát, ha megpróbálja futtatni ezt a szkriptet a Node-on keresztül, akkor kap egy ilyen hibát.

var fileStream = new ActiveXObject (“ADODB.Stream”); ReferenceError: Az ActiveXObject nincs meghatározva

Mi az a komponens objektum modell technika?

Az összetevő objektum modell a Microsoft által kifejlesztett technológia. Ez nem nyelv, hanem bináris szabvány. A definíció szerint

A Microsoft Component Object Model (COM) egy platformfüggetlen, elosztott, objektum-orientált rendszer interaktív bináris szoftver-összetevők létrehozására. A COM a Microsoft OLE (összetett dokumentumok), ActiveX (internet-kompatibilis komponensek) és más alapjainak technológiája.

A laikusok szempontjából a COM objektumok a különböző futásidejű objektumok interfészei. (Éppen ezért a definíciónak van egy „bináris szoftver-összetevők” nevű kifejezése). Ez nem egy nyelv, hanem egy technika, amely programozási nyelv agnosztikát alkalmaz.

A COM egyetlen nyelvi követelménye, hogy a kódot olyan nyelven állítsák elő, amely mutatószerkezeteket hozhat létre. Vagy kifejezetten, vagy implicit módon hívja meg a funkciókat mutatókon keresztül. Az olyan objektum-orientált nyelvek, mint a C ++ és a Smalltalk, olyan programozási mechanizmusokat kínálnak, amelyek leegyszerűsítik a COM-objektumok megvalósítását

Ezt követően bármilyen más nyelvet használhatunk, például Java, VB vagy JavaScript, hogy interakcióba lépjünk azokkal a COM objektumokkal. Ez további hozzáférést biztosít számunkra a futásidejű alkalmazásokhoz. Esetünkben a Microsoft szóalkalmazásokhoz.

Tehát azt akarja mondani, hogy itt egyáltalán nem használhatjuk a Node-ot?

Nem, ez nem igaz. Használhatjuk a Node-ot is a CScript helyett. De a COM támogatásához telepítenünk kell egy másik Win32com nevű csomagot a COM támogatásához. Részletek itt találhatók.

Végső kód

A szóalkalmazással való interakció érdekében különféle API-kat használtak. És mivel a COM objektum modellt használjuk, utaltam az objektum modell szóra.

A Word több száz olyan objektumot kínál, amelyekkel kölcsönhatásba léphet. Ezek az objektumok a felhasználói felületet szorosan követő hierarchiába vannak rendezve. A hierarchia tetején található az Application objektum. Ez az objektum a Word aktuális példányát reprezentálja. Az Application objektum tartalmazza a Document, Selection, Bookmark és Range objektumokat. Ezen objektumok mindegyikének számos módszere és tulajdonsága van, amelyekhez hozzáférhet az objektum manipulálásához és interakcióhoz.

Most a szkriptünkben először létrehoztunk egy szóalkalmazás-objektumot az ActiveXObject használatával. Az alkalmazásobjektum megszerzése után a dokumentumobjektum a dokumentum nevének átadásával jön létre (a cscript hívás parancssori argumentumaiból származik).

Ez a tényleges dokumentum aktív objektumát jelenti. Ez az objektum képes a Word dokumentum elemzésére és manipulálására. Felhasználási esetünkben azonban csak elemeznünk kell a dokumentumot, és szöveges fájlt kell írnunk.

Ez a kód nagyon általános, amelyet arra használnak, hogy egy Word dokumentum alapvető jellemzőit, például kereszthivatkozásokat, listákat, indexes szövegeket, félkövér és dőlt karaktereket stb. Konvertálják GFM formátumba. Azonban megírhatja saját kódját, és átalakíthatja a Word dokumentum testreszabott stílusait a kívánt formátumba.

A tényleges gépírási kódot itt találja. A kód elég könnyen olvasható. Az alábbiakban bemutatjuk néhány főbb jellemzőjét:

  1. Először egy dokumentumobjektumot adunk át a convertDocumentToMarkdown függvénynek, amely visszaadja az MD fájlba írandó szöveget.
  2. Ezenkívül az convertDocumentToMarkdown fájlban a dokumentumobjektum metódusait és tulajdonságait hívják meg, hogy megtalálják és helyettesítsék a releváns szófunkciókat a megfelelő GFM nyelvszintaxissal. Pl. Először az indexeket, a félkövér és dőlt szöveget keressük. Ezt követően a szöveget GFM-specifikus kód váltja fel. És végül a szóstílusok eltávolításra kerülnek. Mindez itt történik.
  3. Ezt követően a kereszthivatkozások helyébe lépnek. Ez azonban trükkös. Először a toggleShowCodes függvényt hívják meg. Ennek hasonló hatása van, mint az alt + F9-re egy word dokumentumban. Ez a dokumentum összes kereszthivatkozását a kóddal helyettesíti. Ezután a find and cserélje metódust hívják meg, hogy megtalálják és kicseréljék az összes kereszthivatkozást GFM stílusra. Itt a „19 REF” argumentumként kerül átadásra egy függvényhez. Ez egy általános keresési kritérium az összes kereszthivatkozás megkeresésére egy Word dokumentumban. Végül kicserélés után ismét a toggleShowCodes függvény hívódik meg, hogy visszahozza a dokumentumot az eredeti formájába.
  4. Végül meghívjuk a writeDocument függvényt, amely elvégzi a fő feladatot. Ez bekezdésenként olvassa el a dokumentumot, majd a váltó- és kisbetűk használatával megkeresi a bekezdések stílusát (például ha ez egy címsor vagy egy táblázat, vagy egy listabekezdés vagy kép). Most, a megtalált stílustól függően, a kívánt szöveget beírja az MD fájlba.

Egy-két szó a képek beágyazásáról : Képek beágyazása MD fájlba kissé bonyolult.

Először el kell tárolnia a képeket a git tárában. Ezután a linket meg kell adni az MD fájlban, hogy beágyazhassa. A szintaxis a következő: [alt text] (elérési út / a / tárban / image1.jpg).

Most, hogy automatikusan létrehozhassuk ezt a linket egy képhez, miközben a szót MD fájlba konvertáljuk, rejtett szöveg jön létre (közvetlenül a kép után szóköz nélkül), amelynek tartalma maga a link. Ezután a kódban ezt a rejtett szöveget lecsupaszítják és beillesztik az MD fájlba.

Most nagyon fárasztónak találhatja a tényleges kódot mindezek elvégzéséhez, de mindez megegyezik a Word alkalmazás által kitett API-val. Tehát ne aggódjon emiatt. Mindenképpen hivatkozhat a kódomra vagy a TypeScript eredeti kódjára. Mindkettő jó kezdő lesz a következő projektedhez.

Ó várj!! Ez az. A végéig sikerült? Hát akkor ? Gratulálunk! ? És, ha tetszett ez a cikk, kérem, nyomja meg ezt a tapsot? gombra. Sokat jelentene számomra, és más embereket is segít meglátni a történetben. Egészségére! ?