mecab-light 0.2.3 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c610ca8725dff12d78f4c8e57aed3a669cb4dfd9
4
- data.tar.gz: 2c7400b6c7355e26bf1cf0c11f9dbd9a98401330
3
+ metadata.gz: ef459849c0f6ac5aa5ec3b00f9d9cb1ccf50a571
4
+ data.tar.gz: 406118e6f6ea6c5f8e313f0738632d2d92160eb0
5
5
  SHA512:
6
- metadata.gz: 68e644215d1733e15152650d68923532d20e6cfeae91f0150f1e8b9c9b56503ce42cfc090c9d5cc4f6db26ce971784117d081937d2c61507b8d80c93e9ccaa6d
7
- data.tar.gz: df72e4d97b55674761e303e218d8087bf470e9d730be9017eaef8a059bff3a53fbb5c85938f00bc00e79099b6a03e8fb4bac028fafaddc9a408cc5dd4de27cf2
6
+ metadata.gz: 1364dc10881cb2752311e0872d2edfffe3cd5cc5e84a9070fce6b444afd19f08d76a6ff19cc26b00266de98045758e55dc009f0fb9e774bebbda2189f6abfecf
7
+ data.tar.gz: c028bc9e01968a4861ef74128e4b6210494a8574b24ee68d5f13f51ba86b4c9f104ba04901ac2174077ca2d34ca4a77fdb841f7031ab8f5aef5408885e177c12
data/.travis.yml CHANGED
@@ -1,2 +1,5 @@
1
1
  rvm:
2
- - 2.0.0
2
+ - 2.1.0
3
+ notification:
4
+ emails:
5
+ - hadzimme@icloud.com
@@ -2,9 +2,17 @@ module MeCab
2
2
  module Light
3
3
  class Morpheme
4
4
  def initialize(line)
5
- @surface, @feature = line.chomp.split(/\t/)
5
+ @to_s = line.chomp
6
+ @surface, @feature = @to_s.split(/\t/)
7
+ end
8
+
9
+ alias to_s_orig to_s
10
+ private :to_s_orig
11
+ attr_reader :surface, :feature, :to_s
12
+
13
+ def inspect
14
+ to_s_orig.sub(/>$/, " #{@to_s}>")
6
15
  end
7
- attr_reader :surface, :feature
8
16
  end
9
17
  end
10
18
  end
@@ -4,15 +4,30 @@ module MeCab
4
4
  include Enumerable
5
5
 
6
6
  def initialize(parsed)
7
+ @to_s = parsed
7
8
  @morphemes = parsed.each_line.map { |line| Morpheme.new(line) }
8
9
  end
9
10
 
11
+ def to_one_line
12
+ @morphemes.map do |morpheme|
13
+ morpheme.surface
14
+ end.join(' ')
15
+ end
16
+
17
+ alias to_s_orig to_s
18
+ private :to_one_line, :to_s_orig
19
+ attr_reader :to_s
20
+
21
+ def inspect
22
+ to_s_orig.sub(/>$/, " #{to_one_line}>")
23
+ end
24
+
10
25
  def each(&block)
11
26
  if block_given?
12
27
  @morphemes.each(&block)
13
28
  self
14
29
  else
15
- self.to_enum
30
+ self.to_enum { @morphemes.size }
16
31
  end
17
32
  end
18
33
 
@@ -21,6 +36,12 @@ module MeCab
21
36
  end
22
37
 
23
38
  alias at []
39
+
40
+ def size
41
+ @morphemes.size
42
+ end
43
+
44
+ alias length size
24
45
  end
25
46
  end
26
47
  end
@@ -1,5 +1,5 @@
1
1
  module MeCab
2
2
  module Light
3
- VERSION = "0.2.3"
3
+ VERSION = "0.2.4"
4
4
  end
5
5
  end
@@ -1,29 +1,81 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MeCab::Light::Morpheme do
4
- let(:morpheme) { MeCab::Light::Morpheme.new("surface\tfeature\n") }
4
+ describe :new do
5
+ subject { new }
5
6
 
6
- context 'the class' do
7
- it { expect(MeCab::Light::Morpheme).to respond_to(:new).with(1).argument }
8
- end
7
+ let :new do
8
+ MeCab::Light::Morpheme.new(line)
9
+ end
9
10
 
