Class: Hubeye::Server::Strategy
- Inherits:
-
Object
- Object
- Hubeye::Server::Strategy
- Extended by:
- Forwardable
- Defined in:
- lib/hubeye/server/server.rb
Constant Summary collapse
- UnknownStrategy =
Class.new(StandardError)
- STRATEGY_CLASSES =
[ "Shutdown", "Exit", "SaveHook", "SaveRepo", "LoadHook", "LoadRepo", "AddHook", "ListHooks", "ListTracking", "Next", "RmRepo", "AddRepo" ]
- STRATEGIES =
STRATEGIES hash
keys: input matches OR lambda {|input| input.something?} => value
values: lambda {|matchdata, basestrategy| SomeStrategy.new(matchdata, basestrategy)}
{ %r{\Ashutdown\Z} => lambda {|m, s| Shutdown.new(m, s)}, %r{\Aquit|exit\Z} => lambda {|m, s| Exit.new(m, s)}, %r{\Atracking\s*\Z} => lambda {|m, s| ListTracking.new(m, s)}, %r{\Atracking\s*-d\Z} => lambda {|m, s| ListTracking.new(m, s, :details => true)}, %r{\A\s*save hook(s?) as (.+)\Z} => lambda {|m, s| SaveHook.new(m, s)}, %r{\A\s*save repo(s?) as (.+)\Z} => lambda {|m, s| SaveRepo.new(m, s)}, %r{\A\s*load hook(s?) (.+)\Z} => lambda {|m, s| LoadHook.new(m, s)}, %r{\A\s*load repo(s?) (.+)\Z} => lambda {|m, s| LoadRepo.new(m, s)}, %r{\A\s*internal load hook(s?) (.+)\Z} => lambda {|m, s| LoadHook.new(m, s, :internal => true)}, %r{\A\s*internal load repo(s?) (.+)\Z} => lambda {|m, s| LoadRepo.new(m, s, :internal => true)}, %r{\Ahook add ([-\w]+/[-\w]+) (dir:\s?(.*))?\s*cmd:\s?(.*)\Z} => lambda {|m, s| AddHook.new(m, s)}, %r{\Ahook list\Z} => lambda {|m, s| ListHooks.new(m, s)}, %r{^\s*$} => lambda {|m, s| Next.new(m, s)}, %r{\Arm ([-\w]+/?[-\w]*)\Z} => lambda {|m, s| RmRepo.new(m, s)}, lambda {|inp| inp.include? '/'} => lambda {|m, s| AddRepo.new(m, s, :fullpath => true)}, lambda {|inp| not inp.nil?} => lambda {|m, s| AddRepo.new(m, s)} }
Instance Attribute Summary collapse
-
#input ⇒ Object
readonly
Returns the value of attribute input.
-
#server ⇒ Object
readonly
Returns the value of attribute server.
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(server, options = {}) ⇒ Strategy
constructor
A new instance of Strategy.
Constructor Details
#initialize(server, options = {}) ⇒ Strategy
Returns a new instance of Strategy.
370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 |
# File 'lib/hubeye/server/server.rb', line 370 def initialize(server, ={}) @server = server opts = {:internal_input => nil}.merge invalid_input = lambda { @server.remote_connection = false throw(:invalid_input) } if !opts[:internal_input] begin @input = socket.read_all rescue => e STDOUT.puts e invalid_input.call end # check if the client pressed ^C or ^D if @input.nil? invalid_input.call end else @input = opts[:internal_input] end @input = @input.strip.downcase @input.gsub! /diiv/, '/' end |
Instance Attribute Details
#input ⇒ Object (readonly)
Returns the value of attribute input.
364 365 366 |
# File 'lib/hubeye/server/server.rb', line 364 def input @input end |
#server ⇒ Object (readonly)
Returns the value of attribute server.
364 365 366 |
# File 'lib/hubeye/server/server.rb', line 364 def server @server end |
Instance Method Details
#call ⇒ Object
442 443 444 445 446 447 448 449 450 451 452 453 454 455 |
# File 'lib/hubeye/server/server.rb', line 442 def call STRATEGIES.each do |inp,strat| if inp.respond_to? :match if m = @input.match(inp) return strat.call(m, self) end elsif inp.respond_to? :call if m = inp.call(@input) return strat.call(m, self) end end end raise UnknownStrategy end |