chawan 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/README +15 -13
  2. data/Rakefile +1 -1
  3. data/lib/chawan/nodes.rb +4 -3
  4. data/spec/nodes_spec.rb +19 -18
  5. metadata +1 -1
data/README CHANGED
@@ -32,33 +32,35 @@ Class
32
32
  Example
33
33
  =======
34
34
 
35
- text = '本日はバリ晴天なりっす'
35
+ text = '登録された利用者'
36
36
 
37
37
  # 'parse' returns a Chawan::Nodes
38
38
  Chawan.parse(text)
39
- => [<名詞: '本日'>, <助詞: ''>, <名詞: 'バリ'>, <名詞: '晴天'>, <助動詞: 'なり'>, <助動詞: 'っす'>]
39
+ => [<名詞: '登録'>, <動詞: ''>, <動詞: ''>, <助動詞: ''>, <名詞: '利用'>, <名詞: ''>]
40
40
 
41
41
  # Chawan::Nodes is enumerable
42
42
  Chawan.parse(text).select{|node| node.category == '名詞'}
43
- => [<名詞: '本日'>, <名詞: 'バリ'>, <名詞: '晴天'>]
43
+ => [<名詞: '登録'>, <名詞: '利用'>, <名詞: ''>]
44
44
 
45
45
  # gateway interface: noun
46
46
  Chawan.parse(text).noun
47
- => [<名詞: '本日'>, <名詞: 'バリ'>, <名詞: '晴天'>]
47
+ => [<名詞: '登録'>, <名詞: '利用'>, <名詞: ''>]
48
48
 
49
49
  # gateway interface: verb
50
50
  Chawan.parse(text).verb
51
- => [<助動詞: 'なり'>, <助動詞: 'っす'>]
51
+ => [<動詞: ''>, <動詞: 'れ'>, <助動詞: ''>]
52
52
 
53
53
  # gateway interface: grep
54
- Chawan.parse(text).grep(/助/)
55
- => [<助詞: ''>, <助動詞: 'なり'>, <助動詞: 'っす'>]
54
+ Chawan.parse(text).grep(/動詞/)
55
+ => [<動詞: ''>, <動詞: ''>, <助動詞: ''>]
56
+ Chawan.parse(text).grep('動詞')
57
+ => [<動詞: 'さ'>, <動詞: 'れ'>]
56
58
 
57
59
  # gateway interface: compact
58
60
  Chawan.parse(text).compact
59
- => [<名詞: '本日'>, <助詞: ''>, <名詞: 'バリ晴天'>, <助動詞: 'なりっす'>]
60
- Chawan.parse(text).compact(/名詞/)
61
- => [<名詞: '本日'>, <助詞: ''>, <名詞: 'バリ晴天'>, <助動詞: 'なり'>, <助動詞: 'っす'>]
61
+ => [<名詞: '登録'>, <動詞: 'され'>, <助動詞: ''>, <名詞: '利用者'>]
62
+ Chawan.parse(text).compact(/動詞/)
63
+ => [<名詞: '登録'>, <動詞: 'された'>, <名詞: '利用'>, <名詞: ''>]
62
64
 
63
65
  # gateway interface is chainable
64
66
  Chawan.parse(text).noun.verb
@@ -66,11 +68,11 @@ Example
66
68
 
67
69
  # chainable is fun!
68
70
  Chawan.parse(text).noun
69
- => [<名詞: '本日'>, <名詞: 'バリ'>, <名詞: '晴天'>]
71
+ => [<名詞: '登録'>, <名詞: '利用'>, <名詞: ''>]
70
72
  Chawan.parse(text).compact.noun
71
- => [<名詞: '本日'>, <名詞: 'バリ晴天'>]
73
+ => [<名詞: '登録'>, <名詞: '利用者'>]
72
74
  Chawan.parse(text).noun.compact
73
- => [<名詞: '本日バリ晴天'>]
75
+ => [<名詞: '登録利用者'>]
74
76
 
75
77
 
76
78
  Analyzer
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ AUTHOR = "maiha"
6
6
  EMAIL = "maiha@wota.jp"
7
7
  HOMEPAGE = "http://github.com/maiha/chawan"
8
8
  SUMMARY = "A cup for chasen that provides an easy to use for extracting Japanese"
9
- GEM_VERSION = "0.0.3"
9
+ GEM_VERSION = "0.0.4"
10
10
 
11
11
  spec = Gem::Specification.new do |s|
12
12
  s.rubyforge_project = 'asakusarb'
@@ -34,11 +34,12 @@ module Chawan
34
34
  end
