class Opening

Represents an opening as parsed from scid.eco

Attributes

eco[RW]
name[RW]
pgn[RW]

Public Class Methods

new(options) click to toggle source
# File lib/eco_classifier/opening.rb, line 7
def initialize(options)
  self.eco   = options[:eco]
  self.name  = options[:name]
  self.pgn   = options[:pgn]
end

Public Instance Methods

as_json(options = {}) click to toggle source
# File lib/eco_classifier/opening.rb, line 46
def as_json(options = {})
  {
    eco: base_eco,
    name: base_name,
    variation: variation,
    full_name: self.name
  }
end
base_eco() click to toggle source
# File lib/eco_classifier/opening.rb, line 13
def base_eco
  self.eco[/\A([A-E]\d{2})/, 1]
end
base_name() click to toggle source
# File lib/eco_classifier/opening.rb, line 17
def base_name
  self.name.split(":").first
end
move_list() click to toggle source
# File lib/eco_classifier/opening.rb, line 42
def move_list
  pgn.gsub(/\d+\./, '').gsub(/\*/, '').strip.split(/\s+/)
end
variation() click to toggle source
# File lib/eco_classifier/opening.rb, line 21
def variation
  return @variation if defined?(@variation)
  match = self.name[/:(.*)/, 1]
  return unless match
  @variation = match.strip
end
variation_line() click to toggle source
# File lib/eco_classifier/opening.rb, line 35
def variation_line
  return unless variation
  return @variation_line if defined?(@variation_line)
  @variation_line =
    variation.split(",").map(&:strip).select {|str| str[0] =~ /\d/ }.join(", ")
end
variation_name() click to toggle source
# File lib/eco_classifier/opening.rb, line 28
def variation_name
  return unless variation
  return @variation_name if defined?(@variation_name)
  @variation_name =
    variation.split(",").map(&:strip).select {|str| str[0] !~ /\d/ }.join(", ")
end