成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

谷歌拼音輸入法擴展API開發指南

開發 前端
為了幫助開發者在谷歌拼音輸入法的基本輸入功能基礎上,開發和定義更豐富的擴展輸入功能,谷歌拼音輸入法提供了以Lua腳本編程語言為基礎的輸入法擴展API。利用輸入法擴展API,開發者可以編寫自定義的輸入功能,并將腳本分享給谷歌拼音輸入法的用戶安裝、使用。

新增功能

輸入法擴展API支持轉換器擴展,在用戶開啟轉換器時,可以對候選項做諸如裝飾、特效、變換等操作。

新增一組用于UNICODE編碼轉換的字符串實用函數。

入門

為了幫助開發者在谷歌拼音輸入法的基本輸入功能基礎上,開發和定義更豐富的擴展輸入功能,谷歌拼音輸入法提供了以Lua腳本編程語言為基礎的輸入法擴展API。利用輸入法擴展API,開發者可以編寫自定義的輸入功能,并將腳本分享給谷歌拼音輸入法的用戶安裝、使用。

一段簡單的Lua腳本程序就可以構成一個最基本的輸入法擴展模塊。下面是“Hello,World!”程序示例:

helloworld.lua

  1. function HelloWorld()  
  2. return "Hello,World!"  
  3. end  
  4. ime.register_command("hw", "HelloWorld", "test") 

這一段代碼由一個自定義的Lua函數和一行ime.register_command函數調用組成。自定義的Lua函數HelloWorld()簡單地返回一個Lua字符串"Hello,World!",這表明該輸入法擴展函數被調用后,顯示給最終用戶的候選項為"Hello,World!"。ime.register_command函數調用將自定義函數注冊為谷歌拼音輸入法的一個命令擴展。其中,第一個參數"hw"表示該命令擴展在i擴展模式中對應的命令是"hw",第二個參數表示該命令擴展對應的入口函數(自定義的Lua函數)是"HelloWorld",第三個參數是顯示在i擴展模式命令列表內的簡短說明文字。

使用任何文本編輯器輸入上述程序后,以helloworld.lua為文件名保存到安裝有谷歌拼音輸入法的計算機中。然后,打開谷歌拼音輸入法選項設置窗口,在"擴展"頁面中,點擊"安裝擴展包"按鈕,選擇保存在計算機內的helloworld.lua(也可以從Windows資源管理器,右鍵單擊helloworld.lua文件,選擇“安裝到谷歌拼音輸入法”)。安裝后,打開記事本程序,切換到谷歌拼音輸入法,鍵入"ihw",谷歌拼音輸入法的候選項窗口中將出現唯一候選項"Hello,World!"。

 

 

除了顯式用"ihw"這樣的命令來激活擴展函數以外,擴展函數還可以由用戶在使用拼音輸入法時輸入的特定內容或特定候選詞激活。例如,在上述helloworld.lua最后添加一行:

  1. ime.register_trigger("HelloWorld", "test", { "hello" }, {}) 

這一行的作用是將函數"HelloWorld"注冊為谷歌拼音輸入法的一個整合擴展。第一個參數是擴展對應的入口函數"HelloWorld",第二個參數是簡短說明文字,第三個參數給出希望將擴展關聯到哪個或哪幾個用戶輸入串(這里是字符串"hello"),第四個參數給出希望將擴展關聯到哪個或哪幾個特定的候選詞(這里是空表,表示不關聯)。

打開谷歌拼音輸入法選項設置窗口,在"擴展"頁面中,使用"移除擴展包"按鈕將剛才安裝的helloworld.lua刪除,然后重新安裝更新后的helloworld.lua。打開記事本程序,切換到谷歌拼音輸入法,鍵入"hello",谷歌拼音輸入法的候選項窗口中,除了出現通常的中文英文候選詞提示外,還將出現由整合擴展函數返回的候選項"Hello,World!"。

 

 

事實上,谷歌拼音輸入法提供的輸入法擴展API可以用來開發各種不同的輸入體驗,例如,根據用戶輸入的參數返回相應的信息內容,查表輸入特定的文字信息,完成自定義的甚至包含隨機變量的計算并以不同形式返回結果,將用戶剛剛輸入的文字內容轉換為另一種表現形式,等等。谷歌拼音輸入法提供的i模式的缺省功能,包括時間和日期格式轉換,查星座,擲骰子,打印字符等,都是一些最簡單的示例。

