Class: Lutaml::Xml::Schema::Xsd::Errors::Suggestion

Inherits:
Object
  • Object
show all
Defined in:
lib/lutaml/xml/schema/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



31
32
33
34
35
# File 'lib/lutaml/xml/schema/xsd/errors/suggestion.rb', line 31

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



24
25
26
# File 'lib/lutaml/xml/schema/xsd/errors/suggestion.rb', line 24

def explanation
  @explanation
end

#similarityFloat (readonly)

Returns Similarity score (0.0 to 1.0).

Returns:

  • (Float)

    Similarity score (0.0 to 1.0)



21
22
23
# File 'lib/lutaml/xml/schema/xsd/errors/suggestion.rb', line 21

def similarity
  @similarity
end

#textString (readonly)

Returns The suggestion text.

Returns:

  • (String)

    The suggestion text



18
19
20
# File 'lib/lutaml/xml/schema/xsd/errors/suggestion.rb', line 18

def text
  @text
end

Instance Method Details

#<=>(other) ⇒ Integer

Compare suggestions by similarity (higher is better)

Parameters:

Returns:

  • (Integer)

    Comparison result



59
60
61
# File 'lib/lutaml/xml/schema/xsd/errors/suggestion.rb', line 59

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

#similarity_percentageInteger

Get similarity percentage

Returns:

  • (Integer)

    Similarity as percentage (0-100)



40
41
42
# File 'lib/lutaml/xml/schema/xsd/errors/suggestion.rb', line 40

def similarity_percentage
  (@similarity * 100).round
end

#to_hHash

Convert to hash

Returns:

  • (Hash)

    Suggestion as hash



47
48
49
50
51
52
53
# File 'lib/lutaml/xml/schema/xsd/errors/suggestion.rb', line 47

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