Class: Mjai::Furo

Inherits:
Object
  • Object
show all
Extended by:
WithFields
Defined in:
lib/mjai/furo.rb

Overview

副露

Constant Summary collapse

FURO_TYPE_TO_MENTSU_TYPE =
{
  :chi => :shuntsu,
  :pon => :kotsu,
  :daiminkan => :kantsu,
  :kakan => :kantsu,
  :ankan => :kantsu,
}

Instance Attribute Summary

Attributes included from WithFields

#field_names

Instance Method Summary collapse

Methods included from WithFields

define_fields

Constructor Details

#initialize(fields) ⇒ Furo

Returns a new instance of Furo.



23
24
25
# File 'lib/mjai/furo.rb', line 23

def initialize(fields)
  @fields = fields
end

Instance Method Details

#inspectObject



55
56
57
# File 'lib/mjai/furo.rb', line 55

def inspect
  return "\#<%p %s>" % [self.class, to_s()]
end

#kan?Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/mjai/furo.rb', line 27

def kan?
  return FURO_TYPE_TO_MENTSU_TYPE[self.type] == :kantsu
end

#paisObject



31
32
33
# File 'lib/mjai/furo.rb', line 31

def pais
  return (self.taken ? [self.taken] : []) + self.consumed
end

#to_mentsuObject



35
36
37
38
39
40
41
# File 'lib/mjai/furo.rb', line 35

def to_mentsu()
  return Mentsu.new({
      :type => FURO_TYPE_TO_MENTSU_TYPE[self.type],
      :pais => self.pais,
      :visibility => self.type == :ankan ? :an : :min,
  })
end

#to_sObject



43
44
45
46
47
48
49
50
51
52
53
# File 'lib/mjai/furo.rb', line 43

def to_s()
  if self.type == :ankan
    return '[# %s %s #]' % self.consumed[0, 2]
  else
    return "[%s(%p)/%s]" % [
        self.taken,
        self.target && self.target.id,
        self.consumed.join(" "),
    ]
  end
end