本指南的后續內容詳細介紹了開發輸入法擴展所需要的各種知識。我們也鼓勵開發者直接參考已有的示例程序。例如,i擴展模式的缺省功能是由安裝在以下位置的Lua腳本程序實現的:

XP: C:\Documents and Settings\All Users\Application Data\Google\Google Pinyin 2\Extensions\base.lua

Vista / Windows 7: C:\ProgramData\Google\Google Pinyin 2\Extensions\base.lua

三種不同的擴展方式

谷歌拼音輸入法擴展API提供了三種擴展拼音輸入法的方式:命令擴展、整合擴展與轉換器擴展。

命令擴展:將腳本程序中的某個入口函數關聯到一個兩字母長的自定義命令。當用戶先鍵入i然后鍵入該命令時,輸入法即激活該擴展函數,然后在候選項列表中顯示擴展函數返回的候選項結果。

命令擴展適用于那些用戶明確希望在特定場景下使用特定輸入功能,且候選項較多,或較復雜的情況。例如,用戶明確希望根據生日查詢并輸入星座信息等。

整合擴展:將腳本程序中的某個入口函數關聯到特定的鍵盤輸入串,或特定的中英文候選項。當用戶使用拼音輸入法時,一旦用戶通過鍵盤輸入的字符串與整合擴展關聯的特定字符串(可包含通配符)匹配,或拼音輸入法解析出的某個候選項與整合擴展關聯的特定字符串(可包含通配符)匹配,輸入法即激活該擴展函數,并將擴展函數返回的候選項結果插入到候選項列表中。

整合擴展適用于那些在不妨礙用戶正常輸入的情況下,根據當前輸入或候選內容,插入少數相關候選項的情況。例如,用戶在輸入中文“時間”的同時,也可能希望直接輸入當前時間,這時,整合擴展直接把擴展函數返回的當前時間整合至候選項列表中,就顯得比較方便了。

轉換器擴展:將腳本程序中的某個入口函數注冊為一個特定的轉換器。當用戶通過輸入法的用戶界面(如功能菜單)開啟該轉換器時,輸入法產生的每個候選項被依次當做參數送入該轉換器函數,進行運算后,函數返回的結果將會替換掉原候選項的內容,被輸入法顯示在相應位置。

轉換器擴展必須由用戶主動開啟。一旦開啟,就會應用于所有候選項。因此,轉換器擴展適用于為所有候選項增加裝飾、特效,或者對所有候選項按規則進行變換的情形。例如,為候選項或候選項的每個字增加星號修飾,直接在候選項的每個字后面輸出該字對應的Unicode編碼,將簡體漢字變為繁體漢字,等等。

下表對不同的擴展方式進行簡單的對比:

擴展方式 命令擴展 整合擴展 轉換器擴展
注冊方式 ime.register_command (...) ime.register_trigger (...) ime.register_converter (...)
適用范圍 用戶明確希望在特定場景下使用特定輸入功能,且候選項較多,或較復雜的情況 在不妨礙用戶正常輸入的情況下,根據當前輸入或候選內容,插入少數相關候選項的情況 為所有候選項增加裝飾、特效,或者對所有候選項按規則進行變換的情形
應用實例 根據輸入的生日查詢星座;列舉并輸入特定的字符畫 用戶輸入中文“時間”時,在候選項列表里插入當前時間;用戶輸入中文“哈哈”時,在候選項列表插入相應的表情符號 為候選項或候選項的每個字增加星號修飾;直接在候選項的每個字后面輸出該字對應的Unicode編碼;將簡體漢字變為繁體漢字
激活方式 用戶輸入i加2字符長的命令,激活相應的命令擴展 用戶輸入的拼音字符串或輸入法產生的某個候選項與整合擴展關聯的特定字符串(可包含通配符)匹配時,激活相應的整合擴展 用戶從輸入法的用戶界面(如功能菜單)開啟特定的轉換器,激活相應的轉換器擴展

#p#

注冊命令擴展

在Lua腳本中,向谷歌拼音輸入法注冊一個命令擴展的基本語法是:

  1. ime.register_command(command_name, lua_function_name, description, leading, help) 

ime是提供給Lua腳本使用的,與輸入法內核交互的專用模塊。register_command是向谷歌拼音輸入法注冊新的i擴展模式命令擴展所使用的函數。函數的各參數含義如下:

◆ command_name

2字符長的字符串,必須由兩個英文字母(a-z)組成。定義了要注冊的命令名字。如果新注冊的命令名稱和此前已經注冊的某個命令重名(判斷重名時不區分大小寫),則register_command函數調用失敗,新命令擴展無法注冊到輸入法中。

