class Groonga::Command::Parser::Command::GroongaCommandLogicalify
Public Class Methods
new()
click to toggle source
# File lib/groonga/command/parser/command/groonga-command-logicalify.rb, line 26 def initialize @logical_table = nil @shard_key = nil end
Public Instance Methods
run(argv=ARGV)
click to toggle source
# File lib/groonga/command/parser/command/groonga-command-logicalify.rb, line 31 def run(argv=ARGV) begin parse_options!(argv) rescue OptionParser::ParseError puts($!.message) return false end input_paths = argv if input_paths.empty? logicalify($stdin) else input_paths.each do |input_path| File.open(input_path) do |input| logicalify(input) end end end true end
Private Instance Methods
create_logical_select_command(arguments)
click to toggle source
# File lib/groonga/command/parser/command/groonga-command-logicalify.rb, line 126 def create_logical_select_command(arguments) name = "logical_select" command_class = ::Groonga::Command.find(name) command_class.new(name, arguments) end
format_time(time)
click to toggle source
# File lib/groonga/command/parser/command/groonga-command-logicalify.rb, line 139 def format_time(time) time.strftime("%Y/%m/%d %H:%M:%S") end
logicalify(input)
click to toggle source
# File lib/groonga/command/parser/command/groonga-command-logicalify.rb, line 82 def logicalify(input) parser = Parser.new parser.on_command do |command| logicalify_command(command) end input.each_line do |line| parser << line end end
logicalify_arguments(arguments)
click to toggle source
# File lib/groonga/command/parser/command/groonga-command-logicalify.rb, line 132 def logicalify_arguments(arguments) arguments = arguments.merge(:logical_table => @logical_table, :shard_key => @shard_key) arguments.delete(:table) arguments end
logicalify_command(command)
click to toggle source
# File lib/groonga/command/parser/command/groonga-command-logicalify.rb, line 92 def logicalify_command(command) case command.name when "select" logicalify_command_select(command) end end
logicalify_command_select(command)
click to toggle source
# File lib/groonga/command/parser/command/groonga-command-logicalify.rb, line 99 def logicalify_command_select(command) min = nil max = nil case command[:table] when /\A#{Regexp.escape(@logical_table)}_(\d{4})(\d{2})(\d{2})\z/ year = $1.to_i month = $2.to_i day = $3.to_i min = Time.local(year, month, day) max = min + (60 * 60 * 24) else return end arguments = logicalify_arguments(command.arguments) arguments[:min] = format_time(min) arguments[:min_border] = "include" arguments[:max] = format_time(max) arguments[:max_border] = "exclude" logical_select = create_logical_select_command(arguments) if command.uri_format? puts(logical_select.to_uri_format) else puts(logical_select.to_command_format) end end
parse_options!(argv)
click to toggle source
# File lib/groonga/command/parser/command/groonga-command-logicalify.rb, line 54 def parse_options!(argv) option_parser = OptionParser.new option_parser.banner += " INPUT_PATH1 INPUT_PATH2 ..." option_parser.version = VERSION option_parser.on("--logical-table=TABLE", "Use TABLE as logical table name", "[#{@logical_table}]") do |logical_table| @logical_table = logical_table end option_parser.on("--shard-key=COLUMN", "Use COLUMN as shard key", "[#{@shard_key}]") do |shard_key| @shard_key = shard_key end option_parser.parse!(argv) if @logical_table.nil? raise OptionParser::ParseError, "--logical-table is missing" end if @shard_key.nil? raise OptionParser::ParseError, "--shard-key is missing" end end