mojicon 0.1.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/CHANGELOG.md +10 -2
- data/README.md +59 -11
- data/lib/mojicon/converter.rb +23 -41
- data/lib/mojicon/version.rb +1 -1
- metadata +80 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d396b14575c9ba5ab8fb0a9b96ee8dd425922e83803e8c0fd36a4834b839550b
|
4
|
+
data.tar.gz: 245017accf982cf7af606354ebec8e75eaf8add51b6c752c2c7b06e4b915a71c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 23b13f3779b82bbcb3d4b7ee6578c85fa7ad1e33cc4a69639391c321f20005012212c842e6fce6f664ded843e2cfcbc6265d10da8f7110507add400b06f5703e
|
7
|
+
data.tar.gz: 260c11ca6be1d7bf09b0bb58a268265c710f85514dd3c0b3e8212ccac652a5a2d6a199c40b63fbf9731ec468a46705896515e36758843dc5324ef7e5becb8f35
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,23 +1,71 @@
|
|
1
|
-
#
|
1
|
+
# Mojicon
|
2
2
|
|
3
|
-
|
3
|
+
Mojicon is a Ruby Gem designed to simplify text processing for Japanese characters. It provides a wide range of text transformation functionalities, including conversions between full-width and half-width characters, kana and hiragana, kanji numerals to Arabic numerals, Arabic numerals to kanji, and more. This Gem allows methods to be applied directly to string objects.
|
4
|
+
|
5
|
+
## Features
|
6
|
+
|
7
|
+
- Conversion between full-width and half-width characters
|
8
|
+
- Conversion between hiragana and katakana
|
9
|
+
- Conversion from kanji numerals to Arabic numerals and vice versa
|
10
|
+
- Conversion from old kanji to new kanji
|
11
|
+
- Flexible text processing through normalization and transformation
|
4
12
|
|
5
13
|
## Installation
|
6
14
|
|
7
|
-
Add
|
15
|
+
Add the following line to your Gemfile:
|
8
16
|
|
17
|
+
```ruby
|
9
18
|
gem 'mojicon'
|
10
|
-
|
19
|
+
```
|
11
20
|
|
12
|
-
|
13
|
-
|
21
|
+
Then, install the Gem using Bundler:
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
bundle install
|
25
|
+
```
|
14
26
|
|
15
|
-
|
27
|
+
Or, you can install the Gem directly:
|
16
28
|
|
17
|
-
|
29
|
+
```ruby
|
30
|
+
gem install mojicon
|
31
|
+
```
|
18
32
|
|
19
|
-
|
33
|
+
## Usage
|
20
34
|
|
21
|
-
|
22
|
-
|
35
|
+
With Mojicon, you can apply methods directly to string objects. For example:
|
36
|
+
|
37
|
+
```ruby
|
38
|
+
require 'mojicon'
|
39
|
+
|
40
|
+
str = "hoge"
|
41
|
+
puts str.han_to_zen
|
42
|
+
# => "hoge"
|
23
43
|
```
|
44
|
+
|
45
|
+
Available methods include:
|
46
|
+
|
47
|
+
- trim_space - Removes all full-width and half-width spaces from the string.
|
48
|
+
- zen_to_han - Converts full-width characters to half-width characters.
|
49
|
+
- han_to_zen - Converts half-width characters to full-width characters.
|
50
|
+
- kana_to_hira - Converts katakana to hiragana.
|
51
|
+
- hira_to_kana - Converts hiragana to katakana.
|
52
|
+
- kanji_to_arabic - Converts kanji numeral representations to Arabic numerals.
|
53
|
+
- arabic_to_kanji - Converts Arabic numerals to kanji numeral representations.
|
54
|
+
|
55
|
+
And many more.
|
56
|
+
|
57
|
+
## How to Contribute
|
58
|
+
|
59
|
+
1.Fork the repository.
|
60
|
+
|
61
|
+
2.Create a feature branch (`git checkout -b feature/fooBar`).
|
62
|
+
|
63
|
+
3.Commit your changes (`git commit -am 'Add some fooBar'`).
|
64
|
+
|
65
|
+
4.Push to the branch (`git push origin feature/fooBar`).
|
66
|
+
|
67
|
+
5.Create a new Pull Request.
|
68
|
+
|
69
|
+
## License
|
70
|
+
|
71
|
+
This project is licensed under the MIT License.
|
data/lib/mojicon/converter.rb
CHANGED
@@ -7,11 +7,10 @@ module Mojicon
|
|
7
7
|
using YaKansuji::CoreRefine
|
8
8
|
|
9
9
|
def trim_space
|
10
|
-
|
10
|
+
delete(" ")&.delete(" ")
|
11
11
|
end
|
12
12
|
|
13
13
|
def zen_to_han
|
14
|
-
return self if self&.nil?
|
15
14
|
return self unless match(/[^ -~。-゚]/)
|
16
15
|
|
17
16
|
space_trimmed_word = tr(" ", " ")
|
@@ -20,48 +19,39 @@ module Mojicon
|
|
20
19
|
end
|
21
20
|
|
22
21
|
def han_to_zen
|
23
|
-
return self if self&.nil?
|
24
|
-
|
25
22
|
converted = tr("A-Za-z0-9", "A-Za-z0-9")
|
26
23
|
space_converted = converted.tr(" ", " ")
|
27
24
|
nkf_converted = NKF.nkf("-w -X", space_converted)
|
28
|
-
nkf_converted.tr("\s!#$%&\'\"()⦅⦆⟨⟩*+,-./:;<=>?@[]^_
|
25
|
+
nkf_converted.tr("\s!#$%&\'\"()⦅⦆⟨⟩*+,-./:;<=>?@[]^_`−{|}~\\", " !#$%&'"()⦅⦆〈〉*+,-./:;<=>?@[]^_`-{|}~\")
|
29
26
|
end
|
30
27
|
|
31
28
|
def kana_to_hira
|
32
|
-
|
29
|
+
vu = tr("ヴ", "ゔ")
|
30
|
+
vu.tr("ァ-ヶ", "ぁ-ん")
|
33
31
|
end
|
34
32
|
|
35
33
|
def hira_to_kana
|
36
|
-
|
34
|
+
vu = tr("ゔ", "ヴ")
|
35
|
+
vu.tr("ぁ-ん", "ァ-ヶ")
|
37
36
|
end
|
38
37
|
|
39
38
|
def upper_to_down
|
40
|
-
return self if self&.nil?
|
41
|
-
|
42
39
|
downcased = downcase
|
43
|
-
downcased.tr("
|
40
|
+
downcased.tr("あいうえおつやゆよアイウエオツヤユヨアイウエオツヤユヨ", "ぁぃぅぇぉっゃゅょァィゥェォッャュョァィゥェォッャュョ")
|
44
41
|
end
|
45
42
|
|
46
43
|
def down_to_upper
|
47
|
-
return self if self&.nil?
|
48
|
-
|
49
44
|
upcased = upcase
|
50
|
-
upcased.tr("
|
45
|
+
upcased.tr("ぁぃぅぇぉっゃゅょァィゥェォッャュョァィゥェォッャュョ", "あいうえおつやゆよアイウエオツヤユヨアイウエオツヤユヨ")
|
51
46
|
end
|
52
47
|
|
53
|
-
def kanji_to_arabic
|
48
|
+
def kanji_to_arabic
|
54
49
|
kanji_pattern = /[一二三四五六七八九〇十百千万億兆]+/
|
55
50
|
kanji_numbers = scan(kanji_pattern).map(&:to_i)
|
56
51
|
replaced_str = gsub(kanji_pattern).with_index do |_match, index|
|
57
52
|
kanji_numbers[index].to_s
|
58
53
|
end
|
59
|
-
|
60
|
-
if conversion_zenkaku
|
61
|
-
replaced_str.han_to_zen
|
62
|
-
else
|
63
|
-
replaced_str
|
64
|
-
end
|
54
|
+
replaced_str.zen_to_han
|
65
55
|
end
|
66
56
|
|
67
57
|
def arabic_to_kanji(zero: true)
|
@@ -74,6 +64,7 @@ module Mojicon
|
|
74
64
|
YaKansuji.to_kan(arabic_numbers[index], :simple)
|
75
65
|
end
|
76
66
|
end
|
67
|
+
arabic_numbers.han_to_zen
|
77
68
|
end
|
78
69
|
|
79
70
|
def to_new_moji
|
@@ -81,9 +72,11 @@ module Mojicon
|
|
81
72
|
end
|
82
73
|
|
83
74
|
def equal?(other)
|
84
|
-
return false if nil?
|
75
|
+
return false if other.nil?
|
76
|
+
return false unless other.is_a?(String)
|
77
|
+
return true if self == other
|
85
78
|
|
86
|
-
candidate.include?(other)
|
79
|
+
candidate.include?(other.trim_space)
|
87
80
|
end
|
88
81
|
|
89
82
|
def candidate
|
@@ -95,26 +88,15 @@ module Mojicon
|
|
95
88
|
trim_space.hira_to_kana,
|
96
89
|
trim_space.upper_to_down,
|
97
90
|
trim_space.down_to_upper,
|
98
|
-
trim_space.zen_to_han.hira_to_kana,
|
99
|
-
trim_space.han_to_zen.kana_to_hira,
|
100
|
-
trim_space.han_to_zen.hira_to_kana,
|
101
|
-
trim_space.kana_to_hira.zen_to_han,
|
102
|
-
trim_space.kana_to_hira.han_to_zen,
|
103
|
-
trim_space.hira_to_kana.zen_to_han,
|
104
|
-
trim_space.hira_to_kana.han_to_zen,
|
105
|
-
trim_space.upper_to_down.zen_to_han,
|
106
|
-
trim_space.upper_to_down.han_to_zen,
|
107
|
-
trim_space.upper_to_down.kana_to_hira,
|
108
|
-
trim_space.upper_to_down.hira_to_kana,
|
109
|
-
trim_space.down_to_upper.zen_to_han,
|
110
|
-
trim_space.down_to_upper.han_to_zen,
|
111
|
-
trim_space.down_to_upper.kana_to_hira,
|
112
|
-
trim_space.down_to_upper.hira_to_kana,
|
113
|
-
trim_space.to_new_moji,
|
114
|
-
trim_space.arabic_to_kanji,
|
115
|
-
trim_space.arabic_to_kanji(zero: true),
|
116
91
|
trim_space.kanji_to_arabic,
|
117
|
-
trim_space.
|
92
|
+
trim_space.arabic_to_kanji,
|
93
|
+
trim_space.arabic_to_kanji(zero: false),
|
94
|
+
trim_space.to_new_moji,
|
95
|
+
trim_space.hira_to_kana.zen_to_han,
|
96
|
+
trim_space.kanji_to_arabic.han_to_zen,
|
97
|
+
trim_space.arabic_to_kanji.zen_to_han,
|
98
|
+
trim_space.arabic_to_kanji(zero: false).zen_to_han,
|
99
|
+
trim_space.han_to_zen.kana_to_hira
|
118
100
|
].uniq
|
119
101
|
end
|
120
102
|
end
|
data/lib/mojicon/version.rb
CHANGED
metadata
CHANGED
@@ -1,17 +1,90 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mojicon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- philosophynote
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-03-
|
12
|
-
dependencies:
|
13
|
-
|
14
|
-
|
11
|
+
date: 2024-03-06 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: factory_bot
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: itaiji
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: nkf
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: ya_kansuji
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: zen_to_i
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
description: |
|
84
|
+
Provides a wide range of text transformation functionalities,
|
85
|
+
including conversions between full-width and half-width characters,
|
86
|
+
kana and hiragana, kanji numerals to Arabic numerals,
|
87
|
+
Arabic numerals to kanji, and more.
|
15
88
|
email:
|
16
89
|
- adverdest@gmail.com
|
17
90
|
executables: []
|
@@ -35,8 +108,8 @@ licenses:
|
|
35
108
|
metadata:
|
36
109
|
allowed_push_host: https://rubygems.org/
|
37
110
|
homepage_uri: https://github.com/philosophynote/mojicon
|
38
|
-
source_code_uri: https://github.com/philosophynote/mojicon/blob/v0.
|
39
|
-
changelog_uri: https://github.com/philosophynote/mojicon/tree/v0.
|
111
|
+
source_code_uri: https://github.com/philosophynote/mojicon/blob/v0.3.0/CHANGELOG.md
|
112
|
+
changelog_uri: https://github.com/philosophynote/mojicon/tree/v0.3.0
|
40
113
|
post_install_message:
|
41
114
|
rdoc_options: []
|
42
115
|
require_paths:
|