◆ lua_function_name

字符串。給出此命令在i擴展模式中運行時對應的Lua入口函數。這必須是一個已經存在的,接收一個或零個參數的Lua函數。

◆ description

字符串。命令的簡短描述。此描述會顯示在i擴展模式的命令選擇界面中,向用戶簡要說明某命令的功能。不要使用太長的簡短描述,一般不要超過10個字符。

◆ leading [可省略]

字符串。用戶選擇此命令的候選項目時,可以使用的快捷鍵,可以是以下三個特定字符串之一:

"digit": 默認值。表示用1, 2, 3, ...這樣的數字作為候選項選擇鍵。

"alpha": 表示用a, b, c, ...這樣的英文字母序列作為候選項選擇鍵。

"none": 表示不使用候選項選擇鍵。

注:默認情況下,輸入法使用1, 2, 3, ...數字鍵作為候選項選擇鍵。但是,當i擴展模式的某個命令希望接收數字1, 2, 3, ...作為自己的參數時,為避免沖突,就不能使用"digit"方式的候選項選擇鍵了。同理,當命令希望接收包含英文字母的參數時,就不能使用"alpha"作為候選項選擇鍵。

◆ help [可省略]

字符串。比description略長的幫助信息,但一般不要超過50個字。當用戶鍵入了"i"以及特定的命令名后,輸入法候選窗口的右上方會顯示此文字信息,用于提示用戶如何輸入后續參數。

lua_function_name給出的命令入口函數可以接收一個或零個參數,例如:

  1. function my_entry_function()  
  2.   -- 做某些處理并返回結果  
  3. end 

當入口函數接收一個參數時,輸入法會把用戶在i擴展模式中i+兩字母命令名輸完后繼續輸入的所有內容作為一個字符串參數,傳給入口函數。例如,用戶先后鍵入“ihw123”,則,用戶激活的命令名是“hw”,輸入法調用該命令對應入口函數時,以字符串方式傳入參數“123”。入口函數可以對參數進行運算處理,并返回對應的結果。例如:

function my_entry_function(argument)

-- 將參數argument轉換為數字,計算并返回其平方根...

end

注冊命令擴展時傳入的提示信息description會在用戶看到i擴展模式的命令列表時顯示,以提示用戶該命令的功能。這個字符串應當盡量簡短(不超過10個字符)。如下圖中的“擲骰子”,“打印字符”等,都是description:

 

 

注冊命令擴展時傳入的提示信息help會在用戶選中了某特定命令后,顯示在輸入法候選窗口的右上角。這個字符串可以比description略長,但一般也不要超過50個字符。例如,下圖中用戶選擇了打印字符命令“zf”后,顯示出來的“請輸入字母或數字序列,例如hello”就是help的內容:

 

 

注冊整合擴展

在Lua腳本中,向谷歌拼音輸入法注冊一個整合擴展的基本語法是:

  1. ime.register_trigger(lua_function_name, description, input_trigger_strings, candidate_trigger_strings) 

ime是提供給Lua腳本使用的,與輸入法內核交互的專用模塊。register_trigger是向谷歌拼音輸入法注冊新的整合擴展所使用的函數。函數的各參數含義如下:

◆ lua_function_name

字符串。給出此擴展運行時對應的Lua入口函數。這必須是一個已經存在的,接收一個參數的Lua函數。

◆ description

字符串。擴展功能的簡短描述,向用戶簡要說明某擴展的功能。不要使用太長的簡短描述,一般不要超過10個字符。

◆ input_trigger_strings

一個字符串組成的Lua列表,包含零個或多個特定的由英文字母或通配符*組成的字符串。這里給出的所有字符串在輸入法運行時將分別與用戶的輸入內容匹配,一旦用戶的輸入和給出的某個特定字符串相同(或使用通配符匹配成功),注冊的擴展函數就會被調用,擴展函數返回的候選項結果將會被插入到輸入法的候選項列表中。

◆ candidate_trigger_strings

一個字符串組成的Lua列表,包含零個或多個特定的由英文、中文、數字等可顯示字符或通配符*組成的字符串。這里給出的所有字符串在輸入法運行時將分別與輸入法得到的候選項進行匹配,一旦候選項列表第一頁中某個候選項和給出的某個特定字符串相同(或使用通配符匹配成功),注冊的擴展函數就會被調用,擴展函數返回的候選項結果將會被插入到輸入法的候選項列表中。

