Module: Julewire::GCP::SourceLocation
- Defined in:
- lib/julewire/gcp/source_location.rb
Class Method Summary collapse
- .call(options) ⇒ Object
- .from_backtrace_line(line) ⇒ Object
- .from_error(error) ⇒ Object
- .line_value(value) ⇒ Object
- .string_value(value) ⇒ Object
Class Method Details
.call(options) ⇒ Object
10 11 12 13 14 15 16 17 |
# File 'lib/julewire/gcp/source_location.rb', line 10 def call() values = Core::Integration::Values::Shape location = {} values.append_field(location, "file", string_value([:file])) values.append_field(location, "line", line_value([:line])) values.append_field(location, "function", string_value([:function])) location unless location.empty? end |
.from_backtrace_line(line) ⇒ Object
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/julewire/gcp/source_location.rb', line 29 def from_backtrace_line(line) match = BACKTRACE_PATTERN.match(line.to_s) return unless match call( file: match[:file], line: match[:line], function: match[:quoted] || match[:plain] ) end |
.from_error(error) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/julewire/gcp/source_location.rb', line 19 def from_error(error) return unless error.is_a?(Hash) Array(error[:backtrace]).each do |line| location = from_backtrace_line(line) return location if location end nil end |
.line_value(value) ⇒ Object
46 47 48 49 |
# File 'lib/julewire/gcp/source_location.rb', line 46 def line_value(value) string = value.to_s string if string.match?(/\A\d+\z/) end |
.string_value(value) ⇒ Object
40 41 42 43 44 |
# File 'lib/julewire/gcp/source_location.rb', line 40 def string_value(value) return if Core::Integration::Values::Read.blank?(value) value.to_s end |