Class: Groonga::Command::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/groonga/command/parser.rb,
lib/groonga/command/parser/error.rb,
lib/groonga/command/parser/version.rb,
lib/groonga/command/parser/load-values-parser.rb,
lib/groonga/command/parser/command-line-splitter.rb,
lib/groonga/command/parser/command/groonga-command-filter.rb,
lib/groonga/command/parser/command/groonga-command-logicalify.rb,
lib/groonga/command/parser/command/groonga-command-convert-format.rb

Defined Under Namespace

Modules: Command Classes: CommandLineSplitter, Error, LoadValuesParser

Constant Summary collapse

VERSION =
"1.1.6"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Parser

Returns a new instance of Parser.



126
127
128
129
130
# File 'lib/groonga/command/parser.rb', line 126

def initialize(options={})
  @need_original_source = options.fetch(:need_original_source, true)
  reset
  initialize_hooks
end

Class Method Details

.parse(data) ⇒ Groonga::Command .parse(data, &block) ⇒ Groonga::Command

parses groonga command or HTTP (starts with “/d/”) command.

Overloads:



48
49
50
51
52
53
54
# File 'lib/groonga/command/parser.rb', line 48

def parse(data, &block)
  if block_given?
    event_parse(data, &block)
  else
    stand_alone_parse(data)
  end
end

Instance Method Details

#<<(chunk) ⇒ Object

Streaming parsing command.

Parameters:

  • chunk (String)

    parsed chunk of command.



134
135
136
137
138
# File 'lib/groonga/command/parser.rb', line 134

def <<(chunk)
  @buffer << chunk
  @buffer.force_encoding("ASCII-8BIT")
  consume_buffer
end

#finishObject

Finishes parsing. If Parser is loading values specified “load” command, this method raises Error.



142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# File 'lib/groonga/command/parser.rb', line 142

def finish
  if @loading
    original_source = @command.original_source
    if original_source
      last_line = original_source.lines.to_a.last
    else
      last_line = ""
    end
    raise Error.new("not completed", last_line, "")
  else
    catch do |tag|
      parse_line(@buffer)
    end
  end
end

#on_command(command) ⇒ Object #on_command({|command| }) ⇒ Object



160
161
162
163
164
165
166
# File 'lib/groonga/command/parser.rb', line 160

def on_command(*arguments, &block)
  if block_given?
    @on_command_hook = block
  else
    @on_command_hook.call(*arguments) if @on_command_hook
  end
end

#on_comment(comment) ⇒ Object #on_comment({|comment| }) ⇒ Object



210
211
212
213
214
215
216
# File 'lib/groonga/command/parser.rb', line 210

def on_comment(*arguments, &block)
  if block_given?
    @on_comment_hook = block
  else
    @on_comment_hook.call(*arguments) if @on_comment_hook
  end
end

#on_load_columns(command) ⇒ Object #on_load_columns({|command| }) ⇒ Object



180
181
182
183
184
185
186
# File 'lib/groonga/command/parser.rb', line 180

def on_load_columns(*arguments, &block)
  if block_given?
    @on_load_columns_hook = block
  else
    @on_load_columns_hook.call(*arguments) if @on_load_columns_hook
  end
end

#on_load_complete(command) ⇒ Object #on_load_complete(command) ⇒ Object



200
201
202
203
204
205
206
# File 'lib/groonga/command/parser.rb', line 200

def on_load_complete(*arguments, &block)
  if block_given?
    @on_load_complete_hook = block
  else
    @on_load_complete_hook.call(*arguments) if @on_load_complete_hook
  end
end

#on_load_start(command) ⇒ Object #on_load_start({|command| }) ⇒ Object



170
171
172
173
174
175
176
# File 'lib/groonga/command/parser.rb', line 170

def on_load_start(*arguments, &block)
  if block_given?
    @on_load_start_hook = block
  else
    @on_load_start_hook.call(*arguments) if @on_load_start_hook
  end
end

#on_load_value(command) ⇒ Object #on_load_value({|command| }) ⇒ Object



190
191
192
193
194
195
196
# File 'lib/groonga/command/parser.rb', line 190

def on_load_value(*arguments, &block)
  if block_given?
    @on_load_value_hook = block
  else
    @on_load_value_hook.call(*arguments) if @on_load_value_hook
  end
end