logaling-command 0.0.1 → 0.0.2
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/.rspec +1 -0
- data/Rakefile +3 -2
- data/lib/logaling.rb +3 -1
- data/lib/logaling/command.rb +26 -40
- data/lib/logaling/glossary.rb +7 -9
- data/logaling-command.gemspec +4 -1
- data/spec/logaling/command_spec.rb +101 -0
- data/spec/logaling/glossary_spec.rb +116 -0
- data/spec/spec_helper.rb +22 -5
- metadata +32 -6
data/.rspec
CHANGED
data/Rakefile
CHANGED
data/lib/logaling.rb
CHANGED
data/lib/logaling/command.rb
CHANGED
@@ -5,7 +5,7 @@ require "logaling/glossary"
|
|
5
5
|
require "logaling/glossary_db"
|
6
6
|
|
7
7
|
class Logaling::Command < Thor
|
8
|
-
VERSION = "0.0.
|
8
|
+
VERSION = "0.0.2"
|
9
9
|
|
10
10
|
map '-c' => :create,
|
11
11
|
'-a' => :add,
|
@@ -13,15 +13,10 @@ class Logaling::Command < Thor
|
|
13
13
|
'-u' => :update,
|
14
14
|
'-l' => :lookup
|
15
15
|
|
16
|
-
class_option
|
17
|
-
class_option
|
18
|
-
class_option
|
19
|
-
class_option
|
20
|
-
|
21
|
-
def initialize(*args)
|
22
|
-
super
|
23
|
-
@dot_options = Hash.new
|
24
|
-
end
|
16
|
+
class_option "glossary", type: :string, aliases: "-g"
|
17
|
+
class_option "source-language", type: :string, aliases: "-S"
|
18
|
+
class_option "target-language", type: :string, aliases: "-T"
|
19
|
+
class_option "logaling-home", type: :string, required: false, aliases: "-h"
|
25
20
|
|
26
21
|
desc 'create', 'Create glossary.'
|
27
22
|
def create
|
@@ -31,52 +26,42 @@ class Logaling::Command < Thor
|
|
31
26
|
error(e.message)
|
32
27
|
end
|
33
28
|
|
34
|
-
desc 'add', 'Add term to glossary.'
|
35
|
-
|
36
|
-
method_option :target_term, type: :string, required: true, aliases: "-t"
|
37
|
-
method_option :note, type: :string, aliases: "-n"
|
38
|
-
def add
|
29
|
+
desc 'add [source term] [target term] [note]', 'Add term to glossary.'
|
30
|
+
def add(source_term, target_term, note='')
|
39
31
|
load_config
|
40
|
-
glossary.add(
|
41
|
-
rescue Logaling::CommandFailed => e
|
32
|
+
glossary.add(source_term, target_term, note)
|
33
|
+
rescue Logaling::CommandFailed, Logaling::TermError => e
|
42
34
|
error(e.message)
|
43
35
|
end
|
44
36
|
|
45
|
-
desc 'delete', 'Delete term.'
|
46
|
-
|
47
|
-
method_option :target_term, type: :string, required: true, aliases: "-t"
|
48
|
-
def delete
|
37
|
+
desc 'delete [source term] [target term]', 'Delete term.'
|
38
|
+
def delete(source_term, target_term)
|
49
39
|
load_config
|
50
|
-
glossary.delete(
|
51
|
-
rescue Logaling::CommandFailed => e
|
40
|
+
glossary.delete(source_term, target_term)
|
41
|
+
rescue Logaling::CommandFailed, Logaling::TermError => e
|
52
42
|
error(e.message)
|
53
43
|
end
|
54
44
|
|
55
|
-
desc 'update', 'Update term.'
|
56
|
-
|
57
|
-
method_option :target_term, type: :string, required: true, aliases: "-t"
|
58
|
-
method_option :new_target_term, type: :string, required: true, aliases: "-nt"
|
59
|
-
method_option :note, type: :string, required: true, aliases: "-n"
|
60
|
-
def update
|
45
|
+
desc 'update [source term] [target term] [new_target_term], [note]', 'Update term.'
|
46
|
+
def update(source_term, target_term, new_target_term, note='')
|
61
47
|
load_config
|
62
|
-
glossary.update(
|
63
|
-
rescue Logaling::CommandFailed => e
|
48
|
+
glossary.update(source_term, target_term, new_target_term, note)
|
49
|
+
rescue Logaling::CommandFailed, Logaling::TermError => e
|
64
50
|
error(e.message)
|
65
51
|
end
|
66
52
|
|
67
|
-
desc 'lookup', 'Lookup terms.'
|
68
|
-
|
69
|
-
def lookup
|
53
|
+
desc 'lookup [source term]', 'Lookup terms.'
|
54
|
+
def lookup(source_term)
|
70
55
|
load_config
|
71
|
-
glossary.lookup(
|
72
|
-
rescue Logaling::CommandFailed => e
|
56
|
+
glossary.lookup(source_term)
|
57
|
+
rescue Logaling::CommandFailed, Logaling::TermError => e
|
73
58
|
error(e.message)
|
74
59
|
end
|
75
60
|
|
76
61
|
desc 'index', 'Index glossaries to groonga DB.'
|
77
62
|
def index
|
78
63
|
load_config
|
79
|
-
home = find_option("
|
64
|
+
home = find_option("logaling-home") || LOGALING_HOME
|
80
65
|
db_home = File.join(home, ".logadb")
|
81
66
|
glossarydb = Logaling::GlossaryDB.new
|
82
67
|
glossarydb.open(db_home, "utf8") do |db|
|
@@ -90,13 +75,13 @@ class Logaling::Command < Thor
|
|
90
75
|
glossary = find_option("glossary")
|
91
76
|
raise(Logaling::CommandFailed, "input glossary name '-g <glossary name>'") unless glossary
|
92
77
|
|
93
|
-
source_language = find_option("
|
78
|
+
source_language = find_option("source-language")
|
94
79
|
raise(Logaling::CommandFailed, "input source-language code '-S <source-language code>'") unless source_language
|
95
80
|
|
96
|
-
target_language = find_option("
|
81
|
+
target_language = find_option("target-language")
|
97
82
|
raise(Logaling::CommandFailed, "input target-language code '-T <target-language code>'") unless target_language
|
98
83
|
|
99
|
-
logaling_home = find_option("
|
84
|
+
logaling_home = find_option("logaling-home")
|
100
85
|
|
101
86
|
Logaling::Glossary.new(glossary, source_language, target_language, logaling_home)
|
102
87
|
end
|
@@ -111,6 +96,7 @@ class Logaling::Command < Thor
|
|
111
96
|
end
|
112
97
|
|
113
98
|
def load_config
|
99
|
+
@dot_options ||= {}
|
114
100
|
if path = find_dotfile
|
115
101
|
tmp_options = File.readlines(path).map {|l| l.chomp.split " "}
|
116
102
|
tmp_options.each do |option|
|
data/lib/logaling/glossary.rb
CHANGED
@@ -38,8 +38,7 @@ module Logaling
|
|
38
38
|
check_glossary_exists
|
39
39
|
|
40
40
|
if bilingual_pair_exists?(source_term, target_term)
|
41
|
-
|
42
|
-
return
|
41
|
+
raise TermError, "[#{source_term}] [#{target_term}] pair already exists"
|
43
42
|
end
|
44
43
|
|
45
44
|
glossary = load_glossary_yml
|
@@ -52,8 +51,7 @@ module Logaling
|
|
52
51
|
check_glossary_exists
|
53
52
|
|
54
53
|
if bilingual_pair_exists?(source_term, new_target_term)
|
55
|
-
|
56
|
-
return
|
54
|
+
raise TermError, "[#{source_term}] [#{new_target_term}] pair already exists"
|
57
55
|
end
|
58
56
|
|
59
57
|
glossary = load_glossary_yml
|
@@ -62,7 +60,7 @@ module Logaling
|
|
62
60
|
glossary[target_index] = rebuild_term(glossary[target_index], source_term, new_target_term, note)
|
63
61
|
dump_glossary(glossary)
|
64
62
|
else
|
65
|
-
|
63
|
+
raise TermError, "source_term:#{source_term} target_term:#{target_term} not found in glossary #{@path}"
|
66
64
|
end
|
67
65
|
end
|
68
66
|
|
@@ -75,7 +73,7 @@ module Logaling
|
|
75
73
|
glossary.delete_at(target_index)
|
76
74
|
dump_glossary(glossary)
|
77
75
|
else
|
78
|
-
|
76
|
+
raise TermError, "source_term:#{source_term} target_term:#{target_term} not found in glossary #{@path}"
|
79
77
|
end
|
80
78
|
end
|
81
79
|
|
@@ -89,8 +87,7 @@ module Logaling
|
|
89
87
|
term[:source_language] != @source_language || term[:target_language] != @target_language
|
90
88
|
end
|
91
89
|
if glossaries.empty?
|
92
|
-
|
93
|
-
return
|
90
|
+
raise TermError, "source-term <#{source_term}> not found"
|
94
91
|
end
|
95
92
|
# order by glossary
|
96
93
|
specified = glossaries.select{|term| term[:name] == @glossary}
|
@@ -117,11 +114,12 @@ module Logaling
|
|
117
114
|
end
|
118
115
|
|
119
116
|
def build_term(source_term, target_term, note)
|
117
|
+
note ||= ''
|
120
118
|
{'source_term' => source_term, 'target_term' => target_term, 'note' => note}
|
121
119
|
end
|
122
120
|
|
123
121
|
def rebuild_term(current, source_term, target_term, note)
|
124
|
-
note = current['note'] if note == ""
|
122
|
+
note = current['note'] if note.nil? || note == ""
|
125
123
|
target_term = current['target_term'] if target_term == ""
|
126
124
|
build_term(source_term, target_term, note)
|
127
125
|
end
|
data/logaling-command.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
require "logaling/command
|
3
|
+
require "logaling/command"
|
4
4
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "logaling-command"
|
@@ -18,6 +18,9 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
+
s.add_runtime_dependency 'thor', ['>= 0.14.6']
|
22
|
+
s.add_runtime_dependency 'bundler', ['>= 1.0']
|
23
|
+
|
21
24
|
s.add_development_dependency 'rake'
|
22
25
|
s.add_development_dependency 'rspec'
|
23
26
|
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
3
|
+
|
4
|
+
describe Logaling::Command do
|
5
|
+
let(:base_options) { {"glossary"=>"spec", "source-language"=>"en", "target-language"=>"ja"} }
|
6
|
+
let(:command) { Logaling::Command.new([], base_options) }
|
7
|
+
let(:glossary_path) { File.join(LOGALING_HOME, "/spec.en.ja.yml") }
|
8
|
+
|
9
|
+
before do
|
10
|
+
FileUtils.remove_file(glossary_path, true)
|
11
|
+
end
|
12
|
+
|
13
|
+
describe '#create' do
|
14
|
+
context 'with arguments show non-existent glossary' do
|
15
|
+
before do
|
16
|
+
command.create
|
17
|
+
end
|
18
|
+
|
19
|
+
it "glossary yaml should be newly created" do
|
20
|
+
File.exists?(glossary_path).should be_true
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#add' do
|
26
|
+
before do
|
27
|
+
command.create
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'with arguments have only bilingual pair' do
|
31
|
+
before do
|
32
|
+
command.add("spec", "テスト")
|
33
|
+
end
|
34
|
+
|
35
|
+
subject { YAML::load_file(glossary_path).find{|h| h["source_term"] == "spec" }}
|
36
|
+
|
37
|
+
it "glossary yaml should contain that term" do
|
38
|
+
subject["target_term"].should == "テスト"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "term should note have note" do
|
42
|
+
subject["note"].should == ""
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
context 'with arguments have bilingual pair and note' do
|
47
|
+
before do
|
48
|
+
command.add("spec", "テスト", "備考")
|
49
|
+
end
|
50
|
+
|
51
|
+
subject { YAML::load_file(glossary_path).find{|h| h["source_term"] == "spec" }}
|
52
|
+
|
53
|
+
it "glossary yaml should contain that term" do
|
54
|
+
subject["target_term"].should == "テスト"
|
55
|
+
end
|
56
|
+
|
57
|
+
it "term should have note" do
|
58
|
+
subject["note"].should == "備考"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "#update" do
|
64
|
+
before do
|
65
|
+
command.create
|
66
|
+
command.add("spec", "テスト", "備考")
|
67
|
+
end
|
68
|
+
|
69
|
+
context "not given source-term option" do
|
70
|
+
# should show err
|
71
|
+
end
|
72
|
+
|
73
|
+
context "not given target-term option" do
|
74
|
+
#should show err
|
75
|
+
end
|
76
|
+
|
77
|
+
context "not given new-target-term option" do
|
78
|
+
#should show err
|
79
|
+
end
|
80
|
+
|
81
|
+
context "with arguments except note" do
|
82
|
+
before do
|
83
|
+
command.update("spec", "テスト", "スペック")
|
84
|
+
end
|
85
|
+
|
86
|
+
subject { YAML::load_file(glossary_path).find{|h| h["source_term"] == "spec" }}
|
87
|
+
|
88
|
+
it "term's target_term should be updated" do
|
89
|
+
subject["target_term"].should == "スペック"
|
90
|
+
end
|
91
|
+
|
92
|
+
it "term's note should not be updated" do
|
93
|
+
subject["note"].should == "備考"
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
after do
|
99
|
+
FileUtils.remove_file(glossary_path, true)
|
100
|
+
end
|
101
|
+
end
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
require File.join(File.dirname(__FILE__), "..", "spec_helper")
|
3
|
+
require "fileutils"
|
4
|
+
|
5
|
+
module Logaling
|
6
|
+
describe Glossary do
|
7
|
+
let(:glossary) { Glossary.new('spec', 'en', 'ja', Dir.pwd) }
|
8
|
+
let(:glossary_path) { File.join(Dir.pwd, 'spec.en.ja.yml') }
|
9
|
+
|
10
|
+
describe '#add' do
|
11
|
+
before do
|
12
|
+
FileUtils.remove_file(glossary_path, true)
|
13
|
+
glossary.create
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'with arguments show new bilingual pair' do
|
17
|
+
before do
|
18
|
+
glossary.add("spec", "スペック", "テストスペック")
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'glossary yaml should have that bilingual pair' do
|
22
|
+
yaml = YAML::load_file(glossary_path)
|
23
|
+
term = yaml.index({"source_term"=>"spec", "target_term"=>"スペック", "note"=>"テストスペック"})
|
24
|
+
term.should_not be_nil
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
context 'with arguments show existing bilingual pair' do
|
29
|
+
before do
|
30
|
+
glossary.add("user", "ユーザ", "ユーザーではない")
|
31
|
+
end
|
32
|
+
|
33
|
+
it {
|
34
|
+
-> { glossary.add("user", "ユーザ", "ユーザーではない") }.should raise_error(Logaling::TermError)
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
after do
|
39
|
+
FileUtils.remove_file(glossary_path, true)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe '#update' do
|
44
|
+
before do
|
45
|
+
FileUtils.remove_file(glossary_path, true)
|
46
|
+
glossary.create
|
47
|
+
glossary.add("user", "ユーザ", "ユーザーではない")
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'with new-terget-term show existing bilingual pair' do
|
51
|
+
it {
|
52
|
+
-> { glossary.update("user", "ユーザー", "ユーザ", "やっぱりユーザー") }.should raise_error(Logaling::TermError)
|
53
|
+
}
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'with source-term arguments show not existing bilingual pair' do
|
57
|
+
it {
|
58
|
+
-> { glossary.update("use", "ユーザ", "ユーザー", "やっぱりユーザー") }.should raise_error(Logaling::TermError)
|
59
|
+
}
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'with target-term arguments show not existing bilingual pair' do
|
63
|
+
it {
|
64
|
+
-> { glossary.update("user", "ユー", "ユーザー", "やっぱりユーザー") }.should raise_error(Logaling::TermError)
|
65
|
+
}
|
66
|
+
end
|
67
|
+
|
68
|
+
after do
|
69
|
+
FileUtils.remove_file(glossary_path, true)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
describe '#delete' do
|
74
|
+
before do
|
75
|
+
FileUtils.remove_file(glossary_path, true)
|
76
|
+
glossary.create
|
77
|
+
glossary.add("user", "ユーザ", "ユーザーではない")
|
78
|
+
end
|
79
|
+
|
80
|
+
context 'with arguments show not existing bilingual pair' do
|
81
|
+
it {
|
82
|
+
-> { glossary.delete("user", "ユーザー") }.should raise_error(Logaling::TermError)
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
after do
|
87
|
+
FileUtils.remove_file(glossary_path, true)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe '#lookup' do
|
92
|
+
before do
|
93
|
+
FileUtils.remove_file(glossary_path, true)
|
94
|
+
glossary.create
|
95
|
+
glossary.add("user", "ユーザ", "ユーザーではない")
|
96
|
+
|
97
|
+
db_home = File.join(LOGALING_HOME, ".logadb")
|
98
|
+
glossarydb = Logaling::GlossaryDB.new
|
99
|
+
glossarydb.open(db_home, "utf8") do |db|
|
100
|
+
db.recreate_table(db_home)
|
101
|
+
db.load_glossaries(LOGALING_HOME)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
context 'with arguments show not existing bilingual pair' do
|
106
|
+
it {
|
107
|
+
-> { glossary.delete("user", "ユーザー") }.should raise_error(Logaling::TermError)
|
108
|
+
}
|
109
|
+
end
|
110
|
+
|
111
|
+
after do
|
112
|
+
FileUtils.remove_file(glossary_path, true)
|
113
|
+
end
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,8 +1,25 @@
|
|
1
|
-
require "rubygems"
|
2
|
-
require "bundler/setup"
|
3
|
-
|
4
|
-
require 'rspec'
|
5
1
|
$LOAD_PATH.unshift(File.dirname(__FILE__) + '/../lib')
|
2
|
+
require 'logaling'
|
3
|
+
|
4
|
+
require "fileutils"
|
5
|
+
require 'stringio'
|
6
|
+
|
7
|
+
LOGALING_HOME = File.expand_path("~/.logaling.d")
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
def capture(stream)
|
11
|
+
begin
|
12
|
+
stream = stream.to_s
|
13
|
+
eval "$#{stream} = StringIO.new"
|
14
|
+
yield
|
15
|
+
result = eval("$#{stream}").string
|
16
|
+
ensure
|
17
|
+
eval("$#{stream} = #{stream.upcase}")
|
18
|
+
end
|
19
|
+
|
20
|
+
result
|
21
|
+
end
|
6
22
|
|
7
|
-
|
23
|
+
alias :silence :capture
|
24
|
+
end
|
8
25
|
|
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.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,11 +13,33 @@ authors:
|
|
13
13
|
autorequire:
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
|
-
date: 2011-11-
|
16
|
+
date: 2011-11-16 00:00:00.000000000Z
|
17
17
|
dependencies:
|
18
|
+
- !ruby/object:Gem::Dependency
|
19
|
+
name: thor
|
20
|
+
requirement: &2152051920 !ruby/object:Gem::Requirement
|
21
|
+
none: false
|
22
|
+
requirements:
|
23
|
+
- - ! '>='
|
24
|
+
- !ruby/object:Gem::Version
|
25
|
+
version: 0.14.6
|
26
|
+
type: :runtime
|
27
|
+
prerelease: false
|
28
|
+
version_requirements: *2152051920
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: bundler
|
31
|
+
requirement: &2152050600 !ruby/object:Gem::Requirement
|
32
|
+
none: false
|
33
|
+
requirements:
|
34
|
+
- - ! '>='
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '1.0'
|
37
|
+
type: :runtime
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: *2152050600
|
18
40
|
- !ruby/object:Gem::Dependency
|
19
41
|
name: rake
|
20
|
-
requirement: &
|
42
|
+
requirement: &2152049620 !ruby/object:Gem::Requirement
|
21
43
|
none: false
|
22
44
|
requirements:
|
23
45
|
- - ! '>='
|
@@ -25,10 +47,10 @@ dependencies:
|
|
25
47
|
version: '0'
|
26
48
|
type: :development
|
27
49
|
prerelease: false
|
28
|
-
version_requirements: *
|
50
|
+
version_requirements: *2152049620
|
29
51
|
- !ruby/object:Gem::Dependency
|
30
52
|
name: rspec
|
31
|
-
requirement: &
|
53
|
+
requirement: &2152047900 !ruby/object:Gem::Requirement
|
32
54
|
none: false
|
33
55
|
requirements:
|
34
56
|
- - ! '>='
|
@@ -36,7 +58,7 @@ dependencies:
|
|
36
58
|
version: '0'
|
37
59
|
type: :development
|
38
60
|
prerelease: false
|
39
|
-
version_requirements: *
|
61
|
+
version_requirements: *2152047900
|
40
62
|
description: A command line interface for logaling.
|
41
63
|
email:
|
42
64
|
- koji.shimada@enishi-tech.com
|
@@ -59,6 +81,8 @@ files:
|
|
59
81
|
- lib/logaling/glossary.rb
|
60
82
|
- lib/logaling/glossary_db.rb
|
61
83
|
- logaling-command.gemspec
|
84
|
+
- spec/logaling/command_spec.rb
|
85
|
+
- spec/logaling/glossary_spec.rb
|
62
86
|
- spec/spec_helper.rb
|
63
87
|
homepage: http://logaling.github.com/
|
64
88
|
licenses: []
|
@@ -85,4 +109,6 @@ signing_key:
|
|
85
109
|
specification_version: 3
|
86
110
|
summary: A command line interface for logaling.
|
87
111
|
test_files:
|
112
|
+
- spec/logaling/command_spec.rb
|
113
|
+
- spec/logaling/glossary_spec.rb
|
88
114
|
- spec/spec_helper.rb
|