10
- context 'an instance initialized with "surface\tfeature\n"' do
11
- it { expect(morpheme).to respond_to(:surface).with(0).arguments }
12
- it { expect(morpheme).to respond_to(:feature).with(0).arguments }
11
+ context 'with "surface\tfeature\n"' do
12
+ let :line do
13
+ "surface\tfeature\n"
14
+ end
13
15
 
14
- context 'surface' do
15
- it { expect(morpheme.surface).to eq('surface') }
16
+ specify do
17
+ expect(subject).to respond_to(:surface).with(0).arguments
18
+ end
16
19
 
17
- context 'encoding' do
18
- it { expect(morpheme.surface.encoding).to eq(Encoding::UTF_8) }
20
+ specify do
21
+ expect(subject).to respond_to(:feature).with(0).arguments
22
+ end
23
+
24
+ describe :surface do
25
+ subject { new.surface }
26
+
27
+ specify do
28
+ expect(subject).to eq('surface')
29
+ end
30
+
31
+ describe :encoding do
32
+ subject { new.surface.encoding }
33
+
34
+ specify do
35
+ expect(subject).to eq(Encoding::UTF_8)
36
+ end
37
+ end
38
+ end
39
+
40
+ describe :feature do
41
+ subject { new.feature }
42
+
43
+ specify do
44
+ expect(subject).to eq('feature')
45
+ end
46
+
47
+ describe :encoding do
48
+ subject { new.feature.encoding }
49
+
50
+ specify do
51
+ expect(subject).to eq(Encoding::UTF_8)
52
+ end
53
+ end
54
+ end
55
+
56
+ describe :to_s do
57
+ subject { new.to_s }
58
+
59
+ specify do
60
+ expect(subject).to eq("surface\tfeature")
61
+ end
62
+
63
+ describe :encoding do
64
+ subject { new.to_s.encoding }
65
+
66
+ specify do
67
+ expect(subject).to eq(Encoding::UTF_8)
68
+ end
69
+ end
19
70
  end
20
- end
21
71
 
22
- context 'feature' do
23
- it { expect(morpheme.feature).to eq('feature') }
72
+ describe :inspect do
73
+ subject { new.inspect }
24
74
 
25
- context 'encoding' do
26
- it { expect(morpheme.feature.encoding).to eq(Encoding::UTF_8) }
75
+ specify do
76
+ pattern = /^#<MeCab::Light::Morpheme:\w+ surface\tfeature>$/
77
+ expect(subject).to match(pattern)
78
+ end
27
79
  end
28
80
  end
29
81
  end
@@ -1,61 +1,146 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MeCab::Light::Result do
4
- let(:morpheme) { double('MeCab::Light::Morpheme') }
5
- let(:result) { MeCab::Light::Result.new("surface\tfeature\n") }
6
4
  before do
7
5
  MeCab::Light::Morpheme.stub(:new).and_return(morpheme)
8
6
  end
9
7
 
10
- context 'class' do
11
- it { expect(MeCab::Light::Result).to respond_to(:new).with(1).argument }
8
+ let :morpheme do
9
+ double(MeCab::Light::Morpheme,
10
+ surface: 'surface',
11
+ feature: 'feature')
12
+ end
13
+
14
+ describe :new do
15
+ subject { new }
16
+
17
+ let :new do
18
+ MeCab::Light::Result.new(parsed)
19
+ end
20
+
21
+ context 'with "surface\tfeature\n"' do
22
+ let :parsed do
23
+ "surface\tfeature\n"
24
+ end
25
+
26
+ specify do
27
+ expect(subject).to respond_to(:each).with(0).arguments
28
+ end
29
+
30
+ specify do
31
+ expect(subject).to be_an(Enumerable)
32
+ end
33
+
34
+ describe :each do
35
+ subject { new.each(&block) }
12
36
 
13
- context 'new with "surface\tfeature\n"' do
14
- context 'MeCab::Light::Morpheme class' do
15
- after do
16
- MeCab::Light::Result.new("surface\tfeature\n")
37
+ context 'with block' do
38
+ let :block do
39
+ lambda { |morpheme| }
40
+ end
41
+
42
+ it 'should return self' do
43
+ expect(subject).to eq(new)
44
+ end
45
+
46
+ specify do
47
+ expect { |b| new.each(&b) }.to yield_control
48
+ end
49
+
50
+ it 'should yield with args(MeCab::Light::Morpheme)' do
51
+ expect { |b| new.each(&b) }.to yield_with_args(morpheme)
52
+ end
17
53
  end
