class Lutaml::Model::Type::Decimal

def self.cast(value)

def self.cast(value)
  return nil if value.nil?
  check_dependencies!(value)
  case value
  when BigDecimal
    # If already a BigDecimal, return as-is
    value
  else
    # Convert to string first to handle various input types
    BigDecimal(value.to_s)
  end
rescue ArgumentError
  nil
end

def self.check_dependencies!(value)

def self.check_dependencies!(value)
  unless defined?(BigDecimal)
    raise TypeNotEnabledError.new("Decimal", value)
  end
end

def self.from_xml(value)

def self.from_xml(value)
  cast(value.text)
end

def self.serialize(value)

# xs:decimal format
def self.serialize(value)
  return nil if value.nil?
  check_dependencies!(value)
  value = cast(value)
  value.to_s("F") # Use fixed-point notation to match test expectations
end

def to_yaml

Override to avoid serializing ruby object in YAML
def to_yaml
  value&.to_s("F")
end