Module: Olelo::Util
- Extended by:
- Util
- Included in:
- Application, Attributes::Attribute, Attributes::AttributeDSL, Attributes::AttributeGroup, FlashHelper, HttpHelper, Initializer, Menu, Page, PageHelper, PatchParser, PatchParser::Handler, Plugin, Repository, User, Olelo::User::Service, Util
- Defined in:
- lib/olelo/util.rb
Class Method Summary collapse
Instance Method Summary collapse
- #check {|errors| ... } ⇒ Object
-
#decode64(s) ⇒ String
Decode base64 encoded string.
-
#deep_copy(object) ⇒ Object
Creates deep copy of object by abusing ‘Marshal` This method is slow and not adequate for huge objects.
-
#encode64(s) ⇒ String
Encode string as base64.
-
#escape(s) ⇒ Object
Like CGI.escape but escapes space not as +.
-
#escape_html(s) ⇒ String
Escape html entities in string.
-
#escape_javascript(s) ⇒ String
Escape javascript code for embedding in html.
-
#md5(s) ⇒ String
Compute md5 hash of string.
- #no_cache?(env = @env) ⇒ Boolean
-
#sha256(s) ⇒ String
Compute sha256 hash of string.
-
#titlecase(s) ⇒ String
Capitalizes all the words to create a nicer looking title.
-
#truncate(s, max, omission = '...') ⇒ String
Truncate string if it is too long and add omission.
-
#unescape(s) ⇒ Object
Like CGI.unescape but does not unescape +.
- #unescape_backslash(s) ⇒ Object
-
#unescape_html(s) ⇒ String
Unescape html entities in string.
-
#valid_xml_chars?(s) ⇒ Boolean
Check if string contains only characters which are valid in XML.
- #yaml_dump(object) ⇒ Object
- #yaml_load(content) ⇒ Object
- #yaml_load_file(file) ⇒ Object
Class Method Details
Instance Method Details
#check {|errors| ... } ⇒ Object
47 48 49 50 51 |
# File 'lib/olelo/util.rb', line 47 def check errors = [] yield(errors) raise MultiError, errors if !errors.empty? end |
#decode64(s) ⇒ String
Decode base64 encoded string
161 162 163 |
# File 'lib/olelo/util.rb', line 161 def decode64(s) s.unpack('m').first end |
#deep_copy(object) ⇒ Object
Creates deep copy of object by abusing ‘Marshal` This method is slow and not adequate for huge objects. It can only copy objects which are serializable.
153 154 155 |
# File 'lib/olelo/util.rb', line 153 def deep_copy(object) Marshal.load(Marshal.dump(object)) end |
#encode64(s) ⇒ String
Encode string as base64
169 170 171 |
# File 'lib/olelo/util.rb', line 169 def encode64(s) [s].pack('m').gsub(/\n/, '') end |
#escape(s) ⇒ Object
Like CGI.escape but escapes space not as +
73 74 75 76 77 78 |
# File 'lib/olelo/util.rb', line 73 def escape(s) s = s.to_s s.gsub(/([^a-zA-Z0-9_.-]+)/) do '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase end end |
#escape_html(s) ⇒ String
Escape html entities in string
100 101 102 |
# File 'lib/olelo/util.rb', line 100 def escape_html(s) CGI.escapeHTML(s.to_s).html_safe end |
#escape_javascript(s) ⇒ String
Escape javascript code for embedding in html
121 122 123 |
# File 'lib/olelo/util.rb', line 121 def escape_javascript(s) s.to_s.gsub(/[&><]/) { |x| JAVASCRIPT_ESCAPE[x] } end |
#md5(s) ⇒ String
Compute md5 hash of string
130 131 132 133 134 |
# File 'lib/olelo/util.rb', line 130 def md5(s) s = Digest::MD5.hexdigest(s) s.force_encoding(Encoding::ASCII) s end |
#no_cache?(env = @env) ⇒ Boolean
43 44 45 |
# File 'lib/olelo/util.rb', line 43 def no_cache?(env = @env) env['HTTP_PRAGMA'] == 'no-cache' || env['HTTP_CACHE_CONTROL'].to_s.include?('no-cache') end |
#sha256(s) ⇒ String
Compute sha256 hash of string
141 142 143 144 145 |
# File 'lib/olelo/util.rb', line 141 def sha256(s) s = Digest::SHA256.hexdigest(s) s.force_encoding(Encoding::ASCII) s end |
#titlecase(s) ⇒ String
Capitalizes all the words to create a nicer looking title
192 193 194 |
# File 'lib/olelo/util.rb', line 192 def titlecase(s) s.to_s.tr('_', ' ').split(/\s+/).map(&:capitalize).join(' ') end |
#truncate(s, max, omission = '...') ⇒ String
Truncate string if it is too long and add omission
179 180 181 182 183 184 185 186 |
# File 'lib/olelo/util.rb', line 179 def truncate(s, max, omission = '...') s = s.to_s if s.length > max s[0...max] + omission else s end end |
#unescape(s) ⇒ Object
Like CGI.unescape but does not unescape +
81 82 83 84 85 86 87 |
# File 'lib/olelo/util.rb', line 81 def unescape(s) s = s.to_s enc = s.encoding s.gsub(/((?:%[0-9a-fA-F]{2})+)/) do [$1.delete('%')].pack('H*').force_encoding(enc) end end |
#unescape_backslash(s) ⇒ Object
89 90 91 92 93 94 |
# File 'lib/olelo/util.rb', line 89 def unescape_backslash(s) s = s.to_s enc = s.encoding s.gsub(/\\([0-7]{3})/) { $1.to_i(8).chr.force_encoding(enc) }. gsub(/\\x([\da-f]{2})/i) { $1.to_i(16).chr.force_encoding(enc) } end |
#unescape_html(s) ⇒ String
Unescape html entities in string
108 109 110 |
# File 'lib/olelo/util.rb', line 108 def unescape_html(s) CGI.unescapeHTML(s.to_s) end |
#valid_xml_chars?(s) ⇒ Boolean
Check if string contains only characters which are valid in XML
212 213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/olelo/util.rb', line 212 def valid_xml_chars?(s) s = s.to_s if s.encoding == Encoding::UTF_8 return false if !s.valid_encoding? else s = s.dup if s.frozen? return false if s.try_encoding(Encoding::UTF_8).encoding != Encoding::UTF_8 end s.codepoints do |n| return false if !VALID_XML_CHARS.any? {|v| v === n } end true end |
#yaml_dump(object) ⇒ Object
68 69 70 |
# File 'lib/olelo/util.rb', line 68 def yaml_dump(object) Psych.dump(object) end |
#yaml_load(content) ⇒ Object
58 59 60 |
# File 'lib/olelo/util.rb', line 58 def yaml_load(content) Psych.safe_load(content) end |
#yaml_load_file(file) ⇒ Object
53 54 55 |
# File 'lib/olelo/util.rb', line 53 def yaml_load_file(file) File.open(file, 'r:bom|utf-8') {|f| yaml_load(f.read) } end |