mirror of
				https://forge.chapril.org/tykayn/orgmode-to-gemini-blog
				synced 2025-10-09 17:02:45 +02:00 
			
		
		
		
	
		
			
	
	
		
			118 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			118 lines
		
	
	
	
		
			5.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | // JavaScript
 | |||
|  | 
 | |||
|  | "use strict"; | |||
|  | 
 | |||
|  | 
 | |||
|  | var oGrammalecteAPI = { | |||
|  |     // Thes script might be reloaded, don’t use const or let.
 | |||
|  | 
 | |||
|  |     // functions callable from within pages
 | |||
|  |     // to be sent to the content-cript via an event “GrammalecteCall”
 | |||
|  | 
 | |||
|  |     sVersion: "1.0", | |||
|  | 
 | |||
|  |     generateNodeId: function (xNode) { | |||
|  |         xNode.id = "grammalecte_generated_id_" + Date.now().toString(36) + "_" + this._random(0, 1000000).toString(10); | |||
|  |         console.log("[Grammalecte API] generated id:", xNode.id); | |||
|  |         return xNode.id; | |||
|  |     }, | |||
|  | 
 | |||
|  |     _random: function (nMin, nMax) { | |||
|  |         return Math.floor(Math.random() * (nMax - nMin + 1) + nMin); | |||
|  |     }, | |||
|  | 
 | |||
|  |     openPanelForNode: function (vNode) { | |||
|  |         //  Parameter: a HTML node or the identifier of a HTML node
 | |||
|  |         if (vNode instanceof HTMLElement) { | |||
|  |             let sNodeId = vNode.id || this.generateNodeId(vNode); | |||
|  |             let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: sNodeId}) }); | |||
|  |             document.dispatchEvent(xEvent); | |||
|  |         } | |||
|  |         else if (typeof(vNode) === "string" && document.getElementById(vNode)) { | |||
|  |             let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: vNode}) }); | |||
|  |             document.dispatchEvent(xEvent); | |||
|  |         } | |||
|  |         else { | |||
|  |             console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier."); | |||
|  |         } | |||
|  |     }, | |||
|  | 
 | |||
|  |     openPanelForText: function (sText, vNode=null) { | |||
|  |         //  Parameter: text to analyze, and optionaly a node to send results to.
 | |||
|  |         if (typeof(sText) === "string") { | |||
|  |             let sNodeId = ""; | |||
|  |             if (vNode instanceof HTMLElement) { | |||
|  |                 sNodeId = vNode.id || this.generateNodeId(vNode); | |||
|  |             } | |||
|  |             else if (typeof(vNode) === "string" && document.getElementById(vNode)) { | |||
|  |                 sNodeId = vNode; | |||
|  |             } | |||
|  |             else { | |||
|  |                 console.log("[Grammalecte API] No node identifier. No event, no result will be sent.") | |||
|  |             } | |||
|  |             let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForText", sText: sText, sNodeId: sNodeId}) }); | |||
|  |             document.dispatchEvent(xEvent); | |||
|  |         } else { | |||
|  |             console.log("[Grammalecte API] Error: parameter is not a text."); | |||
|  |         } | |||
|  |     }, | |||
|  | 
 | |||
|  |     parseNode: function (vNode) { | |||
|  |         /*  Parameter: a HTML node (with a identifier) or the identifier of a HTML node. | |||
|  |             The result will be sent as an event “GrammalecteResult” to the node. | |||
|  |         */ | |||
|  |         if (vNode instanceof HTMLElement) { | |||
|  |             let sNodeId = vNode.id || this.generateNodeId(vNode); | |||
|  |             let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: sNodeId}) }); | |||
|  |             document.dispatchEvent(xEvent); | |||
|  |         } | |||
|  |         else if (typeof(vNode) === "string" && document.getElementById(vNode)) { | |||
|  |             let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: vNode}) }); | |||
|  |             document.dispatchEvent(xEvent); | |||
|  |         } | |||
|  |         else { | |||
|  |             console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier."); | |||
|  |         } | |||
|  |     }, | |||
|  | 
 | |||
|  |     parseText: function (sText, vNode) { | |||
|  |         //  Parameter: text to analyze, and a node to send results to.
 | |||
|  |         if (typeof(sText) === "string") { | |||
|  |             if (vNode instanceof HTMLElement) { | |||
|  |                 let sNodeId = vNode.id || this.generateNodeId(vNode); | |||
|  |                 let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: sNodeId}) }); | |||
|  |                 document.dispatchEvent(xEvent); | |||
|  |             } | |||
|  |             else if (typeof(vNode) === "string" && document.getElementById(vNode)) { | |||
|  |                 let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: vNode}) }); | |||
|  |                 document.dispatchEvent(xEvent); | |||
|  |             } | |||
|  |             else { | |||
|  |                 console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier."); | |||
|  |             } | |||
|  |         } else { | |||
|  |             console.log("[Grammalecte API] Error: parameter is not a text."); | |||
|  |         } | |||
|  |     }, | |||
|  | 
 | |||
|  |     getSpellSuggestions: function (sWord, sDestination, sRequestId="") { | |||
|  |         /* parameters: | |||
|  |             - sWord (string) | |||
|  |             - sDestination: HTML identifier (string) -> the result will be sent as an event “GrammalecteResult” to destination node | |||
|  |             - sRequestId: custom identifier for the request (string) [default = ""] | |||
|  |         */ | |||
|  |         if (typeof(sWord) === "string"  &&  typeof(sDestination) === "string"  &&  typeof(sRequestId) === "string") { | |||
|  |             let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "getSpellSuggestions", sWord: sWord, sDestination: sDestination, sRequestId: sRequestId}) }); | |||
|  |             document.dispatchEvent(xEvent); | |||
|  |         } else { | |||
|  |             console.log("[Grammalecte API] Error: one or several parameters aren’t string."); | |||
|  |         } | |||
|  |     } | |||
|  | } | |||
|  | 
 | |||
|  | /* | |||
|  |     Tell to the webpage that the Grammalecte API is ready. | |||
|  | */ | |||
|  | document.dispatchEvent(new Event('GrammalecteLoaded')); | |||
|  | 
 |