Class: Kotoshu::Models::Result::DocumentResult
- Inherits:
-
Lutaml::Model::Serializable
- Object
- Lutaml::Model::Serializable
- Kotoshu::Models::Result::DocumentResult
- Defined in:
- lib/kotoshu/core/models/result/document_result.rb
Overview
Result object for checking a document or file.
Serialized via lutaml-model. Holds an Arrayerrors.
Class Method Summary collapse
- .failure(file: nil, errors: [], word_count: 0) ⇒ Object
- .merge(results) ⇒ Object
- .success(file: nil, word_count: 0) ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql?)
- #each_error ⇒ Object
- #each_unique_error ⇒ Object
- #error_count ⇒ Object
- #error_summary ⇒ Object
- #errors_for(word) ⇒ Object
- #failed? ⇒ Boolean
- #first_errors(n = 10) ⇒ Object
- #has_error_for?(word) ⇒ Boolean
- #hash ⇒ Object
-
#initialize(file: nil, errors: [], word_count: 0, metadata: {}, **kwargs) ⇒ DocumentResult
constructor
Accept framework-private keywords (e.g.
lutaml_register) from lutaml-model'sfrom_hashso the round-trip works without lutaml having to poke ivars directly. - #success? ⇒ Boolean
- #to_s ⇒ Object (also: #inspect)
- #unique_error_count ⇒ Object
Constructor Details
#initialize(file: nil, errors: [], word_count: 0, metadata: {}, **kwargs) ⇒ DocumentResult
Accept framework-private keywords (e.g. lutaml_register)
from lutaml-model's from_hash so the round-trip works
without lutaml having to poke ivars directly.
20 21 22 23 24 25 26 27 28 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 20 def initialize(file: nil, errors: [], word_count: 0, metadata: {}, **kwargs) super( file: file, word_count: word_count, errors: errors, metadata: , **kwargs ) end |
Class Method Details
.failure(file: nil, errors: [], word_count: 0) ⇒ Object
106 107 108 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 106 def self.failure(file: nil, errors: [], word_count: 0) new(file: file, errors: errors, word_count: word_count) end |
.merge(results) ⇒ Object
110 111 112 113 114 115 116 117 118 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 110 def self.merge(results) return new if results.empty? new( file: nil, errors: results.flat_map(&:errors), word_count: results.sum(&:word_count) ) end |
.success(file: nil, word_count: 0) ⇒ Object
102 103 104 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 102 def self.success(file: nil, word_count: 0) new(file: file, errors: [], word_count: word_count) end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
76 77 78 79 80 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 76 def ==(other) return false unless other.is_a?(DocumentResult) file == other.file && errors == other.errors end |
#each_error ⇒ Object
54 55 56 57 58 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 54 def each_error(&) return enum_for(:each_error) unless block_given? errors.each(&) end |
#each_unique_error ⇒ Object
60 61 62 63 64 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 60 def each_unique_error(&) return enum_for(:each_unique_error) unless block_given? errors.group_by(&:word).each(&) end |
#error_count ⇒ Object
38 39 40 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 38 def error_count Array(errors).size end |
#error_summary ⇒ Object
70 71 72 73 74 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 70 def error_summary summary = Hash.new(0) each_error { |error| summary[error.word] += 1 } summary end |
#errors_for(word) ⇒ Object
50 51 52 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 50 def errors_for(word) errors.select { |e| e.word == word } end |
#failed? ⇒ Boolean
34 35 36 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 34 def failed? !success? end |
#first_errors(n = 10) ⇒ Object
66 67 68 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 66 def first_errors(n = 10) errors.first(n) end |
#has_error_for?(word) ⇒ Boolean
46 47 48 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 46 def has_error_for?(word) errors.any? { |e| e.word == word } end |
#hash ⇒ Object
83 84 85 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 83 def hash [file, errors].hash end |
#success? ⇒ Boolean
30 31 32 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 30 def success? Array(errors).empty? end |
#to_s ⇒ Object Also known as: inspect
87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 87 def to_s if success? if file "File '#{file}': No spelling errors found (#{word_count} words checked)" else "No spelling errors found (#{word_count} words checked)" end else prefix = file ? "File '#{file}':" : "" "#{prefix} #{error_count} spelling error(s) found " \ "(#{unique_error_count} unique) in #{word_count} words" end end |
#unique_error_count ⇒ Object
42 43 44 |
# File 'lib/kotoshu/core/models/result/document_result.rb', line 42 def unique_error_count errors.map(&:word).uniq.size end |