Class: Uniword::Warnings::Warning

Inherits:
Object
  • Object
show all
Defined in:
lib/uniword/warnings/warning.rb

Overview

Represents a single warning about an unsupported element or feature.

Responsibility: Store information about one warning. Single Responsibility: Only represents warning data.

A warning includes:

  • Type (unsupported_element, unsupported_attribute, etc.)

  • Severity (error, warning, info)

  • Element/attribute name

  • Context where it was encountered

  • Location in document

  • Suggestion for user

Examples:

Create a warning

warning = Warning.new(
  type: :unsupported_element,
  severity: :warning,
  element: 'chart',
  message: 'Unsupported element: chart',
  context: 'While parsing paragraph',
  suggestion: 'Chart will be preserved but not editable'
)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes) ⇒ Warning

Initialize a new warning.

Examples:

Create a warning

warning = Warning.new(
  type: :unsupported_element,
  severity: :error,
  element: 'chart',
  message: 'Unsupported element: chart'
)

Parameters:

  • attributes (Hash)

    Warning attributes

Options Hash (attributes):

  • :type (Symbol)

    Warning type

  • :severity (Symbol)

    Severity level

  • :element (String)

    Element name

  • :attribute (String)

    Attribute name (optional)

  • :message (String)

    Warning message

  • :context (String)

    Context (optional)

  • :location (String)

    Location (optional)

  • :suggestion (String)

    Suggestion (optional)



71
72
73
74
75
76
77
78
79
80
# File 'lib/uniword/warnings/warning.rb', line 71

def initialize(attributes)
  @type = attributes[:type]
  @severity = attributes[:severity]
  @element = attributes[:element]
  @attribute = attributes[:attribute]
  @message = attributes[:message]
  @context = attributes[:context]
  @location = attributes[:location]
  @suggestion = attributes[:suggestion]
end

Instance Attribute Details

#attributeString? (readonly)

Returns Attribute name (for attribute warnings).

Returns:

  • (String, nil)

    Attribute name (for attribute warnings)



38
39
40
# File 'lib/uniword/warnings/warning.rb', line 38

def attribute
  @attribute
end

#contextString? (readonly)

Returns Context where warning occurred.

Returns:

  • (String, nil)

    Context where warning occurred



44
45
46
# File 'lib/uniword/warnings/warning.rb', line 44

def context
  @context
end

#elementString (readonly)

Returns Element name.

Returns:

  • (String)

    Element name



35
36
37
# File 'lib/uniword/warnings/warning.rb', line 35

def element
  @element
end

#locationString? (readonly)

Returns Location in document.

Returns:

  • (String, nil)

    Location in document



47
48
49
# File 'lib/uniword/warnings/warning.rb', line 47

def location
  @location
end

#messageString (readonly)

Returns Warning message.

Returns:

  • (String)

    Warning message



41
42
43
# File 'lib/uniword/warnings/warning.rb', line 41

def message
  @message
end

#severitySymbol (readonly)

Returns Severity level (:error, :warning, :info).

Returns:

  • (Symbol)

    Severity level (:error, :warning, :info)



32
33
34
# File 'lib/uniword/warnings/warning.rb', line 32

def severity
  @severity
end

#suggestionString? (readonly)

Returns Suggestion for user.

Returns:

  • (String, nil)

    Suggestion for user



50
51
52
# File 'lib/uniword/warnings/warning.rb', line 50

def suggestion
  @suggestion
end

#typeSymbol (readonly)

Returns Type of warning.

Returns:

  • (Symbol)

    Type of warning



29
30
31
# File 'lib/uniword/warnings/warning.rb', line 29

def type
  @type
end

Instance Method Details

#error?Boolean

Check if this is an error-level warning.

Returns:

  • (Boolean)

    true if severity is :error



85
86
87
# File 'lib/uniword/warnings/warning.rb', line 85

def error?
  @severity == :error
end

#info?Boolean

Check if this is an info-level warning.

Returns:

  • (Boolean)

    true if severity is :info



99
100
101
# File 'lib/uniword/warnings/warning.rb', line 99

def info?
  @severity == :info
end

#to_hHash

Convert to hash representation.

Returns:

  • (Hash)

    Hash representation



106
107
108
109
110
111
112
113
114
115
116
117
# File 'lib/uniword/warnings/warning.rb', line 106

def to_h
  {
    type: @type,
    severity: @severity,
    element: @element,
    attribute: @attribute,
    message: @message,
    context: @context,
    location: @location,
    suggestion: @suggestion,
  }.compact
end

#to_sString

Convert to string for display.

Returns:

  • (String)

    String representation



122
123
124
125
126
127
# File 'lib/uniword/warnings/warning.rb', line 122

def to_s
  severity_str = @severity.to_s.upcase
  element_str = @attribute ? "#{@element}/@#{@attribute}" : @element
  msg_str = @message
  "[#{severity_str}] #{element_str}: #{msg_str}"
end

#warning?Boolean

Check if this is a warning-level warning.

Returns:

  • (Boolean)

    true if severity is :warning



92
93
94
# File 'lib/uniword/warnings/warning.rb', line 92

def warning?
  @severity == :warning
end