Class: Keystone::StringUtil

Inherits:
Object show all
Defined in:
lib/keystone/string_util.rb

Constant Summary collapse

MULTIBYTE_SPACE =
[0x3000].pack("U")
PRESERVED_QUERY_WORDS_RE =
/(AND|OR|ANDNOT)/

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.downcase_roma_number(st) ⇒ Object

TODO



62
63
64
# File 'lib/keystone/string_util.rb', line 62

def self.downcase_roma_number(st)
  st.tr("ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ", "ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ")
end

.int_to_splitted_path(i_value, value_length, base_folder, suffix = "") ⇒ Object

Raises:

  • (RangeError)


4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/keystone/string_util.rb', line 4

def self.int_to_splitted_path(i_value,value_length,base_folder,suffix="")
  file_name = Integer(i_value).to_s
  raise RangeError,"value_length must bigger than 0" if value_length < 1
  raise RangeError, 'i_value length is bigger than value_length' if file_name.size > value_length
  file_name = file_name.rjust(value_length, '0')
  new_path = base_folder.dup
  group_regex = ""
  i = value_length
  group_cnt = 0
  loop do
    group_cnt += 1
    if i > 2
      group_regex << "(\\d\\d\\d)"
      i -= 3
      break if i < 1
    else
      group_regex = "(#{"\\d"*i})" + group_regex
      break
    end
  end
  file_name.gsub(/#{group_regex}/) do |hit|
    1.upto(group_cnt) do |i|
      new_path << "/#{Regexp.last_match[i]}"
    end
  end
  new_path << suffix if suffix != ""
  return new_path
end

.reverse_mail_address(mail) ⇒ Object



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

def self.reverse_mail_address(mail)
  if mail.index('@') == nil
    return mail
  end
  user,dom = mail.split('@')
  if dom == nil
    return "@#{user}"
  end
  return dom.split('.').reverse.join(".") + "@" + user
end

.serach_string_to_array(query) ⇒ Object

adviced by Mr.morohashi



49
50
51
52
53
54
55
56
57
# File 'lib/keystone/string_util.rb', line 49

def self.serach_string_to_array(query)
  tokens = query.scan(/'([^']*)'|"([^"]*)"|([^\s#{MULTIBYTE_SPACE}]*)/).flatten.reject{|i| i == nil || i == "" }
  tokens.map do |token|
    next unless token
    #token.gsub!(PRESERVED_QUERY_WORDS_RE, $1.downcase) if token =~ PRESERVED_QUERY_WORDS_RE
    token.gsub!(/\A['"]|['"]\z/, '') # strip quatos
    token
  end
end

.to_searchtext(str) ⇒ Object

making search text for indexing



69
70
71
72
73
74
# File 'lib/keystone/string_util.rb', line 69

def self.to_searchtext(str)
  self.downcase_roma_number(Moji.han_to_zen(
      #Moji.zen_to_han(str,Moji::ZEN_ALNUM | Moji::ZEN_SYMBOL).downcase,Moji::HAN_KATA | Moji::HAN_JSYMBOL).tr("ー~/","ー~/")
      Moji.zen_to_han(str,Moji::ZEN_ALNUM | Moji::ZEN_SYMBOL).downcase,Moji::HAN_KATA | Moji::HAN_JSYMBOL)
  )
end

Instance Method Details

#to_fileable_st(st) ⇒ Object

指定された文字列より以外を取り除く



82
83
84
# File 'lib/keystone/string_util.rb', line 82

def to_fileable_st(st)
  st.gsub(/[^\w\-_\.]/,"")
end