summaryrefslogtreecommitdiffhomepage
path: root/dragon/autocomplete.rb
diff options
context:
space:
mode:
author_Tradam <[email protected]>2021-12-16 19:22:26 -0500
committerGitHub <[email protected]>2021-12-16 19:22:26 -0500
commit5954b9beb4d4a3b4f248d72d1851195f030558a8 (patch)
treefecd8aa840a25afdb502915b0fdb4d03b7ed339a /dragon/autocomplete.rb
parent2f845281f133849256b57bb08fd3e9ae57600784 (diff)
parenteaa29e72939f5edf61735ccbb73c36ee89369f65 (diff)
downloaddragonruby-game-toolkit-contrib-master.tar.gz
dragonruby-game-toolkit-contrib-master.zip
Merge branch 'DragonRuby:master' into masterHEADmaster
Diffstat (limited to 'dragon/autocomplete.rb')
-rw-r--r--dragon/autocomplete.rb19
1 files changed, 17 insertions, 2 deletions
diff --git a/dragon/autocomplete.rb b/dragon/autocomplete.rb
index 490d6c9..ce29d0a 100644
--- a/dragon/autocomplete.rb
+++ b/dragon/autocomplete.rb
@@ -1,3 +1,4 @@
+# coding: utf-8
# Copyright 2019 DragonRuby LLC
# MIT License
# autocomplete.rb has been released under MIT (*only this file*).
@@ -24,7 +25,7 @@ module GTK
sub_index = index - previous_line[:sum]
word = (cursor_line[:line][0..sub_index - 1]).strip
token = (word.split " ")[-1]
- dots = (token.split ".")
+ dots = (token.split ".").flat_map { |s| s.split "[" }.flat_map { |s| s.split "]" }.flat_map { |s| s.split "(" }.flat_map { |s| s.split ")" }
dot = dots[-1]
end
@@ -45,6 +46,10 @@ module GTK
ignores ||= []
ignores = [ignores].flatten
keys = keys.map { |k| k.to_s }
+ keys = keys.reject { |k| k.include? '"' }
+ .reject { |k| k.start_with? "'" }
+ .reject { |k| k.include? "," }
+ .reject { |k| k.start_with? "#" }
others = ["def", "end"] +
[ :entity_keys_by_ref,
:entity_name,
@@ -102,6 +107,10 @@ module GTK
return autocomplete_filter_methods lookup_result.call if lookup_result
+ if dot[0].upcase == dot[0] && (Object.const_defined? dot.to_sym)
+ return (Object.const_get dot.to_sym).autocomplete_methods
+ end
+
start_collecting = false
dots_after_state = dots.find_all do |s|
if s == "state"
@@ -117,10 +126,16 @@ module GTK
target = target.as_hash[k.to_sym] if target.respond_to? :as_hash
end
- return autocomplete_filter_methods target.as_hash.keys
+ if target.respond_to? :as_hash
+ return autocomplete_filter_methods target.as_hash.keys
+ else
+ return autocomplete_filter_methods target.autocomplete_methods
+ end
end
+ text = text.each_line.reject { |l| l.strip.start_with? "#" }.join "\n"
+ text = text.each_line.map { |l| l.split("#").first }.join "\n"
text.gsub!("[", " ")
text.gsub!("]", " ")
text.gsub!("(", " ")