7.5 周遊列國實例 (1-10)

(1) viper.py -> console.py -> colors.py

啟動 viper console 介面,console 介面顯示 prompt 時,會使用不同顏色顯示。

(2) viper.py -> console.py -> session.py -> out.py -> colors.py

啟動 viper console 介面時,會先檢查是否有 session 正開啟中,
若有則印出 __session__.file.path。

另外,若輸入 $self 關鍵字時,則會用到函式 keywords 檢查是否有 session 開啟,
並印出 __session__.file.path。 

(3) viper.py -> console.py -> session.py -> objects.py

與 tour 2 相關,主要是 session.py 內用到了 objects.py 中的 File。

其中,File 計算與提供檔案基本資訊,例如:檔案類型,sha256 hash value, 
file path 等。

(4) viper.py -> console.py -> plugins.py -> abstracts.py -> colors.py

console 介面會 listen 使用者輸入的指令,並檢查是否為內建 modules 指令。

modules loaded 前會檢查其是否為 abstracts.py 中 Module class 的孩子,
且不是 Module class 本身。

(5) viper.py -> console.py -> plugins.py -> module/fuzzy.py -> out.py -> colors.py

若 console 接到內建模組 fuzzy 指令,則會透過 plugins.py 載入 fuzzy 模組。
用 dict 與 inspect 實作。 inspect 取得 module object。
plugins[member_object.cmd] = dict(obj=member_object, description=member_object.description)
將相對應指令塞入 dict 的 key 值,並透過建立巢狀字典,將 obj=member_object。
開發者就可透過 module = __modules__[root]['obj']() 初始化模組的 instance。

(6) viper.py -> console.py -> plugins.py -> module/fuzzy.py -> abstracts.py -> colors.py

(7) viper.py -> console.py -> plugins.py -> modules/fuzzy.py -> database.py -> out.py -> colors.py

(8) viper.py -> console.py -> plugins.py -> modules/fuzzy.py -> database.py -> objects.py

(9) viper.py -> console.py -> plugins.py -> modules/fuzzy.py -> session.py -> out.py -> colors.py

(10) viper.py -> console.py -> plugins.py -> modules/fuzzy.py -> session.py -> objects.py

Last updated