From mailinglist@textmate.org Mon Oct 14 08:18:34 2019 From: Allan Odgaard To: textmate@lists.macromates.com Subject: [TxMt] Re: HTML Output of Command to Execute Ruby Function Date: Mon, 14 Oct 2019 10:18:34 +0200 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5222456894526277955==" --===============5222456894526277955== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit 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 `` 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.rb --===============5222456894526277955== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.htm" MIME-Version: 1.0 PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1U eXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sOyBjaGFyc2V0PXV0Zi04Ij4KPC9oZWFkPgo8Ym9keT4K PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6c2Fucy1zZXJpZiI+PGRpdiBzdHlsZT0id2hpdGUtc3Bh Y2U6bm9ybWFsIj4KPHAgZGlyPSJhdXRvIj5PbiAxMCBPY3QgMjAxOSwgYXQgMjA6NDksIERydSBL ZXBwbGUgd3JvdGU6PC9wPgoKPC9kaXY+CjxkaXYgc3R5bGU9IndoaXRlLXNwYWNlOm5vcm1hbCI+ PGJsb2NrcXVvdGUgc3R5bGU9ImJvcmRlci1sZWZ0OjJweCBzb2xpZCAjNzc3OyBjb2xvcjojNzc3 OyBtYXJnaW46MCAwIDVweDsgcGFkZGluZy1sZWZ0OjVweCI+PHAgZGlyPSJhdXRvIj5MZXQncyBz dXBwb3NlIEkgaGF2ZSBhIGNvbW1hbmQgd3JpdHRlbiBpbiBSdWJ5LCB0aGF0IGlzIG91dHB1dHRp bmcgdG8gSFRNTDxicj4KaW4gYSBuZXcgd2luZG93Ljxicj4KPGJyPgpJcyB0aGVyZSBhIHdheSB0 byBjcmVhdGUgYSBsaW5rIGluIHRoZSBIVE1MIG91dHB1dCB0aGF0LCB3aGVuIGNsaWNrZWQsIHdp bGw8YnI+CmFjdHVhbGx5IGV4ZWN1dGUgYSBSdWJ5IGZ1bmN0aW9uIHRoYXQgSSBkZWZpbmUgaW4g dGhlIGNvbW1hbmQ/PC9wPgo8L2Jsb2NrcXVvdGU+PC9kaXY+CjxkaXYgc3R5bGU9IndoaXRlLXNw YWNlOm5vcm1hbCI+Cgo8cCBkaXI9ImF1dG8iPk5vdCBmdW5jdGlvbnMgZnJvbSB5b3VyIGNvbW1h bmQsIGJ1dCB5b3UgY2FuIGhhdmUgSmF2YVNjcmlwdCBjYWxsIHJ1Ynkgc2NyaXB0cywgc28geW91 IHdvdWxkIGhhdmUgdG8gY3JlYXRlIGFuIGV4dGVybmFsIHNjcmlwdCAoaW4gdGhlIDxjb2RlIHN0 eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y3Rjc7IGJvcmRlci1yYWRpdXM6M3B4OyBtYXJnaW46 MDsgcGFkZGluZzowIDAuNGVtIiBiZ2NvbG9yPSIjRjdGN0Y3Ij5TdXBwb3J0LzwvY29kZT4gZm9s ZGVyIG9mIHRoZSBidW5kbGUpIGFuZCB0aGVuIHByb3ZpZGUgYXJndW1lbnQgd2hlbiBjYWxsaW5n IHRoaXMgc2NyaXB0LCBhcyB0byB3aGF0IGZ1bmN0aW9uIGl0IHNob3VsZCBleGVjdXRlLjwvcD4K CjxwIGRpcj0iYXV0byI+VGhlIGRvY3VtZW50YXRpb24gaXMgcmF0aGVyIHNwYXJzZTogPGEgaHJl Zj0iaHR0cHM6Ly9tYWNyb21hdGVzLmNvbS90ZXh0bWF0ZS9tYW51YWwvaHRtbC1vdXRwdXQjamF2 YXNjcmlwdC1hcGkiIHN0eWxlPSJjb2xvcjojMzk4M0M0Ij5odHRwczovL21hY3JvbWF0ZXMuY29t L3RleHRtYXRlL21hbnVhbC9odG1sLW91dHB1dCNqYXZhc2NyaXB0LWFwaTwvYT48L3A+Cgo8cCBk aXI9ImF1dG8iPkJhc2ljYWxseSB5b3UgY2FuIGRvIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kLWNv bG9yOiNGN0Y3Rjc7IGJvcmRlci1yYWRpdXM6M3B4OyBtYXJnaW46MDsgcGFkZGluZzowIDAuNGVt IiBiZ2NvbG9yPSIjRjdGN0Y3Ij4mbHQ7c2NyaXB0Jmd0O1RleHRNYXRlLnN5c3RlbSjCq2NvbW1h bmTCuykmbHQ7L3NjcmlwdCZndDs8L2NvZGU+IGluIHlvdXIgSFRNTCBvdXRwdXQgdG8gY2FsbCA8 Y29kZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRjdGN0Y3OyBib3JkZXItcmFkaXVzOjNweDsg bWFyZ2luOjA7IHBhZGRpbmc6MCAwLjRlbSIgYmdjb2xvcj0iI0Y3RjdGNyI+wqtjb21tYW5kwrs8 L2NvZGU+LjwvcD4KCjxwIGRpcj0iYXV0byI+V2UgaGF2ZSBhIGZldyBleGFtcGxlcyBvZiB0aGlz LCBmb3IgZXhhbXBsZSDijINIIGluIGEgcnVieSBmaWxlIG9uIGEgd29yZCB3aWxsIGxvb2t1cCBk b2N1bWVudGF0aW9uICg8Y29kZSBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojRjdGN0Y3OyBib3Jk ZXItcmFkaXVzOjNweDsgbWFyZ2luOjA7IHBhZGRpbmc6MCAwLjRlbSIgYmdjb2xvcj0iI0Y3RjdG NyI+cmk8L2NvZGU+KSBmb3IgdGhhdCB3b3JkLCBhbmQgdGhlcmUgd2lsbCBiZSBsaW5rcyBpbiB0 aGUgb3V0cHV0IHdoaWNoIGNhbGxzIDxjb2RlIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNGN0Y3 Rjc7IGJvcmRlci1yYWRpdXM6M3B4OyBtYXJnaW46MDsgcGFkZGluZzowIDAuNGVtIiBiZ2NvbG9y PSIjRjdGN0Y3Ij5yaTwvY29kZT4gYWdhaW4uPC9wPgoKPHAgZGlyPSJhdXRvIj5UaGUgc2NyaXB0 IGZvciB0aGlzIGlzIGhlcmU6IDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS90ZXh0bWF0ZS9y dWJ5LnRtYnVuZGxlL2Jsb2IvbWFzdGVyL1N1cHBvcnQvYmluL2xpbmtlZF9yaS5yYiIgc3R5bGU9 ImNvbG9yOiMzOTgzQzQiPmh0dHBzOi8vZ2l0aHViLmNvbS90ZXh0bWF0ZS9ydWJ5LnRtYnVuZGxl L2Jsb2IvbWFzdGVyL1N1cHBvcnQvYmluL2xpbmtlZF9yaS5yYjwvYT48L3A+CjwvZGl2Pgo8L2Rp dj4KPC9ib2R5Pgo8L2h0bWw+Cg== --===============5222456894526277955==--