logaling-command 0.0.9 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile +16 -0
- data/README.md +28 -0
- data/bin/loga +15 -0
- data/lib/logaling/command.rb +82 -19
- data/lib/logaling/external_glossaries/debian_project.rb +15 -0
- data/lib/logaling/external_glossaries/gnome_project.rb +15 -0
- data/lib/logaling/external_glossaries/postgresql_manual.rb +15 -0
- data/lib/logaling/external_glossary.rb +15 -0
- data/lib/logaling/glossary.rb +16 -0
- data/lib/logaling/glossary_db.rb +15 -0
- data/lib/logaling/repository.rb +52 -4
- data/lib/logaling.rb +15 -0
- data/logaling-command.gemspec +17 -0
- data/spec/logaling/command_spec.rb +97 -23
- data/spec/logaling/glossary_spec.rb +39 -23
- data/spec/logaling/repository_spec.rb +41 -8
- data/spec/spec_helper.rb +15 -0
- metadata +28 -16
data/Gemfile
CHANGED
@@ -1,3 +1,19 @@
|
|
1
|
+
#
|
2
|
+
# Copyright (C) 2011 Miho SUZUKI
|
3
|
+
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
1
17
|
source "http://rubygems.org"
|
2
18
|
|
3
19
|
# Specify your gem's dependencies in logaling-command.gemspec
|
data/README.md
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
## logaling-command
|
2
|
+
|
3
|
+
[logaling-command](http://logaling.github.com) is a CLI for managing bilingual glossary.
|
4
|
+
You can add/update/delete terms to your glossary, and search glossaries at once.
|
5
|
+
|
6
|
+
### To install:
|
7
|
+
|
8
|
+
% gem install logaling-command
|
9
|
+
|
10
|
+
### Usage:
|
11
|
+
|
12
|
+
Create new glossary:
|
13
|
+
|
14
|
+
% loga new my_glossary en ja
|
15
|
+
|
16
|
+
Add term to glossary:
|
17
|
+
|
18
|
+
% loga add developer 開発者
|
19
|
+
|
20
|
+
Lookup glosasry:
|
21
|
+
|
22
|
+
% loga lookup develop<br/>
|
23
|
+
developer ソフトウェア開発者 (my_glossary)
|
24
|
+
|
25
|
+
### License
|
26
|
+
|
27
|
+
GNU GENERAL PUBLIC LICENSE Version 3. See COPYING.<br/>
|
28
|
+
(Miho Suzuki has a right to change the license including contributed patches.)
|
data/bin/loga
CHANGED
@@ -1,4 +1,19 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2
17
|
|
3
18
|
lib = File.expand_path(File.dirname(__FILE__) + '/../lib')
|
4
19
|
$LOAD_PATH.unshift(lib) if File.directory?(lib) && !$LOAD_PATH.include?(lib)
|
data/lib/logaling/command.rb
CHANGED
@@ -1,4 +1,19 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2
17
|
|
3
18
|
require 'thor'
|
4
19
|
require 'rainbow'
|
@@ -7,7 +22,7 @@ require "logaling/glossary"
|
|
7
22
|
require "logaling/external_glossary"
|
8
23
|
|
9
24
|
class Logaling::Command < Thor
|
10
|
-
VERSION = "0.0
|
25
|
+
VERSION = "0.1.0"
|
11
26
|
LOGALING_CONFIG = '.logaling'
|
12
27
|
|
13
28
|
map '-a' => :add,
|
@@ -30,11 +45,10 @@ class Logaling::Command < Thor
|
|
30
45
|
def new(project_name, source_language, target_language=nil)
|
31
46
|
unless File.exist?(LOGALING_CONFIG)
|
32
47
|
FileUtils.mkdir_p(File.join(LOGALING_CONFIG, "glossary"))
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
48
|
+
config = {"glossary" => project_name, "source-language" => source_language}
|
49
|
+
config["target-language"] = target_language if target_language
|
50
|
+
write_config(File.join(LOGALING_CONFIG, "config"), config)
|
51
|
+
|
38
52
|
register unless options["no-register"]
|
39
53
|
say "Successfully created #{LOGALING_CONFIG}"
|
40
54
|
else
|
@@ -85,6 +99,23 @@ class Logaling::Command < Thor
|
|
85
99
|
say "#{config['glossary']} is not yet registered."
|
86
100
|
end
|
87
101
|
|
102
|
+
desc 'config [KEY] [VALUE] [--global(optional)]', 'Set config.'
|
103
|
+
method_option "global", type: :boolean, default: false
|
104
|
+
def config(key, value)
|
105
|
+
support_keys = %w(glossary source-language target-language)
|
106
|
+
raise Logaling::CommandFailed, "#{key} is unsupported option" unless support_keys.include?(key)
|
107
|
+
|
108
|
+
config_path = options["global"] ? File.join(LOGALING_HOME, "config") : File.join(find_dotfile, "config")
|
109
|
+
FileUtils.touch(config_path) unless File.exist?(config_path)
|
110
|
+
|
111
|
+
config = load_config(config_path)
|
112
|
+
config = merge_options({key => value}, config)
|
113
|
+
write_config(config_path, config)
|
114
|
+
say "Successfully set config."
|
115
|
+
rescue Logaling::CommandFailed => e
|
116
|
+
say e.message
|
117
|
+
end
|
118
|
+
|
88
119
|
desc 'add [SOURCE TERM] [TARGET TERM] [NOTE(optional)]', 'Add term to glossary.'
|
89
120
|
def add(source_term, target_term, note='')
|
90
121
|
glossary.add(source_term, target_term, note)
|
@@ -122,14 +153,16 @@ class Logaling::Command < Thor
|
|
122
153
|
terms = repository.lookup(source_term, config["source_language"], config["target_language"], config["glossary"])
|
123
154
|
|
124
155
|
unless terms.empty?
|
156
|
+
max_str_size = terms.map{|term| term[:source_term].size}.sort.last
|
125
157
|
terms.each do |term|
|
126
|
-
|
127
|
-
|
128
|
-
if repository.
|
158
|
+
target_string = "#{term[:target_term].bright}"
|
159
|
+
target_string << "\t# #{term[:note]}" unless term[:note].empty?
|
160
|
+
if repository.glossary_counts > 1
|
129
161
|
color = (term[:name] == config["glossary"]) ? :green : :cyan
|
130
|
-
|
162
|
+
target_string << "\t(#{term[:name]})".color(color)
|
131
163
|
end
|
132
|
-
|
164
|
+
source_string = term[:source_term].split(source_term).insert(1, source_term.dup.bright).join
|
165
|
+
printf(" %-#{max_str_size+10}s %s\n", source_string, target_string)
|
133
166
|
end
|
134
167
|
else
|
135
168
|
"source-term <#{source_term}> not found"
|
@@ -168,10 +201,13 @@ class Logaling::Command < Thor
|
|
168
201
|
end
|
169
202
|
|
170
203
|
def load_config_and_merge_options(required={})
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
204
|
+
config_list ||= {}
|
205
|
+
find_config.each{|type, path| config_list[type] = load_config(path)}
|
206
|
+
global_config = config_list["global_config"] ? config_list["global_config"] : {}
|
207
|
+
project_config = config_list["project_config"] ? config_list["project_config"] : {}
|
208
|
+
|
209
|
+
config = merge_options(project_config, global_config)
|
210
|
+
config = merge_options(options, config)
|
175
211
|
|
176
212
|
required.each do |required_option, message|
|
177
213
|
raise(Logaling::CommandFailed, message) unless config[required_option]
|
@@ -180,15 +216,29 @@ class Logaling::Command < Thor
|
|
180
216
|
config
|
181
217
|
end
|
182
218
|
|
219
|
+
def merge_options(options, secondary_options)
|
220
|
+
config ||={}
|
221
|
+
config["glossary"] = options["glossary"] ? options["glossary"] : secondary_options["glossary"]
|
222
|
+
config["source-language"] = options["source-language"] ? options["source-language"] : secondary_options["source-language"]
|
223
|
+
config["target-language"] = options["target-language"] ? options["target-language"] : secondary_options["target-language"]
|
224
|
+
config
|
225
|
+
end
|
226
|
+
|
183
227
|
def find_config
|
184
|
-
|
228
|
+
config ||= {}
|
229
|
+
config["project_config"] = File.join(find_dotfile, 'config')
|
230
|
+
config["global_config"] = global_config_path if global_config_path
|
231
|
+
config
|
185
232
|
rescue Logaling::CommandFailed
|
186
|
-
|
233
|
+
config ||= {}
|
234
|
+
config["project_config"] = repository.config_path if repository.config_path
|
235
|
+
config["global_config"] = global_config_path if global_config_path
|
236
|
+
config
|
187
237
|
end
|
188
238
|
|
189
|
-
def load_config
|
239
|
+
def load_config(config_path=nil)
|
190
240
|
config ||= {}
|
191
|
-
if config_path
|
241
|
+
if config_path
|
192
242
|
File.readlines(config_path).map{|l| l.chomp.split " "}.each do |option|
|
193
243
|
key = option[0].sub(/^[\-]{2}/, "")
|
194
244
|
value = option[1]
|
@@ -215,4 +265,17 @@ class Logaling::Command < Thor
|
|
215
265
|
end
|
216
266
|
end
|
217
267
|
end
|
268
|
+
|
269
|
+
def global_config_path
|
270
|
+
path = File.join(LOGALING_HOME, "config")
|
271
|
+
File.exist?(path) ? path : nil
|
272
|
+
end
|
273
|
+
|
274
|
+
def write_config(config_path, config)
|
275
|
+
File.open(config_path, 'w') do |fp|
|
276
|
+
fp.puts "--glossary #{config['glossary']}" if config['glossary']
|
277
|
+
fp.puts "--source-language #{config['source-language']}" if config['source-language']
|
278
|
+
fp.puts "--target-language #{config['target-language']}" if config['target-language']
|
279
|
+
end
|
280
|
+
end
|
218
281
|
end
|
@@ -1,3 +1,18 @@
|
|
1
|
+
# Copyright (C) 2011 Miho SUZUKI
|
2
|
+
#
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
1
16
|
require 'open-uri'
|
2
17
|
require 'nokogiri'
|
3
18
|
|
@@ -1,3 +1,18 @@
|
|
1
|
+
# Copyright (C) 2011 Miho SUZUKI
|
2
|
+
#
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
1
16
|
require 'open-uri'
|
2
17
|
require 'nokogiri'
|
3
18
|
|
@@ -1,3 +1,18 @@
|
|
1
|
+
# Copyright (C) 2011 Miho SUZUKI
|
2
|
+
#
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
1
16
|
require 'open-uri'
|
2
17
|
require 'nokogiri'
|
3
18
|
|
@@ -1,3 +1,18 @@
|
|
1
|
+
# Copyright (C) 2011 Miho SUZUKI
|
2
|
+
#
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
1
16
|
require 'active_support/inflector'
|
2
17
|
|
3
18
|
class Logaling::ExternalGlossary
|
data/lib/logaling/glossary.rb
CHANGED
@@ -1,4 +1,20 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
2
18
|
require 'psych'
|
3
19
|
require "yaml"
|
4
20
|
require "fileutils"
|
data/lib/logaling/glossary_db.rb
CHANGED
@@ -1,4 +1,19 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2
17
|
|
3
18
|
require 'psych'
|
4
19
|
require "yaml"
|
data/lib/logaling/repository.rb
CHANGED
@@ -1,4 +1,20 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
2
18
|
require "fileutils"
|
3
19
|
require "logaling/glossary_db"
|
4
20
|
|
@@ -53,6 +69,7 @@ module Logaling
|
|
53
69
|
end
|
54
70
|
|
55
71
|
def index
|
72
|
+
return if latest_index?
|
56
73
|
projects = Dir[File.join(@path, "projects", "*")]
|
57
74
|
|
58
75
|
Logaling::GlossaryDB.open(logaling_db_home, "utf8") do |db|
|
@@ -66,10 +83,12 @@ module Logaling
|
|
66
83
|
db.index_glossary(glossary, name, source_language, target_language)
|
67
84
|
end
|
68
85
|
end
|
86
|
+
|
87
|
+
FileUtils.touch(index_at_file)
|
69
88
|
end
|
70
89
|
|
71
|
-
def
|
72
|
-
|
90
|
+
def glossary_counts
|
91
|
+
[registered_projects, imported_glossaries].map(&:size).inject(&:+)
|
73
92
|
end
|
74
93
|
|
75
94
|
def config_path
|
@@ -78,9 +97,22 @@ module Logaling
|
|
78
97
|
end
|
79
98
|
|
80
99
|
private
|
100
|
+
def latest_index?
|
101
|
+
if File.exist?(index_at_file)
|
102
|
+
index_at = File.mtime(index_at_file)
|
103
|
+
all_glossary_files = [cache_path, registered_projects.map{|path| File.join(path, "glossary")}].flatten.map{|path| get_all_glossary_paths(path)}.flatten
|
104
|
+
unless Dir.glob(all_glossary_files).any?{|file| File.mtime(file) >= index_at }
|
105
|
+
true
|
106
|
+
else
|
107
|
+
false
|
108
|
+
end
|
109
|
+
else
|
110
|
+
false
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
81
114
|
def get_glossaries(path)
|
82
|
-
|
83
|
-
Dir.glob(glob_list).map do |file|
|
115
|
+
Dir.glob(get_all_glossary_paths(path)).map do |file|
|
84
116
|
name, source_language, target_language = File::basename(file, ".*").split(".")
|
85
117
|
[Glossary.load(file), name, source_language, target_language]
|
86
118
|
end
|
@@ -90,6 +122,10 @@ module Logaling
|
|
90
122
|
get_glossaries(File.join(path, "glossary"))
|
91
123
|
end
|
92
124
|
|
125
|
+
def get_all_glossary_paths(path)
|
126
|
+
%w(yml tsv csv).map{|type| File.join(path, "*.#{type}") }
|
127
|
+
end
|
128
|
+
|
93
129
|
def logaling_db_home
|
94
130
|
File.join(@path, "db")
|
95
131
|
end
|
@@ -101,5 +137,17 @@ module Logaling
|
|
101
137
|
def cache_path
|
102
138
|
File.join(@path, "cache")
|
103
139
|
end
|
140
|
+
|
141
|
+
def registered_projects
|
142
|
+
Dir[File.join(logaling_projects_path, "*")]
|
143
|
+
end
|
144
|
+
|
145
|
+
def imported_glossaries
|
146
|
+
Dir[File.join(cache_path, "*")]
|
147
|
+
end
|
148
|
+
|
149
|
+
def index_at_file
|
150
|
+
File.join(logaling_db_home, "index_at")
|
151
|
+
end
|
104
152
|
end
|
105
153
|
end
|
data/lib/logaling.rb
CHANGED
@@ -1,4 +1,19 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
2
17
|
|
3
18
|
require "logaling/command"
|
4
19
|
|
data/logaling-command.gemspec
CHANGED
@@ -1,4 +1,20 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
2
18
|
$:.push File.expand_path("../lib", __FILE__)
|
3
19
|
require "logaling/command"
|
4
20
|
|
@@ -22,6 +38,7 @@ Gem::Specification.new do |s|
|
|
22
38
|
s.add_runtime_dependency 'bundler', ['>= 1.0']
|
23
39
|
s.add_runtime_dependency 'rroonga', ['>= 1.3.0']
|
24
40
|
s.add_runtime_dependency 'rainbow'
|
41
|
+
s.add_runtime_dependency 'nokogiri'
|
25
42
|
s.add_runtime_dependency 'active_support'
|
26
43
|
|
27
44
|
s.add_development_dependency 'rake'
|
@@ -1,4 +1,20 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
2
18
|
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
3
19
|
|
4
20
|
describe Logaling::Command do
|
@@ -159,6 +175,53 @@ describe Logaling::Command do
|
|
159
175
|
end
|
160
176
|
end
|
161
177
|
|
178
|
+
describe '#config' do
|
179
|
+
let(:project_config) { File.join(Logaling::Command::LOGALING_CONFIG, 'config') }
|
180
|
+
let(:global_config) { File.join(LOGALING_HOME, 'config') }
|
181
|
+
|
182
|
+
subject { File.read(project_config) }
|
183
|
+
|
184
|
+
context 'with argument "target-language"' do
|
185
|
+
before do
|
186
|
+
command.new('spec', 'en')
|
187
|
+
command.config("target-language", "fr")
|
188
|
+
end
|
189
|
+
|
190
|
+
it 'should overwrite target-language' do
|
191
|
+
should include "--target-language fr"
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
195
|
+
context 'with argument "source-language"' do
|
196
|
+
before do
|
197
|
+
command.new('spec', 'en')
|
198
|
+
command.config("source-language", "ja")
|
199
|
+
end
|
200
|
+
|
201
|
+
it 'should overwrite source-language' do
|
202
|
+
should include "--source-language ja"
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
context 'with argument "--global" and "target-language"' do
|
207
|
+
before do
|
208
|
+
command.options = base_options.merge("global" => true)
|
209
|
+
command.new('spec', 'en')
|
210
|
+
command.config("target-language", "ja")
|
211
|
+
end
|
212
|
+
|
213
|
+
subject { File.read(global_config) }
|
214
|
+
|
215
|
+
it 'should create LOGALING_HOME/config and write target-language' do
|
216
|
+
should include "--target-language ja"
|
217
|
+
end
|
218
|
+
|
219
|
+
after do
|
220
|
+
FileUtils.remove_entry_secure(global_config, true)
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
162
225
|
describe '#add' do
|
163
226
|
before do
|
164
227
|
command.new('spec', 'en', 'ja')
|
@@ -195,6 +258,37 @@ describe Logaling::Command do
|
|
195
258
|
subject["note"].should == "備考"
|
196
259
|
end
|
197
260
|
end
|
261
|
+
|
262
|
+
context 'project config does not have TARGET-LANGUAGE' do
|
263
|
+
let(:command2) { Logaling::Command.new([], {}) }
|
264
|
+
let(:global_config) { File.join(LOGALING_HOME, 'config') }
|
265
|
+
before do
|
266
|
+
FileUtils.remove_entry_secure(Logaling::Command::LOGALING_CONFIG, true)
|
267
|
+
command2.new('spec2', 'en')
|
268
|
+
FileUtils.touch(global_config)
|
269
|
+
File.open(global_config, "w") do |f|
|
270
|
+
f.puts "--target-language fr"
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
context 'but global config have it' do
|
275
|
+
before do
|
276
|
+
command2.add('config test', '設定ファイルのテスト')
|
277
|
+
@stdout = capture(:stdout) {command2.lookup("config")}
|
278
|
+
end
|
279
|
+
|
280
|
+
it "should use global config's TARGET-LANGUAGE" do
|
281
|
+
@stdout.should include "config"
|
282
|
+
@stdout.should include "test"
|
283
|
+
@stdout.should include "設定ファイルのテスト"
|
284
|
+
@stdout.should include "(spec2)"
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
after do
|
289
|
+
FileUtils.remove_entry_secure(global_config, true)
|
290
|
+
end
|
291
|
+
end
|
198
292
|
end
|
199
293
|
|
200
294
|
describe "#update" do
|
@@ -244,29 +338,9 @@ describe Logaling::Command do
|
|
244
338
|
end
|
245
339
|
|
246
340
|
it 'succeed at find by term without command.index' do
|
247
|
-
@stdout.should include "spec
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
context 'only one project exist in LOGALING_HOME/projects' do
|
252
|
-
before do
|
253
|
-
Dir.should_receive(:entries).with(File.join(LOGALING_HOME, "projects")).and_return([".", "..", "spec"])
|
254
|
-
@stdout = capture(:stdout) {command.lookup("spec")}
|
255
|
-
end
|
256
|
-
|
257
|
-
it 'should not show glossary name' do
|
258
|
-
@stdout.should_not include "(spec)"
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
context 'some projects exist in LOGALING_HOME/projects' do
|
263
|
-
before do
|
264
|
-
Dir.should_receive(:entries).with(File.join(LOGALING_HOME, "projects")).and_return([".", "..", "spec", "spec2"])
|
265
|
-
@stdout = capture(:stdout) {command.lookup("spec")}
|
266
|
-
end
|
267
|
-
|
268
|
-
it 'should show glossary name' do
|
269
|
-
@stdout.should include "(spec)"
|
341
|
+
@stdout.should include "spec"
|
342
|
+
@stdout.should include "スペック"
|
343
|
+
@stdout.should include "# 備考"
|
270
344
|
end
|
271
345
|
end
|
272
346
|
end
|
@@ -1,4 +1,20 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
2
18
|
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
3
19
|
require "fileutils"
|
4
20
|
|
@@ -77,26 +93,26 @@ module Logaling
|
|
77
93
|
describe '#delete' do
|
78
94
|
context 'bilingual pair exists' do
|
79
95
|
before do
|
80
|
-
glossary.add("
|
81
|
-
glossary.add("
|
82
|
-
glossary.delete("
|
96
|
+
glossary.add("delete_logaling", "てすと1", "備考")
|
97
|
+
glossary.add("delete_logaling", "てすと2", "備考")
|
98
|
+
glossary.delete("delete_logaling", "てすと1")
|
83
99
|
repository.index
|
84
|
-
@result = repository.lookup("
|
100
|
+
@result = repository.lookup("delete_logaling", "en", "ja", project)
|
85
101
|
end
|
86
102
|
|
87
103
|
it 'should delete the bilingual pair' do
|
88
|
-
@result.should include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"
|
89
|
-
@result.should_not include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"
|
104
|
+
@result.should include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"delete_logaling", :target_term=>"てすと2", :note=>"備考"})
|
105
|
+
@result.should_not include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"delete_logaling", :target_term=>"てすと1", :note=>"備考"})
|
90
106
|
end
|
91
107
|
end
|
92
108
|
|
93
109
|
context 'bilingual pair does not exist' do
|
94
110
|
before do
|
95
|
-
glossary.add("
|
111
|
+
glossary.add("user_logaling", "ユーザ", "ユーザーではない")
|
96
112
|
end
|
97
113
|
|
98
114
|
it {
|
99
|
-
-> { glossary.delete("
|
115
|
+
-> { glossary.delete("user_logaling", "ユーザー") }.should raise_error(Logaling::TermError)
|
100
116
|
}
|
101
117
|
end
|
102
118
|
end
|
@@ -104,46 +120,46 @@ module Logaling
|
|
104
120
|
describe '#delete_all' do
|
105
121
|
context 'source_term not found' do
|
106
122
|
before do
|
107
|
-
glossary.add("
|
123
|
+
glossary.add("user_logaling", "ユーザ", "備考")
|
108
124
|
end
|
109
125
|
|
110
126
|
it {
|
111
|
-
-> { glossary.delete_all("
|
127
|
+
-> { glossary.delete_all("usr_logaling") }.should raise_error(Logaling::TermError)
|
112
128
|
}
|
113
129
|
end
|
114
130
|
|
115
131
|
context 'source_term found' do
|
116
132
|
context 'there is only 1 bilingual pair' do
|
117
133
|
before do
|
118
|
-
glossary.add("
|
119
|
-
glossary.delete_all("
|
134
|
+
glossary.add("user_logaling", "ユーザ", "備考")
|
135
|
+
glossary.delete_all("user_logaling")
|
120
136
|
repository.index
|
121
|
-
@result = repository.lookup("
|
137
|
+
@result = repository.lookup("user_logaling", "en", "ja", project)
|
122
138
|
end
|
123
139
|
|
124
140
|
it 'should delete the term' do
|
125
|
-
@result.should_not include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"
|
141
|
+
@result.should_not include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"user_logaling", :target_term=>"ユーザ", :note=>"備考"})
|
126
142
|
end
|
127
143
|
end
|
128
144
|
|
129
145
|
context 'there are more than 1 bilingual pair' do
|
130
146
|
before do
|
131
|
-
glossary.add("
|
132
|
-
glossary.add("
|
133
|
-
glossary.add("
|
134
|
-
glossary.add("
|
135
|
-
glossary.delete_all("
|
147
|
+
glossary.add("user_logaling", "ユーザ1", "備考")
|
148
|
+
glossary.add("user_logaling", "ユーザ2", "備考")
|
149
|
+
glossary.add("delete_logaling", "てすと1", "備考")
|
150
|
+
glossary.add("delete_logaling", "てすと2", "備考")
|
151
|
+
glossary.delete_all("delete_logaling", true)
|
136
152
|
repository.index
|
137
|
-
@result = repository.lookup("
|
153
|
+
@result = repository.lookup("delete_logaling", "en", "ja", project)
|
138
154
|
end
|
139
155
|
|
140
156
|
it {
|
141
|
-
-> { glossary.delete_all("
|
157
|
+
-> { glossary.delete_all("user_logaling") }.should raise_error(Logaling::TermError)
|
142
158
|
}
|
143
159
|
|
144
160
|
it "should delete terms when force option is true" do
|
145
|
-
@result.should_not include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"
|
146
|
-
@result.should_not include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"
|
161
|
+
@result.should_not include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"delete_loglaing", :target_term=>"てすと1", :note=>"備考"})
|
162
|
+
@result.should_not include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"delete_logaling", :target_term=>"てすと2", :note=>"備考"})
|
147
163
|
end
|
148
164
|
end
|
149
165
|
end
|
@@ -1,4 +1,20 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright (C) 2011 Miho SUZUKI
|
4
|
+
#
|
5
|
+
# This program is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU General Public License as published by
|
7
|
+
# the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# This program is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU General Public License
|
16
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17
|
+
|
2
18
|
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
3
19
|
require "fileutils"
|
4
20
|
|
@@ -41,7 +57,7 @@ module Logaling
|
|
41
57
|
subject {repository.lookup("user", "en", "ja", project)}
|
42
58
|
|
43
59
|
it 'succeed at find by term' do
|
44
|
-
should be_include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"user", :target_term=>"ユーザー", :note=>
|
60
|
+
should be_include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"user", :target_term=>"ユーザー", :note=>""})
|
45
61
|
end
|
46
62
|
|
47
63
|
after do
|
@@ -60,14 +76,14 @@ module Logaling
|
|
60
76
|
before do
|
61
77
|
FileUtils.mkdir_p(File.dirname(glossary_path))
|
62
78
|
FileUtils.touch(glossary_path)
|
63
|
-
glossary.add("
|
79
|
+
glossary.add("spec_logaling", "スペック", "備考")
|
64
80
|
repository.index
|
65
81
|
end
|
66
82
|
|
67
|
-
subject { logaling_db.open(db_home, "utf8"){|db| logaling_db.lookup("
|
83
|
+
subject { logaling_db.open(db_home, "utf8"){|db| logaling_db.lookup("spec_logaling")} }
|
68
84
|
|
69
85
|
it 'glossaries should be indexed' do
|
70
|
-
should be_include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"
|
86
|
+
should be_include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"spec_logaling", :target_term=>"スペック", :note=>"備考"})
|
71
87
|
end
|
72
88
|
|
73
89
|
after do
|
@@ -86,7 +102,7 @@ module Logaling
|
|
86
102
|
subject { logaling_db.open(db_home, "utf8"){|db| logaling_db.lookup("user")} }
|
87
103
|
|
88
104
|
it 'glossaries should be indexed' do
|
89
|
-
should
|
105
|
+
should be_include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"user", :target_term=>"ユーザ", :note=>''})
|
90
106
|
end
|
91
107
|
|
92
108
|
after do
|
@@ -98,14 +114,14 @@ module Logaling
|
|
98
114
|
before do
|
99
115
|
FileUtils.mkdir_p(File.dirname(glossary_path))
|
100
116
|
FileUtils.touch(csv_path)
|
101
|
-
File.open(csv_path, "w"){|f| f.puts "
|
117
|
+
File.open(csv_path, "w"){|f| f.puts "test_logaling,テスト"}
|
102
118
|
repository.index
|
103
119
|
end
|
104
120
|
|
105
|
-
subject { logaling_db.open(db_home, "utf8"){|db| logaling_db.lookup("
|
121
|
+
subject { logaling_db.open(db_home, "utf8"){|db| logaling_db.lookup("test_logaling")} }
|
106
122
|
|
107
123
|
it 'glossaries should be indexed' do
|
108
|
-
should
|
124
|
+
should be_include({:name=>"spec", :source_language=>"en", :target_language=>"ja", :source_term=>"test_logaling", :target_term=>"テスト", :note=>""})
|
109
125
|
end
|
110
126
|
|
111
127
|
after do
|
@@ -114,6 +130,23 @@ module Logaling
|
|
114
130
|
end
|
115
131
|
end
|
116
132
|
|
133
|
+
context 'when glossary exist but not modified' do
|
134
|
+
let(:index_at) { File.join(LOGALING_HOME, 'db', 'index_at') }
|
135
|
+
before do
|
136
|
+
glossary.add("index_test", "インデックスのテスト", "備考")
|
137
|
+
repository.index
|
138
|
+
@timestamp = File.mtime(index_at)
|
139
|
+
sleep(1)
|
140
|
+
repository.index
|
141
|
+
end
|
142
|
+
|
143
|
+
subject { File.mtime(index_at) }
|
144
|
+
|
145
|
+
it 'should not be indexed' do
|
146
|
+
should == @timestamp
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
117
150
|
after do
|
118
151
|
FileUtils.remove_entry_secure(File.join(LOGALING_HOME, 'projects', 'spec'), true)
|
119
152
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
# Copyright (C) 2011 Miho SUZUKI
|
2
|
+
#
|
3
|
+
# This program is free software: you can redistribute it and/or modify
|
4
|
+
# it under the terms of the GNU General Public License as published by
|
5
|
+
# the Free Software Foundation, either version 3 of the License, or
|
6
|
+
# (at your option) any later version.
|
7
|
+
#
|
8
|
+
# This program is distributed in the hope that it will be useful,
|
9
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
10
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
11
|
+
# GNU General Public License for more details.
|
12
|
+
#
|
13
|
+
# You should have received a copy of the GNU General Public License
|
14
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
15
|
+
|
1
16
|
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
|
2
17
|
require 'logaling'
|
3
18
|
|
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.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,11 +13,11 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2011-12-
|
16
|
+
date: 2011-12-20 00:00:00.000000000Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
19
|
name: thor
|
20
|
-
requirement: &
|
20
|
+
requirement: &2151838860 !ruby/object:Gem::Requirement
|
21
21
|
none: false
|
22
22
|
requirements:
|
23
23
|
- - ! '>='
|
@@ -25,10 +25,10 @@ dependencies:
|
|
25
25
|
version: 0.14.6
|
26
26
|
type: :runtime
|
27
27
|
prerelease: false
|
28
|
-
version_requirements: *
|
28
|
+
version_requirements: *2151838860
|
29
29
|
- !ruby/object:Gem::Dependency
|
30
30
|
name: bundler
|
31
|
-
requirement: &
|
31
|
+
requirement: &2151837280 !ruby/object:Gem::Requirement
|
32
32
|
none: false
|
33
33
|
requirements:
|
34
34
|
- - ! '>='
|
@@ -36,10 +36,10 @@ dependencies:
|
|
36
36
|
version: '1.0'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
|
-
version_requirements: *
|
39
|
+
version_requirements: *2151837280
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rroonga
|
42
|
-
requirement: &
|
42
|
+
requirement: &2151835860 !ruby/object:Gem::Requirement
|
43
43
|
none: false
|
44
44
|
requirements:
|
45
45
|
- - ! '>='
|
@@ -47,10 +47,10 @@ dependencies:
|
|
47
47
|
version: 1.3.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
|
-
version_requirements: *
|
50
|
+
version_requirements: *2151835860
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
52
|
name: rainbow
|
53
|
-
requirement: &
|
53
|
+
requirement: &2151835220 !ruby/object:Gem::Requirement
|
54
54
|
none: false
|
55
55
|
requirements:
|
56
56
|
- - ! '>='
|
@@ -58,10 +58,21 @@ dependencies:
|
|
58
58
|
version: '0'
|
59
59
|
type: :runtime
|
60
60
|
prerelease: false
|
61
|
-
version_requirements: *
|
61
|
+
version_requirements: *2151835220
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: nokogiri
|
64
|
+
requirement: &2151834440 !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: *2151834440
|
62
73
|
- !ruby/object:Gem::Dependency
|
63
74
|
name: active_support
|
64
|
-
requirement: &
|
75
|
+
requirement: &2151833260 !ruby/object:Gem::Requirement
|
65
76
|
none: false
|
66
77
|
requirements:
|
67
78
|
- - ! '>='
|
@@ -69,10 +80,10 @@ dependencies:
|
|
69
80
|
version: '0'
|
70
81
|
type: :runtime
|
71
82
|
prerelease: false
|
72
|
-
version_requirements: *
|
83
|
+
version_requirements: *2151833260
|
73
84
|
- !ruby/object:Gem::Dependency
|
74
85
|
name: rake
|
75
|
-
requirement: &
|
86
|
+
requirement: &2151832320 !ruby/object:Gem::Requirement
|
76
87
|
none: false
|
77
88
|
requirements:
|
78
89
|
- - ! '>='
|
@@ -80,10 +91,10 @@ dependencies:
|
|
80
91
|
version: '0'
|
81
92
|
type: :development
|
82
93
|
prerelease: false
|
83
|
-
version_requirements: *
|
94
|
+
version_requirements: *2151832320
|
84
95
|
- !ruby/object:Gem::Dependency
|
85
96
|
name: rspec
|
86
|
-
requirement: &
|
97
|
+
requirement: &2151831400 !ruby/object:Gem::Requirement
|
87
98
|
none: false
|
88
99
|
requirements:
|
89
100
|
- - ! '>='
|
@@ -91,7 +102,7 @@ dependencies:
|
|
91
102
|
version: '0'
|
92
103
|
type: :development
|
93
104
|
prerelease: false
|
94
|
-
version_requirements: *
|
105
|
+
version_requirements: *2151831400
|
95
106
|
description: A command line interface for logaling.
|
96
107
|
email:
|
97
108
|
- koji.shimada@enishi-tech.com
|
@@ -108,6 +119,7 @@ files:
|
|
108
119
|
- .rspec
|
109
120
|
- COPYING
|
110
121
|
- Gemfile
|
122
|
+
- README.md
|
111
123
|
- Rakefile
|
112
124
|
- bin/loga
|
113
125
|
- lib/logaling.rb
|