Class: Hotdog::Commands::Search::UnaryExpressionNode
- Inherits:
-
ExpressionNode
- Object
- ExpressionNode
- Hotdog::Commands::Search::UnaryExpressionNode
- Defined in:
- lib/hotdog/commands/search.rb
Instance Method Summary collapse
- #evaluate(environment) ⇒ Object
-
#initialize(op, expression) ⇒ UnaryExpressionNode
constructor
A new instance of UnaryExpressionNode.
Constructor Details
#initialize(op, expression) ⇒ UnaryExpressionNode
180 181 182 183 |
# File 'lib/hotdog/commands/search.rb', line 180 def initialize(op, expression) @op = op @expression = expression end |
Instance Method Details
#evaluate(environment) ⇒ Object
184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/hotdog/commands/search.rb', line 184 def evaluate(environment) case @op when "!", "~", /\Anot\z/i values = @expression.evaluate(environment) if values.empty? environment.execute(<<-EOS).map { |row| row.first } SELECT DISTINCT host_id FROM hosts_tags; EOS else environment.execute(<<-EOS % values.map { "?" }.join(", "), values).map { |row| row.first } SELECT DISTINCT host_id FROM hosts_tags WHERE host_id NOT IN (%s); EOS end else raise(SyntaxError.new("unknown unary operator: #{@op}")) end end |