Let's suppose I have a command written in Ruby, that is outputting to HTML in a new window.
Is there a way to create a link in the HTML output that, when clicked, will actually execute a Ruby function that I define in the command?
For example, something like:
def do_something(x) # do something with x end
puts "<a href="command:do_something(42)">Edit X</a>"
My end goal is to provide an interface for manipulating the current document; maybe the answer is to do the logic in JS within the HTML window, and then update the document from there, but I'm equally unsure of how to do that.
On 10 Oct 2019, at 20:49, Dru Kepple wrote:
Let's suppose I have a command written in Ruby, that is outputting to HTML in a new window.
Is there a way to create a link in the HTML output that, when clicked, will actually execute a Ruby function that I define in the command?
Not functions from your command, but you can have JavaScript call ruby scripts, so you would have to create an external script (in the `Support/` folder of the bundle) and then provide argument when calling this script, as to what function it should execute.
The documentation is rather sparse: https://macromates.com/textmate/manual/html-output#javascript-api
Basically you can do `<script>TextMate.system(«command»)</script>` in your HTML output to call `«command»`.
We have a few examples of this, for example ⌃H in a ruby file on a word will lookup documentation (`ri`) for that word, and there will be links in the output which calls `ri` again.
The script for this is here: https://github.com/textmate/ruby.tmbundle/blob/master/Support/bin/linked_ri....