Class: Toys::Completion::FileSystem
- Defined in:
- toys-core/lib/toys/completion.rb
Overview
Defined in the toys-core gem
A Completion that returns candidates from the local file system.
Instance Attribute Summary collapse
-
#cwd ⇒ String
readonly
Path to the starting directory.
-
#include_directories ⇒ Boolean
readonly
Whether directories are included in the completion candidates.
-
#include_files ⇒ Boolean
readonly
Whether files are included in the completion candidates.
-
#prefix_constraint ⇒ String, Regexp
readonly
Constraint on the fragment prefix.
Instance Method Summary collapse
-
#call(context) ⇒ Array<Toys::Completion::Candidate>
Returns candidates for the current completion.
-
#initialize(cwd: nil, omit_files: false, omit_directories: false, prefix_constraint: "") ⇒ FileSystem
constructor
Create a completion that gets candidates from names in the local file system.
Constructor Details
#initialize(cwd: nil, omit_files: false, omit_directories: false, prefix_constraint: "") ⇒ FileSystem
Create a completion that gets candidates from names in the local file system.
248 249 250 251 252 253 254 |
# File 'toys-core/lib/toys/completion.rb', line 248 def initialize(cwd: nil, omit_files: false, omit_directories: false, prefix_constraint: "") super() @cwd = cwd || ::Dir.pwd @include_files = !omit_files @include_directories = !omit_directories @prefix_constraint = prefix_constraint end |
Instance Attribute Details
#cwd ⇒ String (readonly)
Path to the starting directory.
278 279 280 |
# File 'toys-core/lib/toys/completion.rb', line 278 def cwd @cwd end |
#include_directories ⇒ Boolean (readonly)
Whether directories are included in the completion candidates.
266 267 268 |
# File 'toys-core/lib/toys/completion.rb', line 266 def include_directories @include_directories end |
#include_files ⇒ Boolean (readonly)
Whether files are included in the completion candidates.
260 261 262 |
# File 'toys-core/lib/toys/completion.rb', line 260 def include_files @include_files end |
#prefix_constraint ⇒ String, Regexp (readonly)
Constraint on the fragment prefix.
272 273 274 |
# File 'toys-core/lib/toys/completion.rb', line 272 def prefix_constraint @prefix_constraint end |
Instance Method Details
#call(context) ⇒ Array<Toys::Completion::Candidate>
Returns candidates for the current completion.
287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 |
# File 'toys-core/lib/toys/completion.rb', line 287 def call(context) return [] unless @prefix_constraint === context.fragment_prefix substring = context.fragment prefix, name = if substring.empty? || substring.end_with?("/") [substring, ""] else ::File.split(substring) end dir = ::File.(prefix, @cwd) return [] unless ::File.directory?(dir) prefix = nil if [".", ""].include?(prefix) omits = [".", "..", ""] children = Compat.glob_in_dir(name, dir).find_all do |child| !omits.include?(child) end children += ::Dir.entries(dir).find_all do |child| child.start_with?(name) && !omits.include?(child) end generate_candidates(children.uniq.sort, prefix, dir) end |