null+****@clear*****
null+****@clear*****
Tue May 22 19:08:00 JST 2012
SUZUKI Miho 2012-05-22 19:08:00 +0900 (Tue, 22 May 2012) New Revision: 420d29085530ca7255bdd1b95e6c577ae88a4f19 Log: get glossary data from db for export command Modified files: lib/logaling/glossary_db.rb lib/logaling/repository.rb spec/logaling/repository_spec.rb Modified: lib/logaling/glossary_db.rb (+16 -0) =================================================================== --- lib/logaling/glossary_db.rb 2012-05-22 11:01:40 +0900 (53a8395) +++ lib/logaling/glossary_db.rb 2012-05-22 19:08:00 +0900 (58de8d5) @@ -155,6 +155,22 @@ module Logaling records_selected.expression.close if records_selected end + def export(glossary_source) + records_selected = Groonga["translations"].select do |record| + conditions = [record.glossary == glossary_source.glossary] + conditions << (record.source_language =~ glossary_source.source_language) if glossary_source.source_language + conditions << (record.target_language =~ glossary_source.target_language) if glossary_source.target_language + conditions + end + records = records_selected.sort([ + {:key=>"source_term", :order=>'ascending'}, + {:key=>"target_term", :order=>'ascending'}]) + + struct_result(records) + ensure + records_selected.expression.close if records_selected + end + def translation_list(glossary_source) records_raw = Groonga["translations"].select do |record| [ Modified: lib/logaling/repository.rb (+10 -0) =================================================================== --- lib/logaling/repository.rb 2012-05-22 11:01:40 +0900 (ae0de70) +++ lib/logaling/repository.rb 2012-05-22 19:08:00 +0900 (7568325) @@ -67,6 +67,16 @@ module Logaling raise Logaling::CommandFailed, "Failed import_tmx #{glossary.class.name} to #{cache_path}." end + def export(glossary_source) + raise Logaling::GlossaryDBNotFound unless File.exist?(logaling_db_home) + + terms = [] + Logaling::GlossaryDB.open(logaling_db_home, "utf8") do |db| + terms = db.export(glossary_source) + end + terms + end + def lookup(source_term, glossary_source, dictionary=false) raise Logaling::GlossaryDBNotFound unless File.exist?(logaling_db_home) Modified: spec/logaling/repository_spec.rb (+52 -0) =================================================================== --- spec/logaling/repository_spec.rb 2012-05-22 11:01:40 +0900 (ecd6b25) +++ spec/logaling/repository_spec.rb 2012-05-22 19:08:00 +0900 (6252114) @@ -32,6 +32,58 @@ module Logaling FileUtils.mkdir_p(File.dirname(glossary_path)) end + describe '#export' do + before do + end + + context 'with one or more term exists in glossary' do + before do + glossary.add("test-export", "エクスポートテスト用", "テスト用語") + File.stub!(:mtime).and_return(Time.now - 1) + repository.index + @terms = repository.export(glossary) + end + + it 'succeed at get export terms' do + @terms.size.should == 1 + end + end + + context 'with no term exists in glossary' do + before do + File.stub!(:mtime).and_return(Time.now - 1) + repository.index + @terms = repository.export(glossary) + end + + it 'returns empty term' do + @terms.size.should == 0 + end + end + + context 'when csv file as glosary exists' do + let(:csv_path) { File.join(File.dirname(glossary_path), "spec.en.ja.csv") } + + before do + FileUtils.mkdir_p(File.dirname(glossary_path)) + FileUtils.touch(csv_path) + File.open(csv_path, "w"){|f| f.puts "test_logaling,テスト"} + glossary.add("test-export", "エクスポートテスト用", "テスト用語") + File.stub!(:mtime).and_return(Time.now - 1) + repository.index + @terms = repository.export(glossary) + end + + it 'returns merged glossary csv and yaml' do + @terms.size.should == 2 + end + + after do + FileUtils.remove_entry_secure(csv_path, true) + end + end + end + describe '#lookup' do context 'with arguments show existing bilingual pair' do before do