Hi, today for a special class, I need to change the way how my class compare it property version (it’s a String).
I did that, but I have got an error:
In ISM/SoftwareDependency.cr:17:20
17 | def version>(other : String) : Bool
^
Error: unexpected token: ">"
My class:
module ISM
class SoftwareDependency
property name : String
property options : Array(ISM::SoftwareOption)
def initialize
@name = String.new
@version = String.new
@options = Array(ISM::SoftwareOption).new
end
def version=(@version)
end
def version>(other : String) : Bool
return (SemanticVersion.parse(version) > SemanticVersion.parse(other))
end
def version<(other : String) : Bool
return (SemanticVersion.parse(version) < SemanticVersion.parse(other))
end
def version>=(other : String) : Bool
return (SemanticVersion.parse(version) >= SemanticVersion.parse(other))
end
def version<=(other : String) : Bool
return (SemanticVersion.parse(version) <= SemanticVersion.parse(other))
end
def version
availableVersion = @version
if @version.includes?("<") || @version.includes?(">")
if @version[0] == ">" && @version[1] != "="
availableVersion = @version.tr("><=","")
Ism.softwares.each do |software|
if @name == software.name
temporaryVersion = @version.tr("><=","")
software.versions.each do |information|
temporarySoftwareVersion = information.version.tr("><=","")
if temporaryVersion < temporarySoftwareVersion && availableVersion < temporarySoftwareVersion
availableVersion = temporarySoftwareVersion
else
availableVersion = @version
end
end
end
end
end
if @version[0] == "<" && @version[1] != "="
availableVersion = @version.tr("><=","")
Ism.softwares.each do |software|
if @name == software.name
temporaryVersion = @version.tr("><=","")
software.versions.each do |information|
temporarySoftwareVersion = information.version.tr("><=","")
if temporaryVersion > temporarySoftwareVersion && availableVersion > temporarySoftwareVersion
availableVersion = temporarySoftwareVersion
else
availableVersion = @version
end
end
end
end
end
if @version[0..1] == ">="
availableVersion = @version.tr("><=","")
Ism.softwares.each do |software|
if @name == software.name
temporaryVersion = @version.tr("><=","")
software.versions.each do |information|
temporarySoftwareVersion = information.version.tr("><=","")
if temporaryVersion <= temporarySoftwareVersion && availableVersion <= temporarySoftwareVersion
availableVersion = temporarySoftwareVersion
else
availableVersion = @version
end
end
end
end
end
if @version[0..1] == "<="
availableVersion = @version.tr("><=","")
Ism.softwares.each do |software|
if @name == software.name
temporaryVersion = @version.tr("><=","")
software.versions.each do |information|
temporarySoftwareVersion = information.version.tr("><=","")
if temporaryVersion >= temporarySoftwareVersion && availableVersion >= temporarySoftwareVersion
availableVersion = temporarySoftwareVersion
else
availableVersion = @version
end
end
end
end
end
end
return availableVersion
end
def getDependencies : Array(ISM::SoftwareDependency)
dependencies = Array(ISM::SoftwareDependency).new
Ism.softwares.each do |software|
if software.name == @name
software.versions.each do |softwareVersion|
if version == softwareVersion.version
dependencies = dependencies + softwareVersion.dependencies
break
end
end
end
end
return dependencies
end
def getInformation : ISM::SoftwareInformation
dependencyInformation = ISM::SoftwareInformation.new
Ism.softwares.each do |software|
if software.name == @name
software.versions.each do |softwareVersion|
if version == softwareVersion.version
dependencyInformation = softwareVersion
break
end
end
end
end
return dependencyInformation
end
def == (other : ISM::SoftwareDependency) : Bool
return @name == other.name && @version == other.version && @options == other.options
end
end
end