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