lib/sup/search.rb in sup-0.14.1.1 vs lib/sup/search.rb in sup-0.15.0
- old
+ new
@@ -5,10 +5,12 @@
class SearchManager
include Singleton
class ExpansionError < StandardError; end
+ attr_reader :predefined_searches
+
def initialize fn
@fn = fn
@searches = {}
if File.exists? fn
IO.foreach(fn) do |l|
@@ -41,27 +43,43 @@
def valid_name? name; name =~ /^[\w-]+$/; end
def name_format_hint; "letters, numbers, underscores and dashes only"; end
def add name, search_string
return unless valid_name? name
+ if @predefined_searches.has_key? name
+ warn "cannot add search: #{name} is already taken by a predefined search"
+ return
+ end
@searches[name] = search_string
@modified = true
end
def rename old, new
return unless @searches.has_key? old
+ if [old, new].any? { |x| @predefined_searches.has_key? x }
+ warn "cannot rename search: #{old} or #{new} is already taken by a predefined search"
+ return
+ end
search_string = @searches[old]
delete old if add new, search_string
end
def edit name, search_string
return unless @searches.has_key? name
+ if @predefined_searches.has_key? name
+ warn "cannot edit predefined search: #{name}."
+ return
+ end
@searches[name] = search_string
@modified = true
end
def delete name
return unless @searches.has_key? name
+ if @predefined_searches.has_key? name
+ warn "cannot delete predefined search: #{name}."
+ return
+ end
@searches.delete name
@modified = true
end
def expand search_string