Class: Rufio::LocalScriptScanner
- Inherits:
-
Object
- Object
- Rufio::LocalScriptScanner
- Defined in:
- lib/rufio/local_script_scanner.rb
Overview
閲覧中ディレクトリのスクリプトファイルを検出するスキャナーカレントディレクトリ直下のスクリプトファイル(.sh, .rb, .py等)を検出し、コマンドモードから @script.sh 形式で実行可能にする
Constant Summary collapse
- SUPPORTED_EXTENSIONS =
サポートするスクリプト拡張子
%w[.sh .rb .py .pl .js .ts .ps1].freeze
Instance Method Summary collapse
-
#available_scripts ⇒ Array<Hash>
利用可能なスクリプト一覧を取得.
-
#complete(prefix) ⇒ Array<String>
Tab補完候補を取得.
-
#find_script(name) ⇒ Hash?
名前でスクリプトを検索.
-
#initialize(directory = nil) ⇒ LocalScriptScanner
constructor
A new instance of LocalScriptScanner.
-
#update_directory(directory) ⇒ Object
ディレクトリ変更時にキャッシュを無効化.
Constructor Details
#initialize(directory = nil) ⇒ LocalScriptScanner
Returns a new instance of LocalScriptScanner.
12 13 14 15 |
# File 'lib/rufio/local_script_scanner.rb', line 12 def initialize(directory = nil) @directory = directory @scripts_cache = nil end |
Instance Method Details
#available_scripts ⇒ Array<Hash>
利用可能なスクリプト一覧を取得
28 29 30 |
# File 'lib/rufio/local_script_scanner.rb', line 28 def available_scripts @scripts_cache ||= scan_scripts end |
#complete(prefix) ⇒ Array<String>
Tab補完候補を取得
52 53 54 55 56 57 |
# File 'lib/rufio/local_script_scanner.rb', line 52 def complete(prefix) available_scripts .map { |s| s[:name] } .select { |name| name.start_with?(prefix) } .sort end |
#find_script(name) ⇒ Hash?
名前でスクリプトを検索
35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/rufio/local_script_scanner.rb', line 35 def find_script(name) # 完全一致を優先 script = available_scripts.find { |s| s[:name] == name } return script if script # 拡張子なしで検索 SUPPORTED_EXTENSIONS.each do |ext| script = available_scripts.find { |s| s[:name] == "#{name}#{ext}" } return script if script end nil end |
#update_directory(directory) ⇒ Object
ディレクトリ変更時にキャッシュを無効化
19 20 21 22 23 24 |
# File 'lib/rufio/local_script_scanner.rb', line 19 def update_directory(directory) return if @directory == directory @directory = directory @scripts_cache = nil end |