Module: Randwordjp

Defined in:
lib/randwordjp.rb,
lib/randwordjp/version.rb

Overview

Randwordjp ランダムで日本語文字列などを生成するライブラリとなります。 can get random words(sentence).

Constant Summary collapse

VERSION =
'0.1.5'

Class Method Summary collapse

Class Method Details

.address(opts = {hyphen: false}) ⇒ Hash

日本の住所(都道府県、市区町村、字町名)を取得します

Parameters:

  • opts (Hash) (defaults to: {hyphen: false})

    オプション設定

Options Hash (opts):

  • :hyphen (Boolean)

    true 郵便番号をハイフンありで出力 false 郵便番号をハイフン無しで出力

Returns:

  • (Hash)

    :zip => 郵便番号, :kanji_t => 都道府県漢字, :kanji => 漢字 , :kana_t => 都道府県カナ , :kana => カナ, :todofuken_code => 都道府県コード



264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
# File 'lib/randwordjp.rb', line 264

def self.address(opts = {hyphen: false} )
  table = 'addresslist'
  Sequel.connect(@db_connect) do |db|
    data = db.from(table).where(type: 1)
    no = Random.rand(data.count)
    data = data.select(:zip, :kanji_t,:kanji,:kana_t, :kana)
    @address_data = data.limit(1).offset(no).first
  end
  if opts[:hyphen]
    @address_data[:zip]= @address_data[:zip][0,3] + "-" + @address_data[:zip][3,4]
  end
  todofuken_list = YAML.load_file(@yamlfile)['worddata']['todofuken_list']
  todofuken_list.each_index do |i|
    if todofuken_list[i] == @address_data[:kanji_t]
      @address_data[:todofuken_code] = format('%02d', (i + 1))
    end
  end

  return @address_data
end

.alphabet(length = 10, opts = { char_case: :all }) ⇒ String

ローマ字の文字列を取得する。

Parameters:

  • length (Integer) (defaults to: 10)

    文字列長

  • opts (Boolean) (defaults to: { char_case: :all })

    オプション設定

Options Hash (opts):

  • :char_case (Boolean)

    文字の大小を制限する。

Returns:

  • (String)

    lengthで指定した文字列長の文字列



98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/randwordjp.rb', line 98

def self.alphabet(length = 10, opts = { char_case: :all })
  words = []
  base = []
  case opts[:char_case]
  when :upper
    base += ('A'..'Z').to_a
  when :lower
    base += ('a'..'z').to_a
  when :all
    base += ('A'..'Z').to_a + ('a'..'z').to_a
  else
    puts "char_case can set :lower or :upper, :all."
    return false
  end
  length.times do

    words << base.sample
  end
  words.join
end

.alphanumeric(length = 10, opts = { char_case: :all }) ⇒ String

数字+ローマ字の文字列を取得する。

Parameters:

  • length (Integer) (defaults to: 10)

    文字列長

  • opts (Boolean) (defaults to: { char_case: :all })

    オプション設定

Options Hash (opts):

  • :char_case (Boolean)

    文字の大小を制限する。

Returns:

  • (String)

    lengthで指定した文字列長の文字列



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/randwordjp.rb', line 124

def self.alphanumeric(length = 10, opts = { char_case: :all })
  words = []
  base = []
  case opts[:char_case]
  when :upper
    base += ('A'..'Z').to_a
  when :lower
    base += ('a'..'z').to_a
  when :all
    base += ('A'..'Z').to_a + ('a'..'z').to_a
  else
    puts "char_case can set :lower or :upper, :all."
    return false
  end
  base += ('0'..'9').to_a
  length.times do
    words << base.sample
  end
  words.join
end

.alphanumeric_plus(length = 10, opts = { char_case: :all }) ⇒ String

数字+ローマ字+記号(-_)の文字列を取得する。

Parameters:

  • length (Integer) (defaults to: 10)

    文字列長

  • opts (Boolean) (defaults to: { char_case: :all })

    オプション設定

Options Hash (opts):

  • :char_case (Boolean)

    文字の大小を制限する。

Returns:

  • (String)

    lengthで指定した文字列長の文字列



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# File 'lib/randwordjp.rb', line 150

