顯示廣告
隱藏 ✕
※ 本文為 cuteman0725 轉寄自 ptt.cc 更新時間: 2012-02-29 12:42:51
看板 EZsoft
作者 mars90226 (火星人)
標題 Fw: [AHK-] [分享] ruby Text Edit Menu
時間 Sun Feb 26 13:02:45 2012


※ [本文轉錄自 EzHotKey 看板 #1FIRocUF ]

看板 EzHotKey
作者 mars90226 (火星人)
標題 [AHK-] [分享] ruby Text Edit Menu
時間 Sun Feb 26 13:01:24 2012


是這樣的,不久之前我看到了這個

http://www.animal-software.com/dolphin-text-editor-menu.php
Dolphin Text Editor Menu (Animal Software)
Add extra formatting/sorting to any text editor (e.g. Notepad, Word, Visual Studio, etc). Free Download. ...
 

這個小軟體感覺很有趣,可是有些地方使用上不太方便

所以我決定結合一下我學的ruby

想要做出類似功能,但是可以輸入ruby script來做文字改變

於是就誕生出這個"ruby Text Edit Menu"了~


由於我是第一次接觸autoHotkey,有些地方可能看起來很醜,請見諒~

//其實是查了很久以後才決定要用autoHotkey做的XD

//畢竟用程式語言監測hotkey還蠻難的

程式分成兩部分: ahk檔 和 rb檔

----------
  ahk檔
----------

#SingleInstance, force
#Persistent
Menu, func, add, line, lineHandler
Menu, func, add, lines, linesHandler
Gui, line:New
Gui, line:Add, Text,, line
Gui, line:Add, Edit, vlineCmd -WantReturn
Gui, line:Add, Button, Default glineButton, OK
Gui, lines:New
Gui, lines:Add, Text,, lines
Gui, lines:Add, Edit, vlinesCmd -WantReturn
Gui, lines:Add, Button, Default glinesButton, OK
Name = rubyTextEditMenu
return

!a::
Menu, func, show
return

lineHandler:
Copy()
Gui, line:Show
return

linesHandler:
Copy()
Gui, lines:Show
return

lineButton:
Gui, line:Submit
GuiControl,, lineCmd,
Gui, line:Cancel
ReplaceLineBreak()
RunWait, %comspec% /c ""ruby" "%A_WorkingDir%\%Name%.rb" "n" "%clipboard%"
"%lineCmd%" > "%A_WorkingDir%\%Name%Tmp.txt" 2>
"%A_WorkingDir%\%Name%Error.txt""
Paste()
return

linesButton:
Gui, lines:Submit
GuiControl,, linesCmd,
Gui, lines:Cancel
ReplaceLineBreak()
RunWait, %comspec% /c ""ruby" "%A_WorkingDir%\%Name%.rb" "y" "%clipboard%"
"%linesCmd%" > "%A_WorkingDir%\%Name%Tmp.txt" 2>
"%A_WorkingDir%\%Name%Error.txt""
Paste()
return

Copy()
{
        clipboard =
        SendInput ^c
        ClipWait
}

Paste()
{
        global Name
        FileRead clipboard, %Name%Tmp.txt
        ClipWait
        SendInput ^v
}

ReplaceLineBreak()
{
        StringReplace clipboard, clipboard, rn, \n, All
}

----------
   rb檔
----------

def lineEval(str, evalString)
        str.gsub!('\\n', "\n")
        print eval evalString
end

def linesEval(strs, evalString)
        strs = strs.split '\\n'
        strs.each do |str|
                print eval evalString
                puts "" unless str == strs.last
        end
end

if __FILE__ == $0
        str, evalString = ARGV[1].dup, ARGV[2].dup
        if ARGV[0] == 'n'
                lineEval str, evalString
        elsif ARGV[0] == 'y'
                linesEval str, evalString
        else
                puts "Input Error, ARGV[0] == #{ARGV[0]}"
        end
end

----------

把這個檔案放在同個資料夾下應該就可以了~



使用方法如下:

選取想要的文字,按下alt+a鍵會跳出選單

選單有兩個選項:line,lines

line表示將整個選取的文字當成一個字串,用ruby script處理

lines表示ruby script會套用到選取到的每一行上


選下去後,會跳出視窗要輸入ruby script

script中的"str"即表示選取到的文字

例如: 選取了"test",在script中的"str"就是"test"

例如: 選取了"hello",script輸入"str + ' world'",按下確定以後

      "hello"就會被改成"hello world"

輸入的script不需要加雙引號! 然後字串請用單引號,想用雙引號請用%Q{}

這個我還不知道該怎麼辦,對autoHotkey不太熟


如果選了lines的話,每一行都會套用一次ruby script

例如: 選取了"I'm\nHe is",script輸入"str + ' human.'",按下確定

      結果會是"I'm human.\nHe is human."



大概就這樣子了,希望大家會覺得好用~

如果覺得alt+a不太順手的話,上方淺藍色的部分可以改成想要的hotkey

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.226.31.90

※ 發信站: 批踢踢實業坊(ptt.cc)
※ 轉錄者: mars90226 (125.226.31.90), 時間: 02/26/2012 13:02:45

--
※ 看板: P_qman 文章推薦值: 0 目前人氣: 0 累積人氣: 151 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