Class: GuardrailsRuby::Result
- Inherits:
-
Object
- Object
- GuardrailsRuby::Result
- Defined in:
- lib/guardrails_ruby/result.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#original_text ⇒ Object
readonly
Returns the value of attribute original_text.
-
#violations ⇒ Object
readonly
Returns the value of attribute violations.
Instance Method Summary collapse
- #blocked? ⇒ Boolean
-
#initialize(original_text: nil, violations: []) ⇒ Result
constructor
A new instance of Result.
- #merge(other) ⇒ Object
- #passed? ⇒ Boolean
- #redactions ⇒ Object
- #sanitized ⇒ Object
- #to_s ⇒ Object
- #warnings ⇒ Object
Constructor Details
#initialize(original_text: nil, violations: []) ⇒ Result
Returns a new instance of Result.
7 8 9 10 |
# File 'lib/guardrails_ruby/result.rb', line 7 def initialize(original_text: nil, violations: []) @original_text = original_text @violations = violations end |
Instance Attribute Details
#original_text ⇒ Object (readonly)
Returns the value of attribute original_text.
5 6 7 |
# File 'lib/guardrails_ruby/result.rb', line 5 def original_text @original_text end |
#violations ⇒ Object (readonly)
Returns the value of attribute violations.
5 6 7 |
# File 'lib/guardrails_ruby/result.rb', line 5 def violations @violations end |
Instance Method Details
#blocked? ⇒ Boolean
33 34 35 |
# File 'lib/guardrails_ruby/result.rb', line 33 def blocked? @violations.any? { |v| v.action == :block } end |
#merge(other) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/guardrails_ruby/result.rb', line 21 def merge(other) merged_violations = @violations + other.violations # Use the most recent sanitized text as the base merged_text = other.original_text || @original_text self.class.new( original_text: merged_text, violations: merged_violations ) end |
#passed? ⇒ Boolean
12 13 14 |
# File 'lib/guardrails_ruby/result.rb', line 12 def passed? @violations.empty? end |
#redactions ⇒ Object
41 42 43 |
# File 'lib/guardrails_ruby/result.rb', line 41 def redactions @violations.select { |v| v.action == :redact } end |
#sanitized ⇒ Object
16 17 18 19 |
# File 'lib/guardrails_ruby/result.rb', line 16 def sanitized redact_violation = @violations.find { |v| v.action == :redact && v.sanitized } redact_violation ? redact_violation.sanitized : @original_text end |
#to_s ⇒ Object
45 46 47 48 49 50 51 |
# File 'lib/guardrails_ruby/result.rb', line 45 def to_s if passed? "Result: passed" else "Result: #{violations.size} violation(s) - #{violations.map(&:to_s).join('; ')}" end end |
#warnings ⇒ Object
37 38 39 |
# File 'lib/guardrails_ruby/result.rb', line 37 def warnings @violations.select { |v| v.action == :warn } end |