18
54
 
19
- it 'should receive #new with "surface\tfeature\n"' do
20
- expect(MeCab::Light::Morpheme).to receive(:new).with("surface\tfeature\n")
55
+ context 'without block' do
56
+ let :block do
57
+ nil
58
+ end
59
+
60
+ specify do
61
+ expect(subject).to be_an_instance_of(Enumerator)
62
+ end
63
+
64
+ describe :size do
65
+ subject { new.each.size }
66
+
67
+ specify do
68
+ expect(subject).to eq(1)
69
+ end
70
+ end
21
71
  end
22
72
  end
23
- end
24
- end
25
73
 
26
- context 'an instance initialized with ""' do
27
- it { expect(result).to respond_to(:each).with(0).arguments }
28
- it { expect(result).to be_an(Enumerable) }
74
+ describe :count do
75
+ subject { new.count }
29
76
 
30
- context 'count' do
31
- it { expect(result.count).to eq(1) }
32
- end
77
+ specify do
78
+ expect(subject).to eq(1)
79
+ end
80
+ end
81
+
82
+ describe :size do
83
+ subject { new.size }
33
84
 
34
- context 'each' do
35
- context 'with block' do
36
- it 'should return self' do
37
- expect(result.each{}).to eq(result)
85
+ specify do
86
+ expect(subject).to eq(1)
38
87
  end
39
- it { expect { |b| result.each(&b) }.to yield_control }
40
- it 'should yield with args(MeCab::Light::Morpheme)' do
41
- expect { |b| result.each(&b) }.to yield_with_args(morpheme)
88
+ end
89
+
90
+ describe :length do
91
+ subject { new.length }
92
+
93
+ specify do
94
+ expect(subject).to eq(1)
42
95
  end
43
96
  end
44
97
 
45
- context 'without block' do
46
- it { expect(result.each).to be_an_instance_of(Enumerator) }
98
+ describe :[] do
99
+ subject { new[nth] }
100
+
101
+ context 'with 0' do
102
+ let :nth do
103
+ 0
104
+ end
105
+
106
+ it 'should be an instance of Morpheme' do
107
+ expect(subject).to eq(morpheme)
108
+ end
109
+ end
47
110
  end
48
- end
49
111
 
50
- context '[] with 0' do
51
- it 'should be an instance of Morpheme' do
52
- expect(result[0]).to eq(morpheme)
112
+ describe :at do
113
+ subject { new.at(nth) }
114
+
115
+ context 'with 0' do
116
+ let :nth do
117
+ 0
118
+ end
119
+
120
+ it 'should be an instance of Morpheme' do
121
+ expect(subject).to eq(morpheme)
122
+ end
123
+ end
53
124
  end
54
- end
55
125
 
