Class: String
- Inherits:
-
Object
- Object
- String
- Defined in:
- lib/ext/string.rb,
lib/ext/translator.rb
Instance Method Summary collapse
-
#cama_add_postfix_file_name(postfix) ⇒ Object
Sample: ‘/var/www/media/132/logo.png’.cama_add_postfix_file_name(‘_2’) ==> /var/www/media/132/logo_2.png.
-
#cama_add_postfix_url(postfix) ⇒ Object
convert url into custom url with postfix, sample: “”.cama_add_postfix_url(‘thumbs/’) into .
- #cama_fix_filename ⇒ Object
-
#cama_fix_media_key ⇒ Object
fix file media keys: avoid duplicated slashes and force to start with slash.
-
#cama_fix_slash ⇒ Object
remove double or more secuencial slashes, like: ‘/a//b/c/d///abs’.cama_fix_slash => /a/b/c/d/abs.
-
#cama_log_style(color = :red) ⇒ Object
Colorized Ruby output color: (:red, :green, :blue, :pink, :light_blue, :yellow).
-
#cama_parse_image_version(version_name = '', check_url = false) ⇒ Object
Parse the url to get the image version version_name: (String, default empty) version name, if this is empty, this will return the image version for thumb of the image, sample: ‘localhost/my_image.png’.cama_parse_image_version(”) => if this is present, this will return the image version generated, sample: , sample: ‘localhost/my_image.png’.cama_parse_image_version(‘200x200’) => check_url: (boolean, default false) if true the image version will be verified, i.e.
-
#cama_replace_codes(values, format_code = '[') ⇒ Object
parse all codes in current text to replace with values sample: “Hello [c1]”.cama_replace_codes(‘World’) ==> Hello World.
-
#cama_true? ⇒ Boolean
check if current string is true or false cases for true: ‘1’ | ‘true’ cases for false: ‘0’ | ‘false’ | ” return boolean.
-
#cama_url_exist? ⇒ Boolean
check if the url exist sample: “”.cama_url_exist? return (Boolean) true if the url exist.
- #is_bool? ⇒ Boolean
- #is_float? ⇒ Boolean
- #is_number? ⇒ Boolean
-
#parse_domain ⇒ Object
parse string into domain owen.camaleon.website into owen.camaleon.website.
-
#parseCamaClass ⇒ Object
return cleaned model class name remove decorate remove Cama prefix.
-
#slug ⇒ Object
parse string into slug format.
- #strip_tags ⇒ Object
- #to_bool ⇒ Object
- #to_var ⇒ Object
-
#translate(locale = nil) ⇒ Object
Usage The default value if translation is not provided is all text.
-
#translations ⇒ Object
return hash of translations for this string sample: “hola mundo”, en: “Hello World”.
-
#translations_array ⇒ Object
return array of translations for this string sample: [“hola mundo”, “Hello World”].
Instance Method Details
#cama_add_postfix_file_name(postfix) ⇒ Object
Sample:
'/var/www/media/132/logo.png'.cama_add_postfix_file_name('_2') ==> /var/www/media/132/logo_2.png
132 133 134 |
# File 'lib/ext/string.rb', line 132 def cama_add_postfix_file_name(postfix) File.join(File.dirname(self), "#{File.basename(self, File.extname(self))}#{postfix}#{File.extname(self)}") end |
#cama_add_postfix_url(postfix) ⇒ Object
convert url into custom url with postfix, sample: “”.cama_add_postfix_url(‘thumbs/’) into
126 127 128 |
# File 'lib/ext/string.rb', line 126 def cama_add_postfix_url(postfix) File.join(File.dirname(self), "#{postfix}#{File.basename(self)}") end |
#cama_fix_filename ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 |
# File 'lib/ext/string.rb', line 105 def cama_fix_filename # Sanitize the filename, to prevent hacking # https://github.com/carrierwaveuploader/carrierwave/blob/6a1445e0daef29a5d4f799a016359b62d82dbc24/lib/carrierwave/sanitized_file.rb#L322 sanitize_regexp = /[^[:word:].\-+]/ name = tr('\\', '/') # work-around for IE name = File.basename(name) name = name.gsub(sanitize_regexp, '_') name = "_#{name}" if name =~ /\A\.+\z/ name = 'unnamed' if name.empty? name.mb_chars.to_s end |
#cama_fix_media_key ⇒ Object
fix file media keys: avoid duplicated slashes and force to start with slash
98 99 100 101 102 103 |
# File 'lib/ext/string.rb', line 98 def cama_fix_media_key res = gsub('../', '/').gsub('./', '/').gsub(%r{(/){2,}}, '/') res = "/#{res}" unless res.start_with?('/') res = res.slice(0...-1) if res.end_with?('/') && res.length > 1 res end |
#cama_fix_slash ⇒ Object
remove double or more secuencial slashes, like: ‘/a//b/c/d///abs’.cama_fix_slash => /a/b/c/d/abs
93 94 95 |
# File 'lib/ext/string.rb', line 93 def cama_fix_slash gsub(%r{(/){2,}}, '/') end |
#cama_log_style(color = :red) ⇒ Object
Colorized Ruby output color: (:red, :green, :blue, :pink, :light_blue, :yellow)
160 161 162 163 |
# File 'lib/ext/string.rb', line 160 def cama_log_style(color = :red) colors = { red: 31, green: 32, blue: 34, pink: 35, light_blue: 36, yellow: 33 } "\e[#{colors[color]}m#{self}\e[0m" end |
#cama_parse_image_version(version_name = '', check_url = false) ⇒ Object
Parse the url to get the image version
version_name: (String, default empty) version name,
if this is empty, this will return the image version for thumb of the image, sample: 'http://localhost/my_image.png'.cama_parse_image_version('') => http://localhost/thumb/my_image.png
if this is present, this will return the image version generated, sample: , sample: 'http://localhost/my_image.png'.cama_parse_image_version('200x200') => http://localhost/thumb/my_image_200x200.png
check_url: (boolean, default false) if true the image version will be verified, i.e. if the url exist will return version url, if not will return current url
141 142 143 144 145 146 147 |
# File 'lib/ext/string.rb', line 141 def cama_parse_image_version(version_name = '', check_url = false) res = File.join(File.dirname(self), 'thumb', "#{File.basename(self).parameterize}#{File.extname(self)}") res = res.cama_add_postfix_file_name("_#{version_name}") if version_name.present? return self if check_url && !res.cama_url_exist? res end |
#cama_replace_codes(values, format_code = '[') ⇒ Object
parse all codes in current text to replace with values sample: “Hello [c1]”.cama_replace_codes(‘World’) ==> Hello World
81 82 83 84 85 86 87 88 89 90 |
# File 'lib/ext/string.rb', line 81 def cama_replace_codes(values, format_code = '[') res = self values.each do |k, v| v = v.join(',') if v.is_a?(Array) res = res.gsub("[#{k}]", v.to_s) if format_code == '[' res = res.gsub("{#{k}}", v.to_s) if format_code == '{' res = res.gsub("%{#{k}}", v.to_s) if format_code == '%{' end res end |
#cama_true? ⇒ Boolean
check if current string is true or false cases for true: ‘1’ | ‘true’ cases for false: ‘0’ | ‘false’ | ” return boolean
29 30 31 |
# File 'lib/ext/string.rb', line 29 def cama_true? self == 'true' || self == '1' end |
#cama_url_exist? ⇒ Boolean
check if the url exist sample: “”.cama_url_exist? return (Boolean) true if the url exist
152 153 154 155 156 |
# File 'lib/ext/string.rb', line 152 def cama_url_exist? Net::HTTP.get_response(URI.parse(self)).is_a?(Net::HTTPSuccess) rescue StandardError false end |
#is_bool? ⇒ Boolean
21 22 23 |
# File 'lib/ext/string.rb', line 21 def is_bool? self == 'false' || self == 'true' end |
#is_float? ⇒ Boolean
13 14 15 |
# File 'lib/ext/string.rb', line 13 def is_float? to_f.to_s == to_s end |
#is_number? ⇒ Boolean
17 18 19 |
# File 'lib/ext/string.rb', line 17 def is_number? to_f.to_s == to_s || to_i.to_s == to_s end |
#parse_domain ⇒ Object
parse string into domain owen.camaleon.website into owen.camaleon.website
70 71 72 73 74 75 76 77 |
# File 'lib/ext/string.rb', line 70 def parse_domain url = self uri = URI.parse(url) uri = URI.parse("https://#{url}") if uri.scheme.nil? host = (uri.host || self).downcase h = host.start_with?('www.') ? host[4..] : host "#{h}#{":#{uri.port}" unless [80, 443].include?(uri.port)}" end |
#parseCamaClass ⇒ Object
return cleaned model class name remove decorate remove Cama prefix
120 121 122 |
# File 'lib/ext/string.rb', line 120 def parseCamaClass gsub('Decorator', '').gsub('CamaleonCms::', '') end |
#slug ⇒ Object
parse string into slug format
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/ext/string.rb', line 46 def slug # strip the string ret = strip # blow away apostrophes ret.gsub!(/['`]/, '') # @ --> at, and & --> and ret.gsub!(/\s*@\s*/, ' at ') ret.gsub!(/\s*&\s*/, ' and ') # replace all non alphanumeric, underscore or periods with underscore ret.gsub!(/\s*[^A-Za-z0-9.-]\s*/, '_') # convert double underscores to single ret.gsub!(/_+/, '_') # strip off leading/trailing underscore ret.gsub!(/\A[_.]+|[_.]+\z/, '') ret end |
#strip_tags ⇒ Object
9 10 11 |
# File 'lib/ext/string.rb', line 9 def ActionController::Base.helpers.(self) end |
#to_bool ⇒ Object
2 3 4 5 6 7 |
# File 'lib/ext/string.rb', line 2 def to_bool return true if self == true || self =~ (/(true|t|yes|y|1)$/i) return false if self == false || blank? || self =~ (/(false|f|no|n|0)$/i) raise ArgumentError, "invalid value for Boolean: \"#{self}\"" end |
#to_var ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/ext/string.rb', line 33 def to_var if is_float? to_f elsif is_number? to_i elsif is_bool? to_bool else self end end |
#translate(locale = nil) ⇒ Object
Usage The default value if translation is not provided is all text
$ WpPost.post_title
$ => "<!--:en-->And this is how the Universe ended.<!--:--><!--:fr-->Et c'est ainsi que l'univers connu cessa d'exister.<!--:-->"
$ I18n.locale = :en
$ WpPost.post_title.translate
$ => "And this is how the Universe ended."
$ WpPost.post_title.translate(:en)
$ => "And this is how the Universe ended."
Spits the same text out if no translation tags are applied
$ WpPost.post_title
$ => "And this is how the Universe ended."
$ WpPost.post_title.translate(:fr)
$ => "And this is how the Universe ended."
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/ext/translator.rb', line 22 def translate(locale = nil) locale ||= I18n.locale locale = locale.to_sym return self if !squish.starts_with?('<!--') || blank? return translations[locale] if translations.key?(locale) return translations[I18n.default_locale] if translations.key?(I18n.default_locale) return '' if translations.keys.any? self end |
#translations ⇒ Object
return hash of translations for this string sample: “hola mundo”, en: “Hello World”
35 36 37 |
# File 'lib/ext/translator.rb', line 35 def translations @translations ||= split_locales end |
#translations_array ⇒ Object
return array of translations for this string sample: [“hola mundo”, “Hello World”]
41 42 43 44 |
# File 'lib/ext/translator.rb', line 41 def translations_array r = translations.map { |_key, value| value } r.present? ? r : [self] end |