關于通配符匹配:input_trigger_strings和candidate_trigger_strings中的字符串可以在開頭或結尾包含通配符*,表示前綴匹配或后綴匹配。例如:

◆ abc*

表示匹配前綴為abc的任意字符串。例如,字符串abc,abcd,abcde都可以與之成功匹配。

◆ *abc

表示匹配后綴為abc的任意字符串。例如,字符串abc,dabc,deabc都可以與之成功匹配。

使用ime.register_trigger注冊整合擴展時,請注意以下幾點:

◆ 參數input_trigger_strings和candidate_trigger_strings不能同時為空表。

◆ 輸入法在激活整合擴展函數時,將優先匹配input_trigger_strings,然后再匹配candidate_trigger_strings。匹配candidate_trigger_strings時,會按照輸入法得到的候選項順序依次嘗試。對每一次輸入,一旦找到了匹配,就只插入該匹配對應的擴展函數返回的候選項結果,不再繼續嘗試其他匹配。

◆ 雖然擴展函數可以返回一個或多個結果,但對于整合擴展來說,目前只有第一個候選項結果會被插入到輸入法的候選項列表中。

◆ 目前一個整合擴展可以通過input_trigger_strings和candidate_trigger_strings注冊的字符串數目是有限制的,一般不要超過200個。

◆ 目前整合擴展在匹配candidate_trigger_strings時,只會與候選項列表第一頁中的候選項進行匹配。

整合擴展的入口函數一般應接收一個參數。在激活整合擴展函數時,輸入法會把激活整合擴展函數的字符串(或者是用戶輸入的內容,或者是某個特定的候選項)作為唯一的參數傳遞給入口函數。這樣,注冊了多個匹配字符串的整合擴展函數就可以在被調用時通過參數知道究竟是哪個字符查激活了自己。當然,在不需要時,入口函數也可以簡單地忽略這個參數。

注冊轉換器擴展

在Lua腳本中,向谷歌拼音輸入法注冊一個轉換器擴展的基本語法是:

  1. ime.register_converter(lua_function_name, description) 

ime是提供給Lua腳本使用的,與輸入法內核交互的專用模塊。register_converter是向谷歌拼音輸入法注冊新的轉換器擴展所使用的函數。函數的各參數含義如下:

◆ lua_function_name

字符串。給出此擴展運行時對應的Lua入口函數。這必須是一個已經存在的,接收一個參數的Lua函數。

◆ description

字符串。擴展功能的簡短描述,向用戶簡要說明某擴展的功能。不要使用太長的簡短描述,一般不要超過10個字符。對于轉換器擴展,此描述信息會被輸入法的用戶界面顯示給用戶,以便選擇特定的轉換器擴展。

用戶開啟轉換器時,輸入法會依次將每個候選項作為參數調用轉換器對應的Lua入口函數。也就是說,對于每個候選項,Lua入口函數都被調用一次。

轉換器擴展對應的Lua入口函數應當返回且只返回一個結果,即返回對原候選項進行變換后的新候選項。如果不希望變換某個候選項,可以將輸入參數的值直接返回。如果沒有返回任何結果,或返回的結果數目多于一個,則輸入法認為該擴展函數沒有對候選項做任何變換。

安裝了轉換器擴展后,用戶可以從輸入法的用戶界面啟動或關閉特定的轉換器。如下圖,從功能菜單開啟或關閉特定的轉換器:

 

 

#p#

返回候選項

一般的,擴展對應的入口函數可以返回一個或多個候選字符串。命令擴展會顯示所有返回的候選項,整合擴展目前只會將第一個候選項結果插入到輸入法的候選項列表中,而轉換器擴展則只接受返回一個候選字符串的入口函數。

返回的參數類型可以是Lua字符串類型,也可以是Lua數字類型,還可以是Lua布爾類型。但這些返回值返回輸入法內核后,都會被轉換成字符串顯示給最終用戶,以便用戶選擇輸入。

要返回唯一的候選字符串,只要直接使用return語句返回字符串、數字或布爾值即可,例如:

  1. function TestString(argument)  
  2.   -- 做某些處理  
  3.   return "a string"  
  4. end  
  5.  
  6. function TestNumber(argument)  
  7.   -- 做某些處理  
  8.   return 1234.56789  
  9. end  
  10.  
  11. function TestBoolean(argument)  
  12.   -- 做某些處理  
  13.   return true  
  14. end  
  15.  
  16. function TestAnotherBoolean(argument)  
  17.   -- 做某些處理  
  18.   return 3 > 2  
  19. end 

