def find_kanji(args={})
raise ArgumentError, 'args must be Hash or nil' unless args.kind_of?(Hash) or args.nil?
stroke_count = args[:stroke]
raise ArgumentError, ':stroke must be Integer or nil' unless stroke_count.kind_of?(Integer) or stroke_count.nil?
radical = args[:radical]
radical = [radical] if radical.kind_of?(String)
raise ArgumentError, ':radical must be Array, String, or nil' unless radical.kind_of?(Array) or radical.nil?
kanji = []
if stroke_count
kanji = @db.execute("select kanji from kanji where stroke_count=?",
stroke_count).flatten
else
kanji = @db.execute("select kanji from kanji").flatten
end
if radical
radical.each {|r|
raise ArgumentError, ':radical must contain radicals' unless is_radical?(r)
new_r = @db.execute("select kanji from mapping where radical=?",
r).flatten
kanji &= new_r
}
end
kanji
end