Class: Keystone::StringUtil
Constant Summary collapse
- MULTIBYTE_SPACE =
[0x3000].pack("U")
- PRESERVED_QUERY_WORDS_RE =
/(AND|OR|ANDNOT)/
Class Method Summary collapse
-
.downcase_roma_number(st) ⇒ Object
TODO.
- .int_to_splitted_path(i_value, value_length, base_folder, suffix = "") ⇒ Object
-
.remove_html_tag(html, tag, erace_all = false) ⇒ Object
tagで指定したhtmlタグを削除する.
- .reverse_mail_address(mail) ⇒ Object
-
.serach_string_to_array(query) ⇒ Object
adviced by Mr.morohashi.
-
.to_searchtext(str) ⇒ Object
making search text for indexing.
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
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 |
.remove_html_tag(html, tag, erace_all = false) ⇒ Object
tagで指定したhtmlタグを削除する
erace_all = true でタグのcontentsも丸ごと削除
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/keystone/string_util.rb', line 81 def self.remove_html_tag(html,tag,erace_all = false) poss = [] last_hit = 0 next_check_start = 0 str = html.clone strori = str.clone loop do pos,size=nil,nil if pos = str =~ /(<#{tag}.*?>)/ size = $1.size else break end last_hit = next_check_start + pos next_check_start = last_hit + size poss << last_hit str = str[pos+size..-1] end poss.reverse! str = strori poss.each do |pos| str1 = str[0..pos-1] str2 = str[pos..-1] str1 = '' if pos == 0 if erace_all str2.sub!(/<#{tag}.*?>(.*?)<\/#{tag}>/mi){''} else str2.sub!(/<#{tag}.*?>(.*?)<\/#{tag}>/mi){$1} end str = str1 + str2 end return str 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
指定された文字列より以外を取り除く
123 124 125 |
# File 'lib/keystone/string_util.rb', line 123 def to_fileable_st(st) st.gsub(/[^\w\-_\.]/,"") end |