要返回兩個或更多結果,只要返回一個Lua的列表對象即可,例如:

  1. function TestTable(argument)  
  2.   return {"abc", "def", "ghi", 123, true}  
  3. end 

列表中的每個元素可以是Lua字符串,數字或布爾值,但不能嵌套列表。列表中的每個元素將對應于輸入法顯示給用戶的候選項列表中的一個候選項。上面這個函數返回的列表在輸入法中的顯示如下圖所示:

 

 

除了單行字符串結果外,命令擴展的入口函數還可以返回一個或多個包含換行符的多行結果(其他擴展方式,如整合擴展和轉換器擴展,目前不建議返回多行的結果)。換行符在Lua程序的字符串常量中用"\n"表示。例如下面的函數:

  1. function TestMultilines(argument)  
  2.   return "line 1" .. "\n" .. "line 2" .. "\n" .. "line 3"  
  3. end 

多行結果在輸入法的候選窗口中被顯示為“<字符畫>”,當用戶選擇輸入該候選項后,多行文本被插入到用戶當前文檔中,如下圖:

 

 

返回提示信息

對于命令擴展,當用戶剛輸入完i擴展模式的命令名稱,尚未輸入命令參數時,入口函數將被調用,此時傳給入口函數的參數為空字符串。這時,入口函數可以通過返回一個提示信息表,來提示用戶有幾種預定義的候選參數,并在輸入法的候選窗口中,允許用戶直接選擇某個預定義參數。例如:

  1. function TestMetatables(argument)  
  2.   if #argument == 0 then  
  3.     -- 如果沒有參數,則返回提示信息表,以便用戶直接選擇預定義的參數"num"或"chs"  
  4.     return { { suggest = "num"help = "數字123" },  
  5.              { suggest = "chs"help = "中文一二三" },  
  6.            }  
  7.   elseif argument == "num" then  
  8.     -- 如果參數是"num"(可能是用戶鍵入的,也可能是用戶根據提示信息表直接選擇的),則返回數字結果  
  9.     return 123  
  10.   elseif argument == "chs" then  
  11.     -- 如果參數是"chs"(可能是用戶鍵入的,也可能是用戶根據提示信息表直接選擇的),則返回中文結果  
  12.     return "一二三"  
  13.   end  
  14. end 

返回的提示信息表必須符合上述格式,即,表中的每個元素都是一個子表,每個子表內有兩個元素:鍵名suggset的元素表示要提示用戶輸入的一個候選參數,鍵名help的元素表示對該參數的簡短說明文字(不要超過10個字符)。上述入口函數在用戶沒有輸入參數時,輸入法顯示的提示窗口如下圖:

 

 

這時,用戶可以試用上下鍵,翻頁鍵和鼠標選擇自己要輸入的參數,也可以直接用鍵盤輸入。

其他擴展方式,如整合擴展和轉換器擴展,不支持提示選擇參數功能,它們將忽略入口函數返回的此類提示信息。

使用ime模塊

在開發者編寫的Lua腳本中,代碼除了可以調用Lua本身提供的各模塊功能(是標準Lua運行環境所提供功能的一個子集),還可以使用ime模塊訪問輸入法的相關信息,以實現與輸入法有關的特定功能。

例如,可以使用ime模塊的get_last_commit()函數獲得用戶上一次鍵入的字符串,并根據字符串的內容進行相應的計算,返回特定結果。比如,用戶鍵入了“你好”,然后使用i擴展模式中的某個功能,該功能看到“你好”后,自動返回“hello”。實現這一簡單邏輯的代碼如下:

  1. function TestConvertHello()  
  2.   if ime.get_last_commit() == "你好" then  
  3.     return "hello"  
  4.   else  
  5.     return "not found"  
  6.   end  
  7. end 

更詳細的信息請參見API參考一節中有關ime模塊的部分。

錯誤處理

Lua入口函數接收無法處理的參數,或者發生其他內部錯誤時,可以簡單地不返回任何參數,或者使用Lua語言內置的error()函數向輸入法報告錯誤信息,例如:

  1. function TestIgnoreError(argument)  
  2.   if #argument > 5 then  
  3.     return  
  4.   end  
  5.   return 123  
  6. end  
  7.  
  8. function TestReportError(argument)  
  9.   if #argument > 5 then  
  10.     error("argument length > 5")  
  11.   end  
  12.   return 123  
  13. end 

使用error()函數報告的錯誤信息不會在輸入法用戶界面中顯示,但可以使用控制臺工具測試腳本程序并查看錯誤信息。參見下面的開發與調試一節。

