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.4"

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Parser

Returns a new instance of Parser.



120
121
122
123
124
# File 'lib/groonga/command/parser.rb', line 120

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:



42
43
44
45
46
47
48
# File 'lib/groonga/command/parser.rb', line 42

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.



128
129
130
131
132
# File 'lib/groonga/command/parser.rb', line 128

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.



136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# File 'lib/groonga/command/parser.rb', line 136

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



154
155
156
157
158
159
160
# File 'lib/groonga/command/parser.rb', line 154

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



204
205
206
207
208
209
210
# File 'lib/groonga/command/parser.rb', line 204

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



174
175
176
177
178
179
180
# File 'lib/groonga/command/parser.rb', line 174

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



194
195
196
197
198
199
200
# File 'lib/groonga/command/parser.rb', line 194

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



164
165
166
167
168
169
170
# File 'lib/groonga/command/parser.rb', line 164

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



184
185
186
187
188
189
190
# File 'lib/groonga/command/parser.rb', line 184

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