miyabi 0.1.2 → 0.2.0

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
  SHA256:
3
- metadata.gz: 76bf59a957c90d9f6df20eda03f8db7e9847bb0c509fe25c2c71550b49d9ce5b
4
- data.tar.gz: b150b5eb7b8b4d33dad208156c6f9507e48a6162722f04d5b21c8f10bc27db92
3
+ metadata.gz: 99b102c6ddb23856afc900c4b57c977c46743cf18cd5f97024ed9e6bd125ba60
4
+ data.tar.gz: 2c72effe390716b9383c17cb9558128143b9134aca7fdb00ccef4884b7575ba3
5
5
  SHA512:
6
- metadata.gz: 155682d907e72f54cc2b8f13c7582a62b34c5cd0270b36479d31a3ba22714b0fa628b977f2a84ecee7781c471447ea6c785aac6cf8f834498497f694a0edaa20
7
- data.tar.gz: 801e29a7233f90a7f3b241e67137963ef370830c947aa88d7e143f79db3f72c20d051a5bd731286729031dcfffab42bd96278923ba910b7483b6894479b5f6bc
6
+ metadata.gz: bba1ce74679da35563fe2aa2d9b3dbe2db46448674691d6d1fa81ccd44fd8118bbcb4522db47642f51c24ad367168a21a9db43b809f954aa608f690956b119b7
7
+ data.tar.gz: f8eb09cb23bc4cf918e025cbe7bd085b9dfde100a7d564e43ce4dab795274277895ca7aca4069d5f8bdf1587cc19cc7a9aabbe39d5350b6f53856f02b16029ad
data/.rubocop.yml ADDED
@@ -0,0 +1,18 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ AllCops:
4
+ NewCops: enable
5
+ TargetRubyVersion: 3.0
6
+
7
+ Style/FrozenStringLiteralComment:
8
+ Enabled: true
9
+ EnforcedStyle: never
10
+
11
+ Style/MutableConstant:
12
+ Enabled: false
13
+
14
+ Metrics/ClassLength:
15
+ Enabled: false
16
+
17
+ Metrics/MethodLength:
18
+ Enabled: false
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,28 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2023-05-13 02:36:18 UTC using RuboCop version 1.50.2.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 5
10
+ # Configuration parameters: NamePrefix, ForbiddenPrefixes, AllowedMethods, MethodDefinitionMacros.
11
+ # NamePrefix: is_, has_, have_
12
+ # ForbiddenPrefixes: is_, has_, have_
13
+ # AllowedMethods: is_a?
14
+ # MethodDefinitionMacros: define_method, define_singleton_method
15
+ Naming/PredicateName:
16
+ Exclude:
17
+ - 'spec/**/*'
18
+ - 'lib/check.rb'
19
+
20
+ # Offense count: 3
21
+ # Configuration parameters: AllowedConstants.
22
+ Style/Documentation:
23
+ Exclude:
24
+ - 'spec/**/*'
25
+ - 'test/**/*'
26
+ - 'lib/check.rb'
27
+ - 'lib/format.rb'
28
+ - 'lib/miyabi.rb'
data/CHANGELOG.md CHANGED
@@ -9,11 +9,22 @@ The format is based on [Keep a Changelog][cl], and this project adheres to [Sema
9
9
 
10
10
  ## [Unreleased]
11
11
 
12
+ ## [0.2.0]
13
+
14
+ Trivial changes:
15
+
16
+ * Use net/http and Nokogiri instead of Mechanize.
17
+
18
+ ### Added
19
+
20
+ * modules to provide instance methods for `String`: `Miyabi::CheckString` and `Miyabi::FormatString`
21
+
12
22
  ## [0.1.2]
13
23
 
14
24
  Trivial changes:
15
25
 
16
26
  * Added this changelog file.
27
+ * Lint Ruby sources with RuboCop.
17
28
 
18
29
  ### Fixed
19
30
 
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
- gemspec
3
+ gemspec
data/Rakefile CHANGED
@@ -1,6 +1,6 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
3
 
4
4
  RSpec::Core::RakeTask.new(:spec)
5
5
 
6
- task :default => :spec
6
+ task default: :spec
data/bin/console CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require "bundler/setup"
4
- require "miyabi"
3
+ require 'bundler/setup'
4
+ require 'miyabi'
5
5
 
6
6
  # You can add fixtures and/or initialization code here to make experimenting
7
7
  # with your gem easier. You can also use a different console, if you like.
@@ -10,5 +10,5 @@ require "miyabi"
10
10
  # require "pry"
11
11
  # Pry.start
12
12
 
13
- require "irb"
13
+ require 'irb'
14
14
  IRB.start(__FILE__)
data/lib/check.rb CHANGED
@@ -1,26 +1,5 @@
1
- class String
2
- def is_hira?
3
- return true if self =~ /\p{hiragana}/
4
- false
5
- end
6
-
7
- def is_japanese?
8
- return true if self =~ /\A(?:\p{Hiragana}|\p{Katakana}|[ー-]|[一-龠々])+\z/
9
- false
10
- end
11
-
12
- def is_kana?
13
- return true if self =~ /\p{katakana}/
14
- false
15
- end
1
+ require_relative "miyabi/check_string"
16
2
 
17
- def is_kanji?
18
- return true if self =~ /^[一-龥]+$/
19
- false
20
- end
21
-
22
- def is_roman?
23
- return true if self =~ /^[a-zA-Z]+$/
24
- false
25
- end
26
- end
3
+ class String
4
+ include ::Miyabi::CheckString
5
+ end
data/lib/format.rb CHANGED
@@ -1,145 +1,5 @@
1
- require 'mechanize'
2
- class String
3
- def to_kanhira
4
- agent = Mechanize.new
5
- agent.get("https://yomikatawa.com/kanji/#{self}").search('#yomikata tbody tr td').first.inner_text
6
- end
7
-
8
- def to_kana
9
- self.tr('ぁ-ん','ァ-ン')
10
- end
11
-
12
- def to_hira
13
- self.tr('ァ-ン','ぁ-ん')
14
- end
15
-
16
- def to_roman
17
- s = self.to_kana
18
- s.gsub(/[#{s}]/, kana_roman)
19
- end
20
-
21
- private
22
- def kana_roman
23
- {
24
- 'ア' => 'a',
25
- 'イ' => 'i',
26
- 'ウ' => 'u',
27
- 'エ' => 'e',
28
- 'オ' => 'o',
29
- 'カ' => 'ka',
30
- 'キ' => 'ki',
31
- 'ク' => 'ku',
32
- 'ケ' => 'ke',
33
- 'コ' => 'ko',
34
- 'サ' => 'sa',
35
- 'シ' => 'shi',
36
- 'ス' => 'su',
37
- 'セ' => 'se',
38
- 'ソ' => 'so',
39
- 'タ' => 'ta',
40
- 'チ' => 'chi',
41
- 'ツ' => 'tsu',
42
- 'テ' => 'te',
43
- 'ト' => 'to',
44
- 'ナ' => 'na',
45
- 'ニ' => 'ni',
46
- 'ヌ' => 'nu',
47
- 'ネ' => 'ne',
48
- 'ノ' => 'no',
49
- 'ハ' => 'ha',
50
- 'ヒ' => 'hi',
51
- 'フ' => 'fu',
52
- 'ヘ' => 'he',
53
- 'ホ' => 'ho',
54
- 'マ' => 'ma',
55
- 'ミ' => 'mi',
56
- 'ム' => 'mu',
57
- 'メ' => 'me',
58
- 'モ' => 'mo',
59
- 'ヤ' => 'ya',
60
- 'ユ' => 'yu',
61
- 'ヨ' => 'yo',
62
- 'ラ' => 'ra',
63
- 'リ' => 'ri',
64
- 'ル' => 'ru',
65
- 'レ' => 're',
66
- 'ロ' => 'ro',
67
- 'ワ' => 'wa',
68
- 'ヰ' => 'i',
69
- 'ヱ' => 'e',
70
- 'ヲ' => 'o',
71
- 'ン' => 'n',
72
- 'ガ' => 'ga',
73
- 'ギ' => 'gi',
74
- 'グ' => 'gu',
75
- 'ゲ' => 'ge',
76
- 'ゴ' => 'go',
77
- 'ザ' => 'za',
78
- 'ジ' => 'ji',
79
- 'ズ' => 'zu',
80
- 'ゼ' => 'ze',
81
- 'ゾ' => 'zo',
82
- 'ダ' => 'da',
83
- 'ヂ' => 'ji',
84
- 'ヅ' => 'zu',
85
- 'デ' => 'de',
86
- 'ド' => 'do',
87
- 'バ' => 'ba',
88
- 'ビ' => 'bi',
89
- 'ブ' => 'bu',
90
- 'ベ' => 'be',
91
- 'ボ' => 'bo',
92
- 'パ' => 'pa',
93
- 'ピ' => 'pi',
94
- 'プ' => 'pu',
95
- 'ペ' => 'pe',
96
- 'ポ' => 'po',
97
- 'キャ' => 'kya',
98
- 'キュ' => 'kyu',
99
- 'キョ' => 'kyo',
100
- 'シャ' => 'sha',
101
- 'シュ' => 'shu',
102
- 'ショ' => 'sho',
103
- 'チャ' => 'cha',
104
- 'チュ' => 'chu',
105
- 'チョ' => 'cho',
106
- 'ヂャ' => 'ja',
107
- 'ヂュ' => 'ju',
108
- 'ヂョ' => 'jo',
109
- 'ニャ' => 'nya',
110
- 'ニュ' => 'nyu',
111
- 'ニョ' => 'nyo',
112
- 'ヒャ' => 'hya',
113
- 'ヒュ' => 'hyu',
114
- 'ヒョ' => 'hyo',
115
- 'ミャ' => 'mya',
116
- 'ミュ' => 'myu',
117
- 'ミョ' => 'myo',
118
- 'リャ' => 'rya',
119
- 'リュ' => 'ryu',
120
- 'リョ' => 'ryo',
121
- 'ギャ' => 'gya',
122
- 'ギュ' => 'gyu',
123
- 'ギョ' => 'gyo',
124
- 'ジャ' => 'ja',
125
- 'ジュ' => 'ju',
126
- 'ジョ' => 'jo',
127
- 'ビャ' => 'bya',
128
- 'ビュ' => 'byu',
129
- 'ビョ' => 'byo',
130
- 'ピャ' => 'pya',
131
- 'ピュ' => 'pyu',
132
- 'ピョ' => 'pyo',
133
- 'ヴァ' => 'va',
134
- 'ヴィ' => 'vi',
135
- 'ヴ' => 'vu',
136
- 'ヴェ' => 've',
137
- 'ヴォ' => 'vo',
138
- 'ファ' => 'fa',
139
- 'フィ' => 'fi',
140
- 'フェ' => 'fe',
141
- 'フォ' => 'fo',
142
- }
143
- end
1
+ require_relative "miyabi/format_string"
144
2
 
3
+ class String
4
+ include ::Miyabi::FormatString
145
5
  end
@@ -0,0 +1,28 @@
1
+ module Miyabi
2
+ module CheckString
3
+ def is_hira?
4
+ return true if self =~ /\p{hiragana}/
5
+ false
6
+ end
7
+
8
+ def is_japanese?
9
+ return true if self =~ /\A(?:\p{Hiragana}|\p{Katakana}|[ー-]|[一-龠々])+\z/
10
+ false
11
+ end
12
+
13
+ def is_kana?
14
+ return true if self =~ /\p{katakana}/
15
+ false
16
+ end
17
+
18
+ def is_kanji?
19
+ return true if self =~ /^[一-龥]+$/
20
+ false
21
+ end
22
+
23
+ def is_roman?
24
+ return true if self =~ /^[a-zA-Z]+$/
25
+ false
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,151 @@
1
+ require 'net/http'
2
+ require 'nokogiri'
3
+
4
+ module Miyabi
5
+ module FormatString
6
+ def to_kanhira
7
+ http = Net::HTTP.new('yomikatawa.com', 443)
8
+ http.use_ssl = true
9
+ path = File.join('/kanji', self)
10
+ html = http.get(path).body
11
+ Nokogiri::HTML(html).search('#yomikata tbody tr td').first.inner_text
12
+ end
13
+
14
+ def to_kana
15
+ self.tr('ぁ-ん','ァ-ン')
16
+ end
17
+
18
+ def to_hira
19
+ self.tr('ァ-ン','ぁ-ん')
20
+ end
21
+
22
+ def to_roman
23
+ s = self.to_kana
24
+ s.gsub(/[#{s}]/, kana_roman)
25
+ end
26
+
27
+ private
28
+ def kana_roman
29
+ {
30
+ 'ア' => 'a',
31
+ 'イ' => 'i',
32
+ 'ウ' => 'u',
33
+ 'エ' => 'e',
34
+ 'オ' => 'o',
35
+ 'カ' => 'ka',
36
+ 'キ' => 'ki',
37
+ 'ク' => 'ku',
38
+ 'ケ' => 'ke',
39
+ 'コ' => 'ko',
40
+ 'サ' => 'sa',
41
+ 'シ' => 'shi',
42
+ 'ス' => 'su',
43
+ 'セ' => 'se',
44
+ 'ソ' => 'so',
45
+ 'タ' => 'ta',
46
+ 'チ' => 'chi',
47
+ 'ツ' => 'tsu',
48
+ 'テ' => 'te',
49
+ 'ト' => 'to',
50
+ 'ナ' => 'na',
51
+ 'ニ' => 'ni',
52
+ 'ヌ' => 'nu',
53
+ 'ネ' => 'ne',
54
+ 'ノ' => 'no',
55
+ 'ハ' => 'ha',
56
+ 'ヒ' => 'hi',
57
+ 'フ' => 'fu',
58
+ 'ヘ' => 'he',
59
+ 'ホ' => 'ho',
60
+ 'マ' => 'ma',
61
+ 'ミ' => 'mi',
62
+ 'ム' => 'mu',
63
+ 'メ' => 'me',
64
+ 'モ' => 'mo',
65
+ 'ヤ' => 'ya',
66
+ 'ユ' => 'yu',
67
+ 'ヨ' => 'yo',
68
+ 'ラ' => 'ra',
69
+ 'リ' => 'ri',
70
+ 'ル' => 'ru',
71
+ 'レ' => 're',
72
+ 'ロ' => 'ro',
73
+ 'ワ' => 'wa',
74
+ 'ヰ' => 'i',
75
+ 'ヱ' => 'e',
76
+ 'ヲ' => 'o',
77
+ 'ン' => 'n',
78
+ 'ガ' => 'ga',
79
+ 'ギ' => 'gi',
80
+ 'グ' => 'gu',
81
+ 'ゲ' => 'ge',
82
+ 'ゴ' => 'go',
83
+ 'ザ' => 'za',
84
+ 'ジ' => 'ji',
85
+ 'ズ' => 'zu',
86
+ 'ゼ' => 'ze',
87
+ 'ゾ' => 'zo',
88
+ 'ダ' => 'da',
89
+ 'ヂ' => 'ji',
90
+ 'ヅ' => 'zu',
91
+ 'デ' => 'de',
92
+ 'ド' => 'do',
93
+ 'バ' => 'ba',
94
+ 'ビ' => 'bi',
95
+ 'ブ' => 'bu',
96
+ 'ベ' => 'be',
97
+ 'ボ' => 'bo',
98
+ 'パ' => 'pa',
99
+ 'ピ' => 'pi',
100
+ 'プ' => 'pu',
101
+ 'ペ' => 'pe',
102
+ 'ポ' => 'po',
103
+ 'キャ' => 'kya',
104
+ 'キュ' => 'kyu',
105
+ 'キョ' => 'kyo',
106
+ 'シャ' => 'sha',
107
+ 'シュ' => 'shu',
108
+ 'ショ' => 'sho',
109
+ 'チャ' => 'cha',
110
+ 'チュ' => 'chu',
111
+ 'チョ' => 'cho',
112
+ 'ヂャ' => 'ja',
113
+ 'ヂュ' => 'ju',
114
+ 'ヂョ' => 'jo',
115
+ 'ニャ' => 'nya',
116
+ 'ニュ' => 'nyu',
117
+ 'ニョ' => 'nyo',
118
+ 'ヒャ' => 'hya',
119
+ 'ヒュ' => 'hyu',
120
+ 'ヒョ' => 'hyo',
121
+ 'ミャ' => 'mya',
122
+ 'ミュ' => 'myu',
123
+ 'ミョ' => 'myo',
124
+ 'リャ' => 'rya',
125
+ 'リュ' => 'ryu',
126
+ 'リョ' => 'ryo',
127
+ 'ギャ' => 'gya',
128
+ 'ギュ' => 'gyu',
129
+ 'ギョ' => 'gyo',
130
+ 'ジャ' => 'ja',
131
+ 'ジュ' => 'ju',
132
+ 'ジョ' => 'jo',
133
+ 'ビャ' => 'bya',
134
+ 'ビュ' => 'byu',
135
+ 'ビョ' => 'byo',
136
+ 'ピャ' => 'pya',
137
+ 'ピュ' => 'pyu',
138
+ 'ピョ' => 'pyo',
139
+ 'ヴァ' => 'va',
140
+ 'ヴィ' => 'vi',
141
+ 'ヴ' => 'vu',
142
+ 'ヴェ' => 've',
143
+ 'ヴォ' => 'vo',
144
+ 'ファ' => 'fa',
145
+ 'フィ' => 'fi',
146
+ 'フェ' => 'fe',
147
+ 'フォ' => 'fo',
148
+ }
149
+ end
150
+ end
151
+ end
@@ -1,3 +1,3 @@
1
1
  module Miyabi
2
- VERSION = "0.1.2"
2
+ VERSION = '0.2.0'
3
3
  end
data/lib/miyabi.rb CHANGED
@@ -1,6 +1,6 @@
1
- require "miyabi/version"
2
- require "format"
3
- require "check"
1
+ require_relative 'miyabi/version'
2
+ require_relative 'format'
3
+ require_relative 'check'
4
4
 
5
5
  module Miyabi
6
6
  end
data/miyabi.gemspec CHANGED
@@ -1,26 +1,25 @@
1
- # coding: utf-8
2
- lib = File.expand_path("../lib", __FILE__)
1
+ lib = File.expand_path('lib', __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "miyabi/version"
3
+ require 'miyabi/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "miyabi"
6
+ spec.name = 'miyabi'
8
7
  spec.version = Miyabi::VERSION
9
- spec.authors = ["Hironori Akaishi"]
10
- spec.email = ["ah.gm3622@gmail.com"]
8
+ spec.authors = ['Hironori Akaishi']
9
+ spec.email = ['ah.gm3622@gmail.com']
11
10
 
12
- spec.summary = %q{kana,hira,kanji formatter}
13
- spec.description = %q{Format Japanese characters}
14
- spec.homepage = ""
15
- spec.license = "MIT"
11
+ spec.summary = 'kana,hira,kanji formatter'
12
+ spec.description = 'Format Japanese characters'
13
+ spec.homepage = 'https://github.com/isy/miyabi'
14
+ spec.license = 'MIT'
15
+ spec.metadata['rubygems_mfa_required'] = 'true'
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
18
  f.match(%r{^(test|spec|features)/})
19
19
  end
20
- spec.bindir = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
23
21
 
24
- spec.add_development_dependency "rspec", "~> 3.12"
25
- spec.add_dependency "mechanize", "~> 2.9"
22
+ spec.required_ruby_version = '>= 3.0'
23
+ spec.add_dependency 'nokogiri', '~> 1.14'
24
+ spec.add_development_dependency 'rspec', '~> 3.12'
26
25
  end
metadata CHANGED
@@ -1,43 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miyabi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hironori Akaishi
8
8
  autorequire:
9
- bindir: exe
9
+ bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-09 00:00:00.000000000 Z
11
+ date: 2023-05-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rspec
14
+ name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.12'
20
- type: :development
19
+ version: '1.14'
20
+ type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.12'
26
+ version: '1.14'
27
27
  - !ruby/object:Gem::Dependency
28
- name: mechanize
28
+ name: rspec
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '2.9'
34
- type: :runtime
33
+ version: '3.12'
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
- version: '2.9'
40
+ version: '3.12'
41
41
  description: Format Japanese characters
42
42
  email:
43
43
  - ah.gm3622@gmail.com
@@ -47,6 +47,8 @@ extra_rdoc_files: []
47
47
  files:
48
48
  - ".gitignore"
49
49
  - ".rspec"
50
+ - ".rubocop.yml"
51
+ - ".rubocop_todo.yml"
50
52
  - ".travis.yml"
51
53
  - CHANGELOG.md
52
54
  - CODE_OF_CONDUCT.md
@@ -59,12 +61,15 @@ files:
59
61
  - lib/check.rb
60
62
  - lib/format.rb
61
63
  - lib/miyabi.rb
64
+ - lib/miyabi/check_string.rb
65
+ - lib/miyabi/format_string.rb
62
66
  - lib/miyabi/version.rb
63
67
  - miyabi.gemspec
64
- homepage: ''
68
+ homepage: https://github.com/isy/miyabi
65
69
  licenses:
66
70
  - MIT
67
- metadata: {}
71
+ metadata:
72
+ rubygems_mfa_required: 'true'
68
73
  post_install_message:
69
74
  rdoc_options: []
70
75
  require_paths:
@@ -73,7 +78,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
73
78
  requirements:
74
79
  - - ">="
75
80
  - !ruby/object:Gem::Version
76
- version: '0'
81
+ version: '3.0'
77
82
  required_rubygems_version: !ruby/object:Gem::Requirement
78
83
  requirements:
79
84
  - - ">="