Module: MosEisley::S3PO
- Defined in:
- lib/s3po/s3po.rb,
lib/s3po/blockkit.rb
Defined Under Namespace
Modules: BlockKit
Class Method Summary collapse
- .create_event(e, my_id: nil, type: nil) ⇒ Object
-
.decode_text(text) ⇒ String
Return plain text parsing Slack escapes and commands.
-
.escape_command(cmd, label = nil) ⇒ String
Enclose Slack command in control characters.
-
.escape_text(text) ⇒ String
Escape string with basic Slack rules; no command encoding is done as it often requires more information than provided in the text.
-
.format_json_value(val) ⇒ Object
Return Ruby object/value to JSON standard format.
-
.json_with_object(obj, pretty: false, opts: nil) ⇒ String
Convert object into JSON, optionally pretty-format.
- .parse_json(json) ⇒ Object
-
.remove_symbols(text) ⇒ String
Return text with basic visual formatting symbols removed; it will remove all symbols regardless of syntax.
Class Method Details
.create_event(e, my_id: nil, type: nil) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/s3po/s3po.rb', line 54 def self.create_event(e, my_id: nil, type: nil) type ||= e[:type] if e[:type] case type when 'message', 'app_mention' return Message.new(e, my_id) when :action return Action.new(e) else return GenericEvent.new(e) end end |
.decode_text(text) ⇒ String
Return plain text parsing Slack escapes and commands
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/s3po/s3po.rb', line 80 def self.decode_text(text) plain = String.new(text) # keep just the labels plain.gsub!(/<([#@]*)[^>|]*\|([^>]*)>/, '<\1\2>') # process commands plain.gsub!(/<!(everyone|channel|here)>/, '<@\1>') plain.gsub!(/<!(.*?)>/, '<\1>') # remove brackets plain.gsub!(/<(.*?)>/, '\1') # unescape plain.gsub!('>', '>') plain.gsub!('<', '<') plain.gsub!('&', '&') return plain end |
.escape_command(cmd, label = nil) ⇒ String
Enclose Slack command in control characters
108 109 110 |
# File 'lib/s3po/s3po.rb', line 108 def self.escape_command(cmd, label = nil) "<#{cmd}" + (label ? "|#{label}" : '') + '>' end |
.escape_text(text) ⇒ String
Escape string with basic Slack rules; no command encoding is done as it often requires more information than provided in the text
69 70 71 72 73 74 75 |
# File 'lib/s3po/s3po.rb', line 69 def self.escape_text(text) esced = String.new(text) esced.gsub!('&', '&') esced.gsub!('<', '<') esced.gsub!('>', '>') return esced end |
.format_json_value(val) ⇒ Object
Return Ruby object/value to JSON standard format
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/s3po/s3po.rb', line 38 def self.format_json_value(val) s3po = MosEisley::S3PO case val when Array val.map { |v| s3po.format_json_value(v) } when Hash val.reduce({}) { |h, (k, v)| h.merge({k => s3po.format_json_value(v)}) } when String val.encode('UTF-8', {invalid: :replace, undef: :replace}) when Time val.utc.iso8601 else val end end |
.json_with_object(obj, pretty: false, opts: nil) ⇒ String
Convert object into JSON, optionally pretty-format
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/s3po/s3po.rb', line 22 def self.json_with_object(obj, pretty: false, opts: nil) return '{}' if obj.nil? if pretty opts = { indent: ' ', space: ' ', object_nl: "\n", array_nl: "\n" } end JSON.fast_generate(MosEisley::S3PO.format_json_value(obj), opts) end |
.parse_json(json) ⇒ Object
11 12 13 14 15 16 |
# File 'lib/s3po/s3po.rb', line 11 def self.parse_json(json) return JSON.parse(json, {symbolize_names: true}) rescue => e MosEisley.logger.warn("JSON parse error: #{e}") return nil end |
.remove_symbols(text) ⇒ String
Return text with basic visual formatting symbols removed;
it will remove all symbols regardless of syntax
100 101 102 |
# File 'lib/s3po/s3po.rb', line 100 def self.remove_symbols(text) text.delete('_*~`') end |