Class: Lutaml::Xsd::Errors::Suggestion

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/xsd/errors/suggestion.rb

Overview

Value object representing a suggestion for error resolution

Examples:

Creating a suggestion

suggestion = Suggestion.new(
  text: "gml:CodeType",
  similarity: 0.85,
  explanation: "Did you mean 'gml:CodeType'?"
)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(text:, similarity: 1.0, explanation: nil) ⇒ Suggestion

Initialize a suggestion

Parameters:

  • text (String)

    The suggestion text

  • similarity (Float) (defaults to: 1.0)

    Similarity score (0.0 to 1.0)

  • explanation (String, nil) (defaults to: nil)

    Optional explanation



29
30
31
32
33
# File 'lib/lutaml/xsd/errors/suggestion.rb', line 29

def initialize(text:, similarity: 1.0, explanation: nil)
  @text = text
  @similarity = similarity.to_f
  @explanation = explanation || "Did you mean '#{text}'?"
end

Instance Attribute Details

#explanationString (readonly)

Returns Explanation of the suggestion.

Returns:

  • (String)

    Explanation of the suggestion



22
23
24
# File 'lib/lutaml/xsd/errors/suggestion.rb', line 22

def explanation
  @explanation
end

#similarityFloat (readonly)

Returns Similarity score (0.0 to 1.0).

Returns:

  • (Float)

    Similarity score (0.0 to 1.0)



19
20
21
# File 'lib/lutaml/xsd/errors/suggestion.rb', line 19

def similarity
  @similarity
end

#textString (readonly)

Returns The suggestion text.

Returns:

  • (String)

    The suggestion text



16
17
18
# File 'lib/lutaml/xsd/errors/suggestion.rb', line 16

def text
  @text
end

Instance Method Details

#<=>(other) ⇒ Integer

Compare suggestions by similarity (higher is better)

Parameters:

Returns:

  • (Integer)

    Comparison result



57
58
59
# File 'lib/lutaml/xsd/errors/suggestion.rb', line 57

def <=>(other)
  other.similarity <=> @similarity
end

#similarity_percentageInteger

Get similarity percentage

Returns:

  • (Integer)

    Similarity as percentage (0-100)



38
39
40
# File 'lib/lutaml/xsd/errors/suggestion.rb', line 38

def similarity_percentage
  (@similarity * 100).round
end

#to_hHash

Convert to hash

Returns:

  • (Hash)

    Suggestion as hash



45
46
47
48
49
50
51
# File 'lib/lutaml/xsd/errors/suggestion.rb', line 45

def to_h
  {
    text: @text,
    similarity: @similarity,
    explanation: @explanation,
  }
end