Method: Uci#fenstring

Defined in:
lib/uci.rb

#fenstringObject

return the state of the interal board in a FEN (Forsyth–Edwards Notation) string, SHORT format (no castling info, move, etc)



287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
# File 'lib/uci.rb', line 287

def fenstring
  fen = []
  (@board.size-1).downto(0).each do |rank_index|
    rank = @board[rank_index]
    if rank.include?(nil)
      if rank.select{|r|r.nil?}.size == 8
        fen << 8
      else
        rank_str = ""
        empties = 0
        rank.each do |r|
          if r.nil?
            empties += 1
          else
            if empties > 0
              rank_str << empties.to_s
              empties = 0
            end
            rank_str << r
          end
        end
        rank_str << empties.to_s if empties > 0
        fen << rank_str
      end
    else
      fen << rank.join('')
    end
  end
  fen.join('/')
end