Sha256: b9e34115042ee6f8bf0cc247ed76ca94cce1ffb11b0e63d762dd5d4a78275f5e

Contents?: true

Size: 1.23 KB

Versions: 1

Compression:

Stored size: 1.23 KB

Contents

module Bioshogi
  module Analysis
    class FileNormalizer
      def call
        TacticInfo.all_elements.each.with_index(&method(:normalize_one))
      end

      private

      def normalize_one(elem, index)
        NormalizeOne.new(elem, index).call
      end

      class NormalizeOne
        def initialize(elem, index)
          @elem = elem
          @index = index
        end

        def call
          @elem.reference_files.each do |file|
            unless file.exist?
              puts "#{@elem} の #{file} が見つかりません"
              next
            end
            @file = file
            @old_text = @file.read
            @new_text = Parser.parse(source_text).to_kif
            new_file.write(@new_text)
            puts "#{mark} [#{@index.next} / #{TacticInfo.all_elements.size}] #{new_file}"
          end
        end

        private

        def source_text
          @old_text.gsub(/(先手|後手)の(戦法|囲い|手筋|備考|棋風):.*\R/, "")
        end

        def new_file
          @file.sub_ext(".kif") # ki2 だった場合を考慮する
        end

        def mark
          if @old_text == @new_text
            " "
          else
            "U"
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bioshogi-0.0.14 lib/bioshogi/analysis/file_normalizer.rb