logaling-command 0.1.9 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +4 -0
- data/lib/logaling/command/application.rb +2 -1
- data/lib/logaling/command/version.rb +1 -1
- data/lib/logaling/glossary.rb +7 -3
- data/lib/logaling/glossary_db.rb +22 -1
- data/lib/logaling/glossary_sources/base.rb +16 -0
- data/lib/logaling/repository.rb +10 -3
- data/spec/logaling/repository_spec.rb +28 -1
- metadata +2 -2
data/CHANGES
CHANGED
@@ -262,6 +262,7 @@ module Logaling::Command
|
|
262
262
|
method_option "no-pager", type: :boolean, default: false
|
263
263
|
method_option "no-color", type: :boolean, default: false
|
264
264
|
method_option "dictionary", type: :boolean, default: false, aliases: "--dict"
|
265
|
+
method_option "fixed", type: :boolean, default: false
|
265
266
|
def lookup(source_term)
|
266
267
|
check_logaling_home_exists
|
267
268
|
@repository.index
|
@@ -272,7 +273,7 @@ module Logaling::Command
|
|
272
273
|
else
|
273
274
|
glossary = nil
|
274
275
|
end
|
275
|
-
terms = @repository.lookup(source_term, glossary, options
|
276
|
+
terms = @repository.lookup(source_term, glossary, options)
|
276
277
|
unless terms.empty?
|
277
278
|
run_pager
|
278
279
|
terms.each_with_index do |term, i|
|
data/lib/logaling/glossary.rb
CHANGED
@@ -101,12 +101,15 @@ module Logaling
|
|
101
101
|
[@name, @source_language, @target_language].join('.')
|
102
102
|
end
|
103
103
|
|
104
|
-
|
105
|
-
|
104
|
+
def index!
|
105
|
+
index(force: true)
|
106
|
+
end
|
107
|
+
|
108
|
+
def index(options = { force: false })
|
106
109
|
Logaling::GlossaryDB.open(@project.glossary_db_path, "utf8") do |db|
|
107
110
|
db.recreate_table
|
108
111
|
glossary_sources.each do |glossary_source|
|
109
|
-
|
112
|
+
if !db.glossary_source_exist?(glossary_source) || options[:force] == true
|
110
113
|
puts "now index #{@name}..."
|
111
114
|
db.index_glossary_source(glossary_source)
|
112
115
|
end
|
@@ -119,6 +122,7 @@ module Logaling
|
|
119
122
|
end
|
120
123
|
end
|
121
124
|
|
125
|
+
private
|
122
126
|
def glossary_sources
|
123
127
|
glob_condition = SUPPORTED_FILE_TYPE.map do |type|
|
124
128
|
file_name = [self.to_s, type].join('.')
|
data/lib/logaling/glossary_db.rb
CHANGED
@@ -63,8 +63,10 @@ module Logaling
|
|
63
63
|
|
64
64
|
def deindex_glossary(glossary, glossary_source)
|
65
65
|
delete_translations_by_glossary_source(glossary_source.source_path)
|
66
|
-
delete_glossary(glossary.name)
|
67
66
|
delete_glossary_source(glossary_source.source_path)
|
67
|
+
unless glossary_source_of_the_same_project_exist?(glossary_source)
|
68
|
+
delete_glossary(glossary.name)
|
69
|
+
end
|
68
70
|
end
|
69
71
|
|
70
72
|
def deindex_glossary_source(glossary_source)
|
@@ -437,5 +439,24 @@ module Logaling
|
|
437
439
|
# use online index if LOGALING_OFFLINE_INDEX=no
|
438
440
|
ENV["LOGALING_OFFLINE_INDEX"] != "no"
|
439
441
|
end
|
442
|
+
|
443
|
+
def glossary_source_of_the_same_project_exist?(glossary_source)
|
444
|
+
glossary_source_num = 0
|
445
|
+
get_all_glossary_sources.each do |glossary_source_taken|
|
446
|
+
if glossary_source.belongs_to_personal? && glossary_source_taken.belongs_to_personal?
|
447
|
+
if glossary_source.glossary_name == glossary_source_taken.glossary_name
|
448
|
+
glossary_source_num = 1
|
449
|
+
break
|
450
|
+
end
|
451
|
+
elsif glossary_source.belongs_to_project? && glossary_source_taken.belongs_to_project?
|
452
|
+
if glossary_source.project_name == glossary_source_taken.project_name &&
|
453
|
+
glossary_source.glossary_name == glossary_source_taken.glossary_name
|
454
|
+
glossary_source_num = 1
|
455
|
+
break
|
456
|
+
end
|
457
|
+
end
|
458
|
+
end
|
459
|
+
glossary_source_num > 0 ? true : false
|
460
|
+
end
|
440
461
|
end
|
441
462
|
end
|
@@ -37,6 +37,22 @@ module Logaling
|
|
37
37
|
def mtime
|
38
38
|
File.mtime(@source_path)
|
39
39
|
end
|
40
|
+
|
41
|
+
def belongs_to_personal?
|
42
|
+
@source_path =~ /.+\/personal\/.+/ ? true : false
|
43
|
+
end
|
44
|
+
|
45
|
+
def belongs_to_project?
|
46
|
+
@source_path =~ /.+\/projects\/.+/ ? true : false
|
47
|
+
end
|
48
|
+
|
49
|
+
def glossary_name
|
50
|
+
File.basename(@source_path).split(".", 2)[0]
|
51
|
+
end
|
52
|
+
|
53
|
+
def project_name
|
54
|
+
@source_path =~ /.+\/projects\/([^\/]+).+/ ? $1 : nil
|
55
|
+
end
|
40
56
|
end
|
41
57
|
end
|
42
58
|
end
|
data/lib/logaling/repository.rb
CHANGED
@@ -82,18 +82,25 @@ module Logaling
|
|
82
82
|
raise Logaling::CommandFailed, "Failed import_tmx #{glossary_source.class.name} to #{cache_path}."
|
83
83
|
end
|
84
84
|
|
85
|
-
def lookup(source_term, glossary,
|
85
|
+
def lookup(source_term, glossary, options={})
|
86
86
|
raise Logaling::GlossaryDBNotFound unless File.exist?(logaling_db_home)
|
87
87
|
|
88
88
|
terms = []
|
89
89
|
Logaling::GlossaryDB.open(logaling_db_home, "utf8") do |db|
|
90
|
-
if dictionary
|
90
|
+
if options['dictionary']
|
91
91
|
terms = db.lookup_dictionary(source_term)
|
92
92
|
else
|
93
93
|
terms = db.lookup(source_term, glossary)
|
94
94
|
end
|
95
95
|
end
|
96
|
-
terms
|
96
|
+
options['fixed'] ? except_annotation(terms) : terms
|
97
|
+
end
|
98
|
+
|
99
|
+
def except_annotation(terms)
|
100
|
+
fixed_terms = terms.reject do |term|
|
101
|
+
Logaling::Glossary::SUPPORTED_ANNOTATION.any? {|ann| term[:note].index(ann) }
|
102
|
+
end
|
103
|
+
fixed_terms
|
97
104
|
end
|
98
105
|
|
99
106
|
def projects
|
@@ -54,7 +54,8 @@ module Logaling
|
|
54
54
|
glossary.add("ゆーざ", "test user-logaling test text", "")
|
55
55
|
File.stub!(:mtime).and_return(Time.now - 1)
|
56
56
|
repository.index
|
57
|
-
|
57
|
+
options = {"dictionary"=>true}
|
58
|
+
@terms = repository.lookup("user-logaling", glossary, options)
|
58
59
|
@result = [{
|
59
60
|
:glossary_name=>"spec",
|
60
61
|
:source_language=>"en",
|
@@ -89,6 +90,32 @@ module Logaling
|
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
93
|
+
context 'with fixed option' do
|
94
|
+
let(:annotation_word) { Logaling::Glossary::SUPPORTED_ANNOTATION.first }
|
95
|
+
before do
|
96
|
+
glossary.add("user", "ユーザ", "ユーザーではない")
|
97
|
+
glossary.add("user-logaling", "ユーザ", "ユーザーと迷い中 #{annotation_word}")
|
98
|
+
File.stub!(:mtime).and_return(Time.now - 1)
|
99
|
+
repository.index
|
100
|
+
options = {"fixed" => true}
|
101
|
+
@terms = repository.lookup("user", glossary, options)
|
102
|
+
@result = [{
|
103
|
+
:glossary_name=>"spec",
|
104
|
+
:source_language=>"en",
|
105
|
+
:target_language=>"ja",
|
106
|
+
:source_term=>"user",
|
107
|
+
:snipped_source_term=>["", {:keyword=>"user"}],
|
108
|
+
:target_term=>"ユーザ",
|
109
|
+
:snipped_target_term=>["ユーザ"],
|
110
|
+
:note=>"ユーザーではない"}]
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'succeed at find by term without include annotation' do
|
114
|
+
@terms.should == @result
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
92
119
|
context 'when tsv file as glossary exists' do
|
93
120
|
let(:tsv_path) { glossary_source_path.sub(/yml$/, 'tsv') }
|
94
121
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: logaling-command
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2012-
|
16
|
+
date: 2012-10-29 00:00:00.000000000 Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: thor
|