rudachi 1.0.0 → 1.1.1
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.
- checksums.yaml +4 -4
- data/README.md +10 -10
- data/lib/rudachi/config.rb +2 -26
- data/lib/rudachi/configurable.rb +4 -5
- data/lib/rudachi/file_parser.rb +2 -2
- data/lib/rudachi/loader.rb +13 -2
- data/lib/rudachi/option/boolean_option.rb +14 -0
- data/lib/rudachi/option/config.rb +47 -0
- data/lib/rudachi/option/string_option.rb +14 -0
- data/lib/rudachi/version.rb +1 -1
- data/lib/rudachi.rb +1 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cd976cea8211f4f452c2cd20a3fb286828d449aa346ea54458e98ecf47819aa
|
4
|
+
data.tar.gz: 7b8b886b6dc1467d33fdd44878ce1a490c13c7aacd6a40bd80e68ddcea631801
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6c21aaea246963a585ceee7800f13013797ae16f10386c933e01d3f1709ed96a5a7bcfd0d5f0e9e0a43ba17b9be2a7d2db0ce9a82ec446673ff2cf3b48a016fa
|
7
|
+
data.tar.gz: c06e0239aa4c8bae28f9a4b60d00beb66aea07a7d85760126a2e875e539a46a6716aace54f62f3f193edee31c8e8300c34bf1b2be8908b4acc2285d366bc1b7b
|
data/README.md
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
# Rudachi
|
2
2
|
[Sudachi](https://github.com/WorksApplications/Sudachi) wrapper Gem for JRuby.
|
3
3
|
|
4
|
-
|
4
|
+
#### For Text
|
5
5
|
```rb
|
6
6
|
Rudachi::TextParser.parse('東京都へ行く')
|
7
7
|
=> "東京都\t名詞,固有名詞,地名,一般,*,*\t東京都\nへ\t助詞,格助詞,*,*,*,*\tへ\n行く\t動詞,非自立可能,*,*,五段-カ行,終止形-一般\t行く\nEOS\n"
|
8
8
|
```
|
9
9
|
|
10
|
-
|
10
|
+
#### For File
|
11
11
|
```rb
|
12
12
|
File.open('sample.txt', 'w') { |f| f << '東京都へ行く' }
|
13
13
|
Rudachi::FileParser.parse('sample.txt')
|
14
14
|
=> "東京都\t名詞,固有名詞,地名,一般,*,*\t東京都\nへ\t助詞,格助詞,*,*,*,*\tへ\n行く\t動詞,非自立可能,*,*,五段-カ行,終止形-一般\t行く\nEOS\n"
|
15
15
|
```
|
16
16
|
|
17
|
-
|
17
|
+
#### With [some options](https://github.com/WorksApplications/Sudachi#options)
|
18
18
|
```rb
|
19
19
|
Rudachi::TextParser.new(o: 'result.txt', m: 'A').parse('東京都へ行く')
|
20
20
|
File.read('result.txt')
|
@@ -28,9 +28,9 @@ File.read('result.txt')
|
|
28
28
|
|
29
29
|
## Installation
|
30
30
|
|
31
|
-
1. Install JAR and dictionary of Sudachi ([
|
31
|
+
1. Install JAR and dictionary of Sudachi ([Details](https://github.com/WorksApplications/Sudachi/blob/develop/docs/tutorial.md#linux-%E3%81%AE%E5%A0%B4%E5%90%88))
|
32
32
|
|
33
|
-
|
33
|
+
##### Install the Sudachi JAR file
|
34
34
|
```sh
|
35
35
|
$ wget https://github.com/WorksApplications/Sudachi/releases/download/v0.5.3/sudachi-0.5.3-executable.zip
|
36
36
|
$ unzip sudachi-0.5.3-executable.zip
|
@@ -38,7 +38,7 @@ $ ls sudachi-0.5.3
|
|
38
38
|
LICENSE-2.0.txt README.md javax.json-1.1.jar jdartsclone-1.2.0.jar licenses sudachi-0.5.3.jar sudachi.json sudachi_fulldict.json
|
39
39
|
```
|
40
40
|
|
41
|
-
|
41
|
+
##### Install the Sudachi dictionary
|
42
42
|
```sh
|
43
43
|
$ wget http://sudachi.s3-website-ap-northeast-1.amazonaws.com/sudachidict/sudachi-dictionary-latest-full.zip
|
44
44
|
$ unzip -j -d sudachi-dictionary-latest-full sudachi-dictionary-latest-full.zip
|
@@ -51,7 +51,7 @@ LEGAL LICENSE-2.0.txt system_core.dic
|
|
51
51
|
|
52
52
|
```rb
|
53
53
|
# Gemfile
|
54
|
-
gem 'rudachi'
|
54
|
+
gem 'rudachi'
|
55
55
|
```
|
56
56
|
|
57
57
|
Then run `bundle install` .
|
@@ -59,6 +59,8 @@ Then run `bundle install` .
|
|
59
59
|
3. Initialize Rudachi
|
60
60
|
|
61
61
|
```rb
|
62
|
+
require 'rudachi'
|
63
|
+
|
62
64
|
Rudachi.configure do |config|
|
63
65
|
config.jar_path = 'sudachi-0.5.3/sudachi-0.5.3.jar'
|
64
66
|
end
|
@@ -68,11 +70,9 @@ Rudachi::Option.configure do |config|
|
|
68
70
|
end
|
69
71
|
```
|
70
72
|
|
71
|
-
4.
|
73
|
+
4. Did it !!
|
72
74
|
|
73
75
|
```rb
|
74
|
-
require 'rudachi'
|
75
|
-
|
76
76
|
Rudachi::TextParser.parse('こんにちは世界')
|
77
77
|
=> "こんにちは\t感動詞,一般,*,*,*,*\t今日は\n世界\t名詞,普通名詞,一般,*,*,*\t世界\nEOS\n"
|
78
78
|
```
|
data/lib/rudachi/config.rb
CHANGED
@@ -1,32 +1,8 @@
|
|
1
1
|
require 'rudachi/configurable'
|
2
|
+
require 'rudachi/option/string_option'
|
2
3
|
|
3
4
|
module Rudachi
|
4
5
|
extend Configurable
|
5
6
|
|
6
|
-
config_accessor :jar_path,
|
7
|
-
|
8
|
-
module Option
|
9
|
-
extend Configurable
|
10
|
-
|
11
|
-
# @see https://github.com/WorksApplications/Sudachi#options
|
12
|
-
config_accessor :r, default: nil
|
13
|
-
config_accessor :s, default: nil
|
14
|
-
config_accessor :p, default: '/usr/java/lib'
|
15
|
-
config_accessor :m, default: 'C'
|
16
|
-
config_accessor :o, default: nil
|
17
|
-
config_accessor :t, default: nil
|
18
|
-
config_accessor :ts, default: nil
|
19
|
-
config_accessor :a, default: nil
|
20
|
-
config_accessor :f, default: nil
|
21
|
-
config_accessor :d, default: nil
|
22
|
-
config_accessor :h, default: nil
|
23
|
-
|
24
|
-
def self.cmds(opts)
|
25
|
-
class_variables.each_with_object([]) do |name, flags|
|
26
|
-
key = name.to_s.delete('@@')
|
27
|
-
val = opts[key] || opts[key.to_sym] || class_variable_get(name) or next
|
28
|
-
flags << "-#{key}" << val.to_s
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
7
|
+
config_accessor :jar_path, klass: Option::StringOption, default: '/usr/java/lib/sudachi.jar'
|
32
8
|
end
|
data/lib/rudachi/configurable.rb
CHANGED
@@ -6,13 +6,12 @@ module Rudachi
|
|
6
6
|
|
7
7
|
private
|
8
8
|
|
9
|
-
def config_accessor(name, default:
|
10
|
-
|
9
|
+
def config_accessor(name, klass:, default:)
|
10
|
+
module_eval <<~EOS
|
11
11
|
def self.#{name}; @@#{name}; end
|
12
|
-
def self.#{name}=(val); @@#{name} = val; end
|
12
|
+
def self.#{name}=(val); @@#{name} = #{klass}.new(val); end
|
13
13
|
EOS
|
14
|
-
|
15
|
-
class_variable_set("@@#{name}", default)
|
14
|
+
public_send("#{name}=", default)
|
16
15
|
end
|
17
16
|
end
|
18
17
|
end
|
data/lib/rudachi/file_parser.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'rudachi/config'
|
1
|
+
require 'rudachi/option/config'
|
2
2
|
require 'rudachi/loader'
|
3
3
|
|
4
4
|
module Rudachi
|
@@ -11,7 +11,7 @@ module Rudachi
|
|
11
11
|
Rudachi.load!
|
12
12
|
|
13
13
|
@output = Java::ByteArrayOutputStream.new
|
14
|
-
@opts = opts
|
14
|
+
@opts = Option.new(opts)
|
15
15
|
end
|
16
16
|
|
17
17
|
def parse(path)
|
data/lib/rudachi/loader.rb
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
module Rudachi
|
2
|
-
|
3
|
-
|
2
|
+
class UnavailableError < StandardError; end;
|
3
|
+
|
4
|
+
class << self
|
5
|
+
def load!
|
6
|
+
raise UnavailableError, 'jruby_required' unless jruby?
|
7
|
+
require 'rudachi/dependencies'
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def jruby?
|
13
|
+
RUBY_PLATFORM == 'java'
|
14
|
+
end
|
4
15
|
end
|
5
16
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Rudachi
|
2
|
+
class Option
|
3
|
+
class BooleanOption < Delegator
|
4
|
+
def initialize(bool)
|
5
|
+
raise ArgumentError, 'must be `false` or `true`' unless bool.is_a?(FalseClass) || bool.is_a?(TrueClass)
|
6
|
+
@value = bool
|
7
|
+
end
|
8
|
+
|
9
|
+
def __getobj__; @value; end
|
10
|
+
def enable?; @value; end
|
11
|
+
def with_arg?; false; end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'rudachi/configurable'
|
2
|
+
require 'rudachi/option/boolean_option'
|
3
|
+
require 'rudachi/option/string_option'
|
4
|
+
|
5
|
+
module Rudachi
|
6
|
+
class Option
|
7
|
+
extend Configurable
|
8
|
+
|
9
|
+
# @see https://github.com/WorksApplications/Sudachi#options
|
10
|
+
config_accessor :r, klass: StringOption, default: nil
|
11
|
+
config_accessor :s, klass: StringOption, default: nil
|
12
|
+
config_accessor :p, klass: StringOption, default: nil
|
13
|
+
config_accessor :m, klass: StringOption, default: nil
|
14
|
+
config_accessor :o, klass: StringOption, default: nil
|
15
|
+
config_accessor :a, klass: BooleanOption, default: false
|
16
|
+
config_accessor :d, klass: BooleanOption, default: false
|
17
|
+
config_accessor :t, klass: BooleanOption, default: false
|
18
|
+
config_accessor :ts, klass: BooleanOption, default: false
|
19
|
+
config_accessor :f, klass: BooleanOption, default: false
|
20
|
+
config_accessor :h, klass: BooleanOption, default: false
|
21
|
+
|
22
|
+
def self.cmds(opts=Option.new)
|
23
|
+
class_variables.each_with_object([]) do |name, flags|
|
24
|
+
key = name[2..-1].to_sym
|
25
|
+
opt = opts.get(key) { class_variable_get(name) }
|
26
|
+
next unless opt&.enable?
|
27
|
+
flags << "-#{key}"
|
28
|
+
flags << opt.to_s if opt.with_arg?
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def initialize(**hash)
|
33
|
+
@opts = hash.each_with_object({}) do |(key, val), _hash|
|
34
|
+
raise ArgumentError, %{unknown option "#{key}"} unless self.class.class_variable_defined?("@@#{key}")
|
35
|
+
begin
|
36
|
+
_hash[key.to_sym] = self.class.class_variable_get("@@#{key}").class.new(val)
|
37
|
+
rescue ArgumentError => e
|
38
|
+
raise ArgumentError, %{"#{key}" #{e.message}}
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def get(key, &block)
|
44
|
+
@opts.key?(key) ? @opts[key] : block&.call
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module Rudachi
|
2
|
+
class Option
|
3
|
+
class StringOption < Delegator
|
4
|
+
def initialize(str)
|
5
|
+
raise ArgumentError, 'must be `nil` or `String`' unless str.nil? || str.is_a?(String)
|
6
|
+
@value = str
|
7
|
+
end
|
8
|
+
|
9
|
+
def __getobj__; @value; end
|
10
|
+
def enable?; !!@value; end
|
11
|
+
def with_arg?; true; end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/rudachi/version.rb
CHANGED
data/lib/rudachi.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rudachi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- SongCastle
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-04-
|
11
|
+
date: 2022-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Sudachi wrapper for JRuby.
|
14
14
|
email: "-"
|
@@ -23,6 +23,9 @@ files:
|
|
23
23
|
- lib/rudachi/dependencies.rb
|
24
24
|
- lib/rudachi/file_parser.rb
|
25
25
|
- lib/rudachi/loader.rb
|
26
|
+
- lib/rudachi/option/boolean_option.rb
|
27
|
+
- lib/rudachi/option/config.rb
|
28
|
+
- lib/rudachi/option/string_option.rb
|
26
29
|
- lib/rudachi/text_parser.rb
|
27
30
|
- lib/rudachi/version.rb
|
28
31
|
homepage: https://github.com/SongCastle/rudachi
|