def self.alphanumeric_plus(length = 10, opts = { char_case: :all })
  words = []
  base = []
  case opts[:char_case]
  when :upper
    base += ('A'..'Z').to_a
  when :lower
    base += ('a'..'z').to_a
  when :all
    base += ('A'..'Z').to_a + ('a'..'z').to_a
  else
    puts "char_case can set :lower or :upper, :all."
    return false
  end
  base += ('0'..'9').to_a + ['-', '_']
  words << alphabet(1)
  (length - 1).times do
    words << base.sample
  end
  words.join
end

.date(opts = { before: 100, after: 100 ,date: Date.today}) ⇒ Date

Date型の日付を取得する。

Parameters:

  • opts (Hash) (defaults to: { before: 100, after: 100 ,date: Date.today})

    オプション指定

Options Hash (opts):

  • :date (Date)

    指定日

  • :before (Integer)

    指定日より前の最大何日までを対象とする

  • :after (Integer)

    指定日より後の最大何日までを対象とする

Returns:

  • (Date)

    日付を取得する



190
191
192
193
# File 'lib/randwordjp.rb', line 190

def self.date(opts ={ before: 100, after: 100 ,date: Date.today} )
  opts[:date] ||= Date.today
  return opts[:date] + (rand(opts[:after].to_i + opts[:before].to_i) - opts[:before].to_i )
end

.mail_address(opts = {domain: 'rand', local_length: 10, domain_length: 10}) ⇒ String

メールアドレス風の文字列を取得する。

Parameters:

  • opts (Hash) (defaults to: {domain: 'rand', local_length: 10, domain_length: 10})

    オプション指定

Options Hash (opts):

  • :local_length (Integer)

    ローカルパートの文字列長

  • :domain_length (Integer)

    ドメインパートの文字列長

  • :randword (String)

    トップレベルドメインの文字列を指定する。

Returns:

  • (String)

    メールアドレスを取得する 



178
179
180
181
182
# File 'lib/randwordjp.rb', line 178

def self.mail_address(opts ={domain: 'rand', local_length: 10, domain_length: 10})
  local_part = alphanumeric_plus(rand(opts[:local_length]) + 1, char_case: :lower)
  domain_part = alphanumeric(rand(opts[:domain_length]) + 1, char_case: :lower) + '.' + opts[:domain]
  local_part + '@' + domain_part
end

.mynumberObject

マイナンバーの文字列を取得する(チェックデジットはまだ仮設定)



34
35
36
37
38
39
40
41
42
# File 'lib/randwordjp.rb', line 34

def self.mynumber()
  words = ""
  12.times do
    words +=  ('0'..'9').to_a.sample 
  end
  array_words = words.split("")
  array_words[(array_words.length - 1)] = generate_mynumber_digit(words.to_s)
  return array_words.join
end

.myojiHash

Hash型の苗字データを取得する

Returns:

  • (Hash)

    :kanji => 漢字名, :kana => 読み仮名



204
205
206
207
208
209
210
211
212
213
214
215
# File 'lib/randwordjp.rb', line 204

def self.myoji
  table = 'myojilist'
  Sequel.connect(@db_connect) do |db|
    data = db.from(table)
    id = Random.rand(data.count + 1)
    while id == 0
      id = Random.rand(data.count + 1)
    end
    @myoji_datum = data.select(:kanji, :kana).where(id: id).first
  end
  { kanji: @myoji_datum[:kanji], kana: @myoji_datum[:kana] }
end

.namae(opts = {only: false }) ⇒ Hash

Hash型の名前データを取得する genderは男性はMで女性はFになります。

Parameters:

  • opts (Hash) (defaults to: {only: false })

    オプション設定

Options Hash (opts):

  • :only (Hash)

    :male 男性のみの出力 :female 女性のみの出力

Returns:

  • (Hash)

    :kanji => 漢字名, :kana => 読み仮名, :gender => 性別



222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
# File 'lib/randwordjp.rb', line 222

