天天看點

VS Code英漢詞典插件v0.0.6-改為TS實作, 加測試

如前文 VS Code英漢詞典插件v0.0.4-駝峰下劃線命名

打算, 首先将JS源碼改為TypeScript實作, 并添加了必要的測試.

昨天

得知vue.js 3.0會用TypeScript實作 , 正好通過這個插件對TypeScript熟悉一下, 好為 手工翻譯Vue.js源碼:嘗試重命名辨別符與文本

轉為對新版vue.js的源碼翻譯作準備.

源碼暫時仍在分支未合并(現已合并):

program-in-chinese/vscode_english_chinese_dictionary 改為TS實作參考了官方文檔: Migrating from JavaScript , 比想象中的容易些(特别是改檔案擴充名那一步), 主要修改是修正 exports->export, require->import · program-in-chinese/vscode_english_chinese_dictionary@cf6a40b

, 還有for(.. of ..)需添加var.

動态導入多個詞典資料費了點功夫:

修正: not a module編譯錯誤 · program-in-chinese/vscode_english_chinese_dictionary@470f81a

測試運作和調試感覺挺友善. 畢竟VS Code就是TS開發的. 基本覆寫了之前的手工測試. 有測試之後, 之後的重構(使用TS的非JS特性等等)和功能改進就友善多了.

遛測試源碼:

import * as assert from 'assert'

import * as 查詞 from '../src/查詞'

suite("查詞測試", () => {

  test("取釋義", () => {
    assert.deepEqual(
      {
        "原字段": "shipment",
        "釋義": "n. 裝船, 出貨\\n[經] 運送, 運送(寄出)貨物, 裝載",
        "各詞": [
          {
            "詞": "shipment", "釋義": "n. 裝船, 出貨\\n[經] 運送, 運送(寄出)貨物, 裝載",
            "詞形": [
              { "類型": "名詞複數形式", "變化": "shipments" }
            ]
          }
        ]
      },
      查詞.取釋義("shipment")
    );
    assert.deepEqual(
      {
        "原字段": "ACCOUNT",
        "釋義": "n. 報告, 解釋, 估價, 理由, 利潤, 算賬, 帳目\\nvi. 報帳, 解釋, 導緻, 報償, 占, 殺死\\nvt. 認為\\n[計] 帳戶, 帳号",
        "各詞": [
          {
            "詞": "account", "釋義": "n. 報告, 解釋, 估價, 理由, 利潤, 算賬, 帳目\\nvi. 報帳, 解釋, 導緻, 報償, 占, 殺死\\nvt. 認為\\n[計] 帳戶, 帳号",
            "詞形": [
              { "變化": "accounts", "類型": "名詞複數形式" },
              { "變化": "accounted", "類型": "過去分詞" },
              { "變化": "accounting", "類型": "現在分詞" },
              { "變化": "accounts", "類型": "第三人稱單數" },
              { "變化": "accounted", "類型": "過去式" }
            ]
          }
        ]
      },
      查詞.取釋義("ACCOUNT")
    );
    assert.deepEqual(
      {
        "原字段": "seconds",
        "釋義": "n. 次級品, 二等品",
        "各詞": [
          {
            "詞": "seconds", "釋義": "n. 次級品, 二等品",
            "詞形": [
              {
                "變化": [
                  "名詞複數形式",
                  "第三人稱單數"
                ],
                "類型": "原型變換形式"
              },
              { "類型": "原型", "變化": "second" }
            ]
          }
        ]
      },
      查詞.取釋義("seconds")
    );

    assert.equal("執行路徑", 查詞.取釋義("execPath").釋義);

    assert.equal("字元串_譯碼器", 查詞.取釋義("string_decoder").釋義);
    assert.equal("帳戶_數字", 查詞.取釋義("ACCOUNT_NUMBER").釋義);
    assert.equal("帳戶數字", 查詞.取釋義("_ACCOUNT_NUMBER").釋義);

    assert.equal("取得指令秒", 查詞.取釋義("getSeconds").釋義);
    assert.equal("使用顔色", 查詞.取釋義("useColors").釋義);

    assert.equal("fs路徑", 查詞.取釋義("fsPath").釋義);
  });
});           

繼續暗黑彩蛋:

釋出0.0.6後立即安裝試用, 結果傻眼, useColors仍然翻成"使用國旗". 從官網下載下傳了vsix檔案解壓看了源碼的确是更新了的. 壓抑住了重新釋出0.0.7的沖動, 重新安裝後重新開機vscode, 結果正常. 難道哪裡有緩存問題?

2018-11-29

繼續閱讀