開發和調試

輸入法擴展腳本程序可以使用任何源代碼/文本編輯器創建。在將輸入法擴展包安裝到谷歌拼音輸入法之前,可以使用控制臺工具測試擴展程序,以確保程序功能正確。請從以下鏈接下載用于開發調試谷歌拼音輸入法擴展腳本的控制臺工具:

下載控制臺工具 (GooglePinyinApiConsole.exe) http://dl.google.com/pinyin/v2/GooglePinyinApiConsole.exe

在命令行運行控制臺工具GooglePinyinApiConsole.exe時,需要給出的命令行參數是一個或多個待測試的腳本文件路徑,控制臺工具會加載所有指定的輸入法擴展腳本,并啟動一個交互式界面,供開發者測試執行擴展模式。例如:

  1. GooglePinyinApiConsole.exe ext1.lua ext2.lua ext3.lua 

在控制臺工具的交互式界面中,鍵入"help",可以查看幫助信息:

i - 列出所有已注冊的命令擴展

i [COMMAND] - 無參數執行某命令擴展

i [COMMAND] [ARGUMENT] - 有參數執行某命令擴展

g [TRIGGER_STRING] - 嘗試利用某字符串參數激活整合擴展

c - 列出所有已注冊的轉換器擴展

c [FUNCTION] [STRING] - 測試轉換器函數

quit - 退出控制臺工具

help - 顯示幫助信息

當腳本加載或執行過程中發生錯誤時,控制臺工具會打印顯示錯誤信息。錯誤信息包括發生錯誤的腳本文件名,錯誤行號,錯誤內容等。

控制臺工具并不是真實的輸入法運行環境,因此,一些和輸入法特定功能相關的接口,例如,ime.get_last_commit(),在控制臺運行的腳本中無法得到實時的輸入法相關信息,這時,此類函數的返回值是簡單的固定字符串,如“測試”。整合擴展也無法像在輸入法中那樣,將結果插入在輸入法的候選項列表中。

下圖顯示了使用控制臺工具測試缺省輸入法擴展包中各擴展功能的情形:

 

 

#p#

關于Lua語言

目前,谷歌拼音輸入法擴展API只提供了Lua一種開發語言。Lua是一種體積小巧卻功能強大的動態腳本編程語言,廣泛用于網絡游戲等應用的插件或擴展功能的開發。對于一個有JavaScript語言、VBScript語言或者Python語言開發經驗的開發者來說,學習Lua語言并不困難。請參考以下網址獲得關于Lua語言的各種信息:

Lua編程語言

Lua程序設計語言

在輸入法環境中,每個用戶安裝的輸入法擴展都是一個獨立的Lua語言模塊,每個模塊在自己的名字空間中運行。也就是說,不同模塊間的同名符號不會沖突,但不同模塊間也無法相互進行功能調用。用戶安裝的輸入法擴展只能調用API參考一節描述的Lua內置功能函數和ime模塊提供的輸入法相關函數。

API參考

使用Lua語言編寫的輸入法擴展程序保存在磁盤上時,推薦使用UTF-8編碼的文本文件。文本文件可以包含也可以不包含BOM文件頭。沒有BOM文件頭時,IME缺省認為按UTF-8編碼加載。

使用Lua語言編寫的輸入法擴展程序可以使用以下內置函數。除了ime模塊提供的輸入法相關函數外,這些函數是標準Lua運行環境的一個子集。因此,在將已有的Lua程序移植到輸入法擴展程序之前,請確認程序使用的函數在下表所涵蓋的范圍內。

以下凡屬于Lua標準運行環境的函數,均只給出簡要的功能說明。詳細用法請參見Lua語言標準函數庫的說明。

基本功能函數

◆ assert (v [, message])

斷言。如果v的值是非(nil或false),就報告錯誤。

◆ error (message [, level])

報告錯誤。

◆ ipairs (t)

迭代器函數。用于對列表中元素的(序號,值)進行迭代。

◆ loadstring (string [, chunkname])

加載并執行字符串。

◆ next (table [, index])

用于遍歷列表的每個元素。

◆ pairs (t)

迭代器函數。用于對列表中元素的(鍵,值)進行迭代。

◆ select (index, ...)

返回變長參數列表中從index之后開始的所有參數。

◆ tonumber (e [, base])

轉換為數字。

◆ tostring (e)

轉換為字符串。

◆ type (v)

返回參數的類型名。

◆ unpack (list [, i [, j]])

返回列表中的各個元素。

字符串處理函數

◆ string.byte (s [, i [, j]])

返回字符內部編碼。

◆ string.char (···)

返回內部編碼對應的字符串。

◆ string.find (s, pattern [, init [, plain]])

字符串查找。

◆ string.format (formatstring, ···)

字符串格式化。

◆ string.gmatch (s, pattern)

迭代器函數。用于在字符串中對所有匹配項進行迭代。

◆ string.gsub (s, pattern, repl [, n])

字符串全局替換。

◆ string.len (s)

返回字符串長度。

◆ string.lower (s)

轉換為小寫。

◆ string.match (s, pattern [, init])

字符串匹配。

◆ string.rep (s, n)

重復字符串n次。

◆ string.reverse (s)

字符串反轉。

◆ string.sub (s, i [, j])

字符串替換。

◆ string.upper (s)

轉換為大寫。

日期和時間函數

◆ os.date ([format [, time]])

返回格式化的日期時間字符串。

◆ os.difftime (t2, t1)

返回兩個時間相差的秒數。

◆ os.time ([table])

返回當前日期,或指定的日期。

數學函數

◆ math.abs (x)

絕對值。

◆ math.acos (x)

反余弦。

◆ math.asin (x)

反正弦。

◆ math.atan (x)

反正切。

◆ math.ceil (x)

向上取整。

◆ math.cos (x)

余弦。

◆ math.cosh (x)

雙曲余弦。

◆ math.deg (x)

弧度轉角度。

◆ math.exp (x)

計算ex

◆ math.floor (x)

向下取整。

◆ math.fmod (x, y)

浮點數取模。

◆ math.frexp (x)

返回使x = m2e成立的m和e

◆ math.ldexp (m, e)

計算m2e

◆ math.log (x)

計算自然對數。

◆ math.log10 (x)

計算常用對數。

◆ math.max (x, ···)

求最大值。

◆ math.min (x, ···)

求最小值。

◆ math.modf (x)

返回浮點數的整數和小數部分。

◆ math.pi

返回π值。

◆ math.pow (x, y)

計算xy

◆ math.rad (x)

角度轉弧度。

◆ math.random ([m [, n]])

生成偽隨機數。

◆ math.randomseed (x)

設置隨機數種子。

◆ math.sin (x)

正弦。

◆ math.sinh (x)

雙曲正弦。

◆ math.sqrt (x)

平方根。

◆ math.tan (x)

正切。

◆ math.tanh (x)

雙曲正切。

表處理函數

◆ table.concat (table [, sep [, i [, j]]])

連接列表元素。

◆ table.insert (table, [pos,] value)

插入元素。

◆ table.maxn (table)

返回最大整數索引號。

◆ table.remove (table [, pos])

刪除元素。

◆ table.sort (table [, comp])

排序。

ime模塊提供的輸入法相關函數

注冊輸入法模塊相關函數

◆ ime.register_command (command_name, lua_function_name, description [, leading [, help]])

注冊命令擴展。詳細說明參見注冊命令擴展。

◆ ime.register_trigger (lua_function_name, description, input_trigger_strings, candidate_trigger_strings)

注冊整合擴展。詳細說明參見注冊整合擴展。

◆ ime.register_converter (lua_function_name, description)

注冊轉換器擴展。詳細說明參見注冊轉換器擴展。

輸入法信息相關函數

◆ ime.get_version ()

以字符串方式返回當前輸入法的版本號。

◆ ime.get_last_commit ()

返回用戶通過谷歌拼音輸入法輸入的上一個字符串。

實用工具函數

◆ ime.int_to_hex_string(value [, width])

將整數值value轉換成16進制表示的字符串。可選參數width指定了結果字符串的最小長度,不足最小長度時,高位用"0"補齊。

◆ ime.join_string (str_list, sep)

將str_list列表中的所有字符串連接成一個大字符串,并使用sep作為連接字符,返回結果字符串。

◆ ime.parse_mapping (src_string, line_sep, key_value_sep, values_sep)

字符串src_string是一個用字符串方式表示的<鍵, 一個或多個值>的映射表,每一行表示一個鍵與其值的映射,行與行之間的分隔字符是line_sep,每行內鍵與后續的一個或多個值之間的分隔字符是key_value_sep,多個值之間的分隔字符是values_sep。ime.parse_mapping解析此格式的字符串,將其轉換為Lua語言可直接使用的列表。結果列表的格式為{key1={value1, value2, ...}, key2={value1, value2, ...}, ...}。此工具函數的典型應用實例是:在輸入法擴展模塊中預置一個字符串形式、易于閱讀和編輯的映射表(比如一種漢字編碼到對應的一個或多個漢字的映射),然后在擴展模塊中用此函數解析該映射表,以便Lua代碼快速查詢。

