class Argumenta::Objects::Proposition

A proposition models an assertion as a string of text. It has an associated object record and SHA-1 hash. The object record is similar to Git’s blob. The SHA-1 identifies the proposition.

Attributes

error[RW]
text[RW]

Public Class Methods

new(text) click to toggle source

Initializes a new proposition.

text = "My proposition!"
proposition = Proposition.new text
# File lib/argumenta/objects/proposition.rb, line 16
def initialize(text)
  @text = text
end
validate(object) click to toggle source

Validates an object as a proposition.

valid = Proposition.validate object

@raise [ValidationError] On failure.

# File lib/argumenta/objects/proposition.rb, line 41
def self.validate(object)
  unless object.is_a? self
    raise ValidationError "Object must be a proposition."
  end
  object.validate
end

Public Instance Methods

record() click to toggle source

Gets the proposition’s object record.

record = proposition.record
# File lib/argumenta/objects/proposition.rb, line 24
def record
  "proposition " + @text
end
sha1() click to toggle source

Gets the proposition’s SHA-1.

sha1 = proposition.sha1
# File lib/argumenta/objects/proposition.rb, line 32
def sha1
  Digest::SHA1.hexdigest self.record
end
valid?() click to toggle source

Checks whether proposition is valid.

valid = proposition.valid?

@return [Boolean] The validation status.

# File lib/argumenta/objects/proposition.rb, line 74
def valid?
  begin
    self.validate
    return true
  rescue ValidationError => err
    @error = err
    return false
  end
end
validate() click to toggle source

Validates the proposition.

begin
  proposition.validate
rescue Argumenta::ValidationError => err
  puts "Validation failed: ", err.message
end

@raise [ValidationError] On validation failure.

# File lib/argumenta/objects/proposition.rb, line 57
def validate
  unless @text.is_a? String
    raise ValidationError, "Proposition text must be a string."
  end
  unless @text.length > 0 and text.match /\S+/
    raise ValidationError, "Proposition text must not be empty."
  end
  unless @text.length <= 240
    raise ValidationError, "Proposition text must be 240 characters or less."
  end
end