Skip to content

Instantly share code, notes, and snippets.

@jussiry
Last active April 28, 2020 09:52
Show Gist options
  • Save jussiry/721b8cfd8f3a3bb98329906d92e0174f to your computer and use it in GitHub Desktop.
Save jussiry/721b8cfd8f3a3bb98329906d92e0174f to your computer and use it in GitHub Desktop.
#! js
// Peritään yleisiä kieli ominaisuuksia lang-moduulista
Object.setPrototypeOf(pod, :lang)
// Kääntäjä saa lähdekoodin ja käännettyään palauttaa javascript koodia
pod.compiler = (sourceString, moduleName) => {
// Kääntämisen lisäksi voidaan ajaa mitä vaan koodia,
// tässä tapauksissa muuttaa editorissa olevaa koodia
// (ensin varmistetaan että ollaa muokkaamassa ks. moduulia)
if (moduleName == :moduleGate.rootName) {
enhanceSourceCode()
}
// Palautetaan käännetty JS koodi:
return `edide.console.log('pod koodia ${sourceString.length} merkin edestä')`
}
function enhanceSourceCode() {
var { root } = :editorCm // 'root' on CodeMirror instanssi
var cursor = root.getCursor() // säilytetään kursorin paikka vaikka koodi muuttuu
var newCode = root.getValue()+' podpod' // uusi koodi
root.setValue(newCode) // asetetaan uusi koodi
root.setCursor(cursor) // palautetaan kursori
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment