[TxMt] Wrap selection as link with title
Jasper van der Meulen
jasper at logt.nu
Mon Nov 13 00:46:15 UTC 2006
The version from textmate itself was just i little bit too basic.
Here's my simplified version...
<a href="${1:`
# if the clipboard contains a single line, let’s use that
export __CF_USER_TEXT_ENCODING=$UID:0x8000100:0x8000100
if [[ $(pbpaste|wc -l) -eq 0 ]]
then pbpaste|perl -pe 's/&(?!([a-zA-Z0-9]+|#[0-9]+|#x[0-9a-fA-
F]+);)/&/g'
else echo http://site.com/
fi
`}" ${2:target="${3:_blank}"} ${4:title="${5:${TM_SELECTED_TEXT:Link
text...}}"}>${6:${TM_SELECTED_TEXT:Link text...}}</a>$0
For sure their can be made some changes .. so i'll listen carefully :-)
Regards J.
On 22-okt-2006, at 18:12, Brett Terpstra wrote:
> I'll try curl. I already tried a whole slew of net:http header
> checks and they all gave me that same error. The weird thing is
> that if I paste the script into an edit window and hit CTRL-R, it
> runs fine... just won't run as a command.
>
> Thanks,
> Brett
>
> On Oct 22, 2006, at 11:07 AM, Reprisal wrote:
>
>> Probably use net::http to grab the page, and use the response
>> codes to fail gracefully. Otherwise test for a valid response
>> using curl before calling open?
>>
>> On Oct 22, 2006, at 11:00 AM, Brett Terpstra wrote:
>>
>>> Hi everybody.
>>>
>>> As some of you may have figured out, I work a lot in HTML and CSS
>>> and I have a fetish for descriptive titles on links. I've been
>>> rewriting the wrap selection as link command and have it all
>>> worked out to grab the title of the link in the clipboard if it
>>> starts with http(s). I can't get it to validate the link, though.
>>>
>>> Here's the text of the command:
>>>
>>> #!/usr/bin/env ruby
>>> require "#{ENV['TM_SUPPORT_PATH']}/lib/progress.rb"
>>> require 'open-uri'
>>> link = "http://site.com"
>>> title = #{ENV['TM_SELECTED_TEXT']}
>>> s = IO.popen('pbpaste', 'r+').read
>>> if s.match(/(http(s?):\/\/)/) then
>>> TextMate.call_with_progress(:title => "Opening Link", :message =>
>>> "Retrieving Title for #{s}") do
>>> begin
>>> fp = open(s)
>>> title = fp.read.match(/<title>([^<>]*)<\/title>/i).to_a
>>> [1].strip
>>> link = s
>>> rescue
>>> title = "site unreachable"
>>> end
>>> end
>>> end
>>> print %{<a href="${1:#{link}}" title="${2:#{title}}" >
>>> $TM_SELECTED_TEXT</a>}
>>>
>>> I've tried all kinds of overly complex methods that all yield the
>>> same results when the link is bogus:
>>>
>>> /usr/lib/ruby/1.8/timeout.rb:42:in /bin/bash: -c: line 1:
>>> unexpected EOF while looking for matching `''
>>> /bin/bash: -c: line 3: syntax error: unexpected end of fileconnect'
>>> from /usr/lib/ruby/1.8/net/protocol.rb:64:in /bin/bash: -c: line
>>> 1: unexpected EOF while looking for matching `''
>>> /bin/bash: -c: line 3: syntax error: unexpected end of fileopen'
>>> from /usr/lib/ruby/1.8/net/http.rb:430:in /bin/bash: -c: line 1:
>>> unexpected EOF while looking for matching `''
>>> /bin/bash: -c: line 3: syntax error: unexpected end of filestart'
>>> from /usr/lib/ruby/1.8/net/http.rb:324:in /bin/bash: -c: line 1:
>>> unexpected EOF while looking for matching `''
>>> /bin/bash: -c: line 3: syntax error: unexpected end of
>>> fileproxy_open'
>>> from /usr/lib/ruby/1.8/open-uri.rb:525:in /bin/bash: -c: line 1:
>>> unexpected EOF while looking for matching `''
>>> /bin/bash: -c: line 5: syntax error: unexpected end of filepopen'
>>> from /Users/brett/Library/Application Support/TextMate/Support/
>>> lib/progress.rb:11:in
>>> This is what I get (and should get, I think) when I run it from a
>>> Ruby dialog:
>>> <a href="${1:http://site.com}" title="${2:site unreachable}" >
>>> $TM_SELECTED_TEXT</a>
>>>
>>> It works great when the site in the clipboard is valid. Any
>>> suggestions would be appreciated.
>>>
>>> Thanks,
>>> Brett
>>>
>>>
>>> Brett Terpstra : Art Director
>>> Circle Six Design, Inc.
>>> 111 Riverfront Dr, Suite 204
>>>
>>>
>>>
>>>
>>> ____________________________________________________________________
>>> __
>>> For new threads USE THIS: textmate at lists.macromates.com
>>> (threading gets destroyed and the universe will collapse if you
>>> don't)
>>> http://lists.macromates.com/mailman/listinfo/textmate
>>
>>
>> _____________________________________________________________________
>> _
>> For new threads USE THIS: textmate at lists.macromates.com
>> (threading gets destroyed and the universe will collapse if you
>> don't)
>> http://lists.macromates.com/mailman/listinfo/textmate
>
>
> ______________________________________________________________________
> For new threads USE THIS: textmate at lists.macromates.com
> (threading gets destroyed and the universe will collapse if you don't)
> http://lists.macromates.com/mailman/listinfo/textmate
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macromates.com/textmate/attachments/20061113/e26a42cc/attachment.html>
More information about the textmate
mailing list