class GroongaSynonym::PGroongaGenerator

Public Class Methods

new(source, table, term_column, synonyms_column, output: $stdout) click to toggle source
# File lib/groonga-synonym/pgroonga-generator.rb, line 20
def initialize(source,
               table,
               term_column,
               synonyms_column,
               output: $stdout)
  @source = source
  @table = table
  @term_column = term_column
  @synonyms_column = synonyms_column
  @output = output
end

Public Instance Methods

generate() click to toggle source
# File lib/groonga-synonym/pgroonga-generator.rb, line 32
def generate
  @output.print("INSERT INTO #{@table} ")
  @output.print("(#{@term_column}, #{@synonyms_column}) ")
  @output.print("VALUES")
  i = 0
  @source.each do |term, synonyms|
    i += 1
    @output.print(",") unless i == 1
    @output.print("\n")
    formatted_synonyms = synonyms.collect do |synonym|
      escape(synonym.to_groonga)
    end
    @output.print("  (#{escape(term)}, ARRAY[")
    @output.print(formatted_synonyms.join(", "))
    @output.print("])")
  end
  @output.print(";\n")
end

Private Instance Methods

escape(string) click to toggle source
# File lib/groonga-synonym/pgroonga-generator.rb, line 52
def escape(string)
  escaped = "'"
  escaped << string.gsub("'", "''")
  escaped << "'"
  escaped
end