示例代碼:

  1. _MAPPING_TABLE = [[  
  2. a 啊  
  3. b 不,吧  
  4. c 從,穿,出  
  5. ]]  
  6.  
  7. _MAPPING = ime.parse_mapping(_MAPPING_TABLE, "\n", " ", ",")  
  8.  
  9. function Lookup(input)  
  10.   if _MAPPING[input] then  
  11.     return _MAPPING[input]  
  12.   else  
  13.     error("Invalid argument")  
  14.   end  
  15. end  
  16.  
  17. ime.register_command("lp", "Lookup", "mapping lookup") 

◆ ime.split_string (str, sep)

根據分隔字符sep,將字符串str拆分為一組字符串,返回這一組字符串組成的列表。

◆ ime.trim_string (str)

去除字符串str左右兩邊的空白字符,返回結果字符串。

◆ ime.trim_string_left (str)

去除字符串str左邊的空白字符,返回結果字符串。

◆ ime.trim_string_right (str)

去除字符串str右邊的空白字符,返回結果字符串。

◆ ime.utf8_to_utf16 (str)

將UTF-8編碼的字符串轉換為UTF-16編碼的字符串,返回的結果字符串以"\0\0"結尾。

◆ ime.utf16_to_utf8 (str)

將UTF-16編碼的字符串轉換為UTF-8編碼的字符串。

原文:http://www.google.com/intl/zh-CN/ime/pinyin/api.html

【編輯推薦】

  1. 百度地圖API之如何制作駕車導航
  2. 詳解百度地圖API之地圖標注
  3. 教你如何構建簡單Web API
  4. Google+開放Hangouts API接口
  5. C++中通過LUA API訪問LUA腳本變量學習教程
責任編輯:陳貽新 來源: 谷歌
相關推薦

2009-09-01 08:57:21

SCIM谷歌拼音輸入法

2009-08-13 10:42:15

基于Android平臺

2023-08-14 07:36:58

搜狗拼音加密

2009-03-09 19:48:17

LinuxSunPinyin拼音輸入法

2011-08-30 11:21:59

UbuntuGoogle

2009-11-17 09:26:39

騰訊搜狗輸入法

2017-01-12 09:25:05

Windows 10新拼音輸入法

2022-05-11 14:54:02

輸入法框架鴻蒙

2020-10-29 11:10:10

華宇拼音輸入法

2010-12-22 15:32:24

360軟件管家搜狗拼音輸入法

2017-10-16 13:30:28

windows 10技巧輸入法

2009-07-06 09:18:31

搜狗騰訊輸入法

2023-04-08 11:03:28

Windows 11微軟

2023-05-10 07:32:18

2023-07-12 07:04:07

Windows 10微軟

2023-06-16 09:24:56

Windows微軟

2012-03-26 09:27:40

谷歌安卓開發谷歌安卓

2024-07-11 08:16:59

Windows 11微軟預覽版更新

2013-08-29 11:04:27

2010-02-07 14:25:47

Ubuntu SCIM
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 911精品美国片911久久久 | 男人天堂网址 | 国产96色在线 | 欧美日韩一区二区三区四区五区 | 国产欧美在线 | 亚洲一二三区不卡 | 亚洲一区二区在线播放 | 日韩一区二区在线视频 | cao在线| 久热精品在线 | 亚洲精品久久久久久一区二区 | 一级做a毛片 | 久久99深爱久久99精品 | 伦理午夜电影免费观看 | 国产乱人伦精品一区二区 | 一区二区三区四区在线播放 | 欧日韩在线 | 中文字字幕在线中文乱码范文 | 99精品在线观看 | 国产三级国产精品 | 亚洲在线一区 | 国产91一区 | 国产激情免费视频 | 精品福利在线 | 小h片免费观看久久久久 | 欧美一区在线视频 | 久久国产高清 | 日本久久福利 | 国产激情一区二区三区 | 黄色在线免费观看 | 欧美成人精品 | 精品欧美一区二区在线观看视频 | 精品av| 免费一区 | 午夜视频一区二区 | 国产日韩欧美一区二区 | 一区二区视频在线 | 国产一区二区三区四 | 成人精品一区亚洲午夜久久久 | 日韩成人一区 | 在线一区二区三区 |