56
- context 'at with 0' do
57
- it 'should be an instance of Morpheme' do
58
- expect(result.at(0)).to eq(morpheme)
126
+ describe :inspect do
127
+ subject { new.inspect }
128
+
129
+ specify do
130
+ expect(subject).to match(/^#<MeCab::Light::Result:\w+ surface>$/)
131
+ end
132
+ end
133
+
134
+ describe MeCab::Light::Morpheme do
135
+ subject { MeCab::Light::Morpheme }
136
+
137
+ before do
138
+ new
139
+ end
140
+
141
+ specify do
142
+ expect(subject).to have_received(:new).with("surface\tfeature\n")
143
+ end
59
144
  end
60
145
  end
61
146
  end
@@ -1,57 +1,79 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe MeCab::Light::Tagger do
4
- let(:binding) { double( parse_to_s: "surface\tfeature\nEOS\n" ) }
5
- let(:result) { double('MeCab::Light::Result') }
6
- let(:tagger) { MeCab::Light::Tagger.new }
7
4
  before do
8
5
  MeCab::Light::Binding.stub(:new).and_return(binding)
9
6
  MeCab::Light::Result.stub(:new).and_return(result)
10
7
  end
11
8
 
12
- context 'the class' do
13
- it { expect(MeCab::Light::Tagger).to respond_to(:new).with(0).arguments }
9
+ let :binding do
10
+ double(MeCab::Light::Binding,
11
+ parse_to_s: "surface\tfeature\nEOS\n")
12
+ end
14
13
 
15
- context 'new' do
16
- context 'MeCab::Light::Binding class' do
17
- after do
18
- MeCab::Light::Tagger.new
19
- end
14
+ let :result do
15
+ double(MeCab::Light::Result)
16
+ end
20
17
 
21
- it 'should receive #new with ""' do
22
- expect(MeCab::Light::Binding).to receive(:new).with('')
23
- end
24
- end
18
+ describe :new do
19
+ subject { new }
20
+
21
+ let :new do
22
+ MeCab::Light::Tagger.new
25
23
  end
26
- end
27
24
 
28
- context 'an instance' do
29
- it { expect(tagger).to respond_to(:parse).with(1).argument }
25
+ specify do
26
+ expect(subject).to respond_to(:parse).with(1).argument
27
+ end
30
28
 
31
- context 'parse with "surface"' do
32
- it 'should be an instance of MeCab::Light::Result' do
33
- expect(tagger.parse('surface')).to eq(result)
34
- end
29
+ describe :parse do
30
+ subject { new.parse(string) }
35
31
 
36
- context 'MeCab::Light::Result class' do
37
- after do
38
- tagger.parse('surface')
32
+ context 'with "surface"' do
33
+ let :string do
34
+ 'surface'
39
35
  end
40
36
 
41
- it 'should receive #new with "surface\tfeature\n"' do
42
- expect(MeCab::Light::Result).to receive(:new).with("surface\tfeature\n")
37
+ it 'should be an instance of MeCab::Light::Result' do
38
+ expect(subject).to eq(result)
43
39
  end
44
- end
45
40
 
46
- context 'a MeCab::Light::Binding object' do
47
- after do
48
- tagger.parse('surface')
41
+ describe MeCab::Light::Result do
42
+ subject { MeCab::Light::Result }
43
+
44
+ before do
45
+ new.parse(string)
46
+ end
47
+
48
+ specify do
49
+ expect(subject).to have_received(:new).with("surface\tfeature\n")
50
+ end
49
51
  end
50
52
 
51
- it 'should receive #parse_to_s with "surface"' do
52
- expect(binding).to receive(:parse_to_s).with('surface')
53
+ describe 'an instance of', MeCab::Light::Binding do
54
+ subject { binding }
55
+
56
+ before do
57
+ new.parse(string)
58
+ end
59
+
60
+ specify do
61
+ expect(subject).to have_received(:parse_to_s).with('surface')
62
+ end
53
63
  end
54
64
  end
55
65
  end
66
+
67
+ describe MeCab::Light::Binding do
68
+ subject { MeCab::Light::Binding }
69
+
70
+ before do
71
+ new
72
+ end
73
+
74
+ specify do
75
+ expect(subject).to have_received(:new).with('')
76
+ end
77
+ end
56
78
  end
57
79
  end
metadata CHANGED
@@ -1,41 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mecab-light
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hajime WAKAHARA
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-22 00:00:00.000000000 Z
11
+ date: 2014-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  description: Use a sequence of morphemes as an Enumerable object.
@@ -46,8 +46,8 @@ extensions:
46
46
  - ext/mecab/light/extconf.rb
47
47
  extra_rdoc_files: []
48
48
  files:
49
- - .gitignore
50
- - .travis.yml
49
+ - ".gitignore"
50
+ - ".travis.yml"
51
51
  - Gemfile
52
52
  - LICENSE.txt
53
53
  - README.md
@@ -73,17 +73,17 @@ require_paths:
73
73
  - lib
74
74
  required_ruby_version: !ruby/object:Gem::Requirement
75
75
  requirements:
76
- - - '>='
76
+ - - ">="
77
77
  - !ruby/object:Gem::Version
78
78
  version: '1.9'
79
79
  required_rubygems_version: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  requirements: []
85
85
  rubyforge_project:
86
- rubygems_version: 2.1.9
86
+ rubygems_version: 2.2.0
87
87
  signing_key:
88
88
  specification_version: 4
89
89
  summary: An simple interface for MeCab (UNOFFICIAL)