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: "http://localhost/company/rack_multipart20160124_2288_8xcdjs.jpg".cama_add_postfix_url('thumbs/') into http://localhost/company/thumbs/rack_multipart20160124_2288_8xcdjs.jpg.
- #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: '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: '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.
-
#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: "https://mydomain.com/myimg.png".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 https://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
134 135 136 |
# File 'lib/ext/string.rb', line 134 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: "http://localhost/company/rack_multipart20160124_2288_8xcdjs.jpg".cama_add_postfix_url('thumbs/') into http://localhost/company/thumbs/rack_multipart20160124_2288_8xcdjs.jpg
128 129 130 |
# File 'lib/ext/string.rb', line 128 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 /\A\.+\z/.match?(name) name = 'unnamed' if name.empty? name 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)
165 166 167 168 |
# File 'lib/ext/string.rb', line 165 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: '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
146 147 148 149 150 151 152 |
# File 'lib/ext/string.rb', line 146 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: "https://mydomain.com/myimg.png".cama_url_exist? return (Boolean) true if the url exist
157 158 159 160 161 |
# File 'lib/ext/string.rb', line 157 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 https://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
$ => "And this is how the Universe ended."
"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."
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/ext/translator.rb', line 23 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"
36 37 38 39 40 41 42 43 44 45 |
# File 'lib/ext/translator.rb', line 36 def translations # A frozen receiver cannot carry the memo: Ruby 3.4's nil.to_s returns a frozen — # and process-wide shared — empty string, and every literal in a file with the # frozen_string_literal magic comment is frozen too. Parse without memoizing for # those rather than raising FrozenError (memoizing on a shared instance would be # wrong even where it is permitted). return split_locales if frozen? @translations ||= split_locales end |
#translations_array ⇒ Object
return array of translations for this string sample: ["hola mundo", "Hello World"]
49 50 51 52 |
# File 'lib/ext/translator.rb', line 49 def translations_array r = translations.map { |_key, value| value } r.presence || [self] end |