35
35
  end
36
36
 
37
- def compact(pattern = //)
37
+ def compact(pattern = nil)
38
38
  array = []
39
- prev = nil
40
39
  each do |node|
41
- if array.last and (pattern === node.category) and array.last.category == node.category
40
+ if array.last and (pattern ?
41
+ (pattern === node.category && pattern === array.last.category) :
42
+ (array.last.category == node.category))
42
43
  array.last.word << node.word.to_s
43
44
  else
44
45
  array << Node.new(node.vals.map(&:dup), node.keys)
@@ -25,16 +25,17 @@ end
25
25
  describe Chawan::Nodes do
26
26
  before do
27
27
  keys = ["表記","品詞"]
28
- @n1 = Chawan::Node.new(["本日","名詞"], keys)
29
- @p1 = Chawan::Node.new(["" ,"助詞"], keys)
30
- @n2 = Chawan::Node.new(["マジ","名詞"], keys)
31
- @n3 = Chawan::Node.new(["晴天","名詞"], keys)
32
- @v1 = Chawan::Node.new(["なり","助動詞"], keys)
33
- @v2 = Chawan::Node.new(["っす","助動詞"], keys)
34
- @nodes = Chawan::Nodes.new([@n1, @p1, @n2, @n3, @v1, @v2])
28
+ @n1 = Chawan::Node.new(["登録","名詞" ], keys)
29
+ @v1 = Chawan::Node.new(["" ,"動詞" ], keys)
30
+ @v2 = Chawan::Node.new(["" ,"動詞" ], keys)
31
+ @p1 = Chawan::Node.new(["" ,"助動詞"], keys)
32
+ @n2 = Chawan::Node.new(["利用","名詞" ], keys)
33
+ @n3 = Chawan::Node.new(["" ,"名詞" ], keys)
34
+ @nodes = Chawan::Nodes.new([@n1, @v1, @v2, @p1, @n2, @n3])
35
35
 
36
- @n23 = Chawan::Node.new(["マジ晴天","名詞"], keys)
37
- @v12 = Chawan::Node.new(["なりっす","助動詞"], keys)
36
+ @n23 = Chawan::Node.new(["利用者","名詞"], keys)
37
+ @v12 = Chawan::Node.new(["され","動詞"], keys)
38
+ @v12p1 = Chawan::Node.new(["された","動詞"], keys)
38
39
  end
39
40
 
40
41
  subject { @nodes }
@@ -43,21 +44,21 @@ describe Chawan::Nodes do
43
44
  ### Gateway Interface
44
45
 
45
46
  gateway_interface(:noun) { should == Chawan::Nodes.new([@n1, @n2, @n3]) }
46
- gateway_interface(:verb) { should == Chawan::Nodes.new([@v1, @v2]) }
47
+ gateway_interface(:verb) { should == Chawan::Nodes.new([@v1, @v2, @p1]) }
47
48
 
48
- gateway_interface(:compact) { should == Chawan::Nodes.new([@n1, @p1, @n23, @v12]) }
49
- it "#compact(/名詞/) should compact only nodes matched /名詞/" do
50
- subject.compact(/名詞/).should == Chawan::Nodes.new([@n1, @p1, @n23, @v1, @v2])
49
+ gateway_interface(:compact) { should == Chawan::Nodes.new([@n1, @v12, @p1, @n23]) }
50
+ it "#compact(/動詞/) should compact only nodes matched /動詞/" do
51
+ subject.compact(/動詞/).should == Chawan::Nodes.new([@n1, @v12p1, @n2, @n3])
52
+ end
53
+ it "#compact('動詞') should compact only nodes categoried '動詞'" do
54
+ subject.compact('動詞').should == Chawan::Nodes.new([@n1, @v12, @p1, @n2, @n3])
51
55
  end
52
56
 
53
57
  provide :grep
54
58
  describe "#grep" do
55
59
  it "should scope nodes by given category" do
56
- subject.grep(/名詞/).should == Chawan::Nodes.new([@n1, @n2, @n3])
57
- subject.grep('名詞').should == Chawan::Nodes.new([@n1, @n2, @n3])
58
-
59
- subject.grep(/助/).should == Chawan::Nodes.new([@p1, @v1, @v2])
60
- subject.grep('助').should == Chawan::Nodes.new([])
60
+ subject.grep(/動詞/).should == Chawan::Nodes.new([@v1, @v2, @p1])
61
+ subject.grep('動詞').should == Chawan::Nodes.new([@v1, @v2])
61
62
  end
62
63
  end
63
64
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chawan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - maiha