def self.namae(opts = {only: false } )
  table = 'namaelist'
  Sequel.connect(@db_connect) do |db|
    data = db.from(table)
    if opts[:only] == :male
      data = data.where(gender: 1)
    elsif opts[:only] == :female
      data = data.where(gender: 2)
    end
    no = Random.rand(data.count)
    data = data.select(:kanji, :kana, :gender)
    @namae_datum = data.limit(1).offset(no).first
  end
  gender = 'M'
  if @namae_datum[:gender] == 2
    gender = 'F'
  end
  { kanji: @namae_datum[:kanji], kana: @namae_datum[:kana], gender: gender }
end

.numeric(length = 10) ⇒ Object

半角数字の文字列を取得する

Parameters:

  • length (Integer) (defaults to: 10)

    文字列長 # @return [String] lengthで指定した文字列長の数字文字列



25
26
27
28
29
30
31
# File 'lib/randwordjp.rb', line 25

def self.numeric(length = 10)
  words = []
  length.times do
    words << ('0'..'9').to_a.sample
  end
  words.join
end

.todofukenString

String型の都道府県名を取得する

Returns:

  • (String)

    都道府県名



197
198
199
200
# File 'lib/randwordjp.rb', line 197

def self.todofuken
  todofuken_list = YAML.load_file(@yamlfile)['worddata']['todofuken_list']
  todofuken_list.sample
end

.zenkaku_all(length = 10) ⇒ String

全角日本語の文字列を取得する。 漢字は第一水準となる。

Parameters:

  • length (Integer) (defaults to: 10)

    文字列長

Returns:

  • (String)

    lengthで指定した文字列長の文字列



48
49
50
51
52
53
54
55
# File 'lib/randwordjp.rb', line 48

def self.zenkaku_all(length = 10)
  words = []
  base = YAML.load_file(@yamlfile)['worddata']['daiichi']
  length.times do
    words << base.split(//).sample
  end
  words.join
end

.zenkaku_hirakana(length = 10, opts = { old: false }) ⇒ String

全角ひらがなの文字列を取得する。

Parameters:

  • length (Integer) (defaults to: 10)

    文字列長

  • opts (Boolean) (defaults to: { old: false })

    オプション設定

Options Hash (opts):

  • :old (Boolean)

    旧仮名文字の利用の可否

Returns:

  • (String)

    lengthで指定した文字列長の文字列



80
81
82
83
84
85
86
87
88
89
90
91
# File 'lib/randwordjp.rb', line 80

def self.zenkaku_hirakana(length = 10, opts = { old: false })
  words = []
  if opts[:old]
    base = (''..'').to_a
  else
    base = (''..'').to_a.join.gsub(/ゐゑ/, '').split(//)
  end
  length.times do
    words << base.sample
  end
  words.join
end

.zenkaku_katakana(length = 10, opts = { old: false }) ⇒ String

全角カタカナの文字列を取得する。

Parameters:

  • length (Integer) (defaults to: 10)

    文字列長

  • opts (Boolean) (defaults to: { old: false })

    オプション設定

Options Hash (opts):

  • :old (Boolean)

    旧仮名文字の利用の可否

Returns:

  • (String)

    lengthで指定した文字列長の文字列



62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/randwordjp.rb', line 62

def self.zenkaku_katakana(length = 10, opts = { old: false })
  words = []
  if opts[:old]
    base = (''..'').to_a
  else
    base = (''..'').to_a.join.gsub(/ヰヱ/, '').split(//)
  end
  length.times do
    words << base.sample
  end
  words.join
end

.zip(opts = {hyphen: false }) ⇒ String

日本の郵便番号を取得します

Parameters:

  • opts (Hash) (defaults to: {hyphen: false })

    オプション設定

Options Hash (opts):

  • :hyphen (Boolean)

    true 郵便番号をハイフンありで出力 false 郵便番号をハイフン無しで出力

Returns:

  • (String)

    郵便番号



246
247
248
249
250
251
252
253
254
255
256
257
258
# File 'lib/randwordjp.rb', line 246

def self.zip(opts = {hyphen: false } )
  table = 'addresslist'
  Sequel.connect(@db_connect) do |db|
    data = db.from(table)
    no = Random.rand(data.count)
    data = data.select(:zip)
    @zip_data = (data.limit(1).offset(no).first)[:zip]
  end
  if opts[:hyphen]
    return @zip_data[0,3] + "-" + @zip_data[3,4]
  end
  return @zip_data
end