Class: Rufio::InterpreterResolver
- Inherits:
-
Object
- Object
- Rufio::InterpreterResolver
- Defined in:
- lib/rufio/interpreter_resolver.rb
Overview
拡張子からインタープリタを解決するクラス
Constant Summary collapse
- DEFAULT_EXTENSIONS =
デフォルトの拡張子とインタープリタのマッピング
{ ".rb" => "ruby", ".py" => "python3", ".sh" => "bash", ".js" => "node", ".pl" => "perl", ".lua" => "lua", ".ts" => "ts-node", ".php" => "php", ".ps1" => nil # プラットフォーム依存 }.freeze
Class Method Summary collapse
-
.all_extensions ⇒ Hash
全ての拡張子マッピングを取得する.
-
.linux? ⇒ Boolean
Linuxプラットフォームかどうか.
-
.macos? ⇒ Boolean
macOSプラットフォームかどうか.
-
.resolve(extension) ⇒ String?
拡張子からインタープリタを解決する.
-
.resolve_from_path(path) ⇒ String?
ファイルパスから拡張子を取得してインタープリタを解決する.
-
.windows? ⇒ Boolean
Windowsプラットフォームかどうか.
Class Method Details
.all_extensions ⇒ Hash
全ての拡張子マッピングを取得する
46 47 48 49 |
# File 'lib/rufio/interpreter_resolver.rb', line 46 def all_extensions # PowerShellのプラットフォーム依存を解決した状態で返す DEFAULT_EXTENSIONS.merge(".ps1" => resolve_powershell) end |
.linux? ⇒ Boolean
Linuxプラットフォームかどうか
65 66 67 |
# File 'lib/rufio/interpreter_resolver.rb', line 65 def linux? RUBY_PLATFORM =~ /linux/ ? true : false end |
.macos? ⇒ Boolean
macOSプラットフォームかどうか
59 60 61 |
# File 'lib/rufio/interpreter_resolver.rb', line 59 def macos? RUBY_PLATFORM =~ /darwin/ ? true : false end |
.resolve(extension) ⇒ String?
拡張子からインタープリタを解決する
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/rufio/interpreter_resolver.rb', line 23 def resolve(extension) # ドットで始まらない場合は追加 ext = extension.start_with?(".") ? extension : ".#{extension}" ext = ext.downcase # PowerShellはプラットフォーム依存 return resolve_powershell if ext == ".ps1" DEFAULT_EXTENSIONS[ext] end |
.resolve_from_path(path) ⇒ String?
ファイルパスから拡張子を取得してインタープリタを解決する
37 38 39 40 41 42 |
# File 'lib/rufio/interpreter_resolver.rb', line 37 def resolve_from_path(path) ext = File.extname(path) return nil if ext.empty? resolve(ext) end |
.windows? ⇒ Boolean
Windowsプラットフォームかどうか
53 54 55 |
# File 'lib/rufio/interpreter_resolver.rb', line 53 def windows? RUBY_PLATFORM =~ /mingw|mswin|cygwin/ ? true : false end |