Class RuCodeGen::CodegenInitiator
In: lib/rucodegen/generation_initiator.rb
Parent: Object

Класс, который отвечает за инициирование генерации кода.

Methods

clean   initiate   new  

Public Class methods

Конструктор.

file имя файла с описанием кодогенератора.

[Source]

# File lib/rucodegen/generation_initiator.rb, line 13
        def initialize( file )
                @file = file
                @hash_file_name = File.join(
                                File.dirname( file ),
                                "." + File.basename( file ) + ".md5" )

                @original_hash = Digest::MD5.new.update( File.read( @file ) )
        end

Public Instance methods

Очистить результаты кодогенерации.

[Source]

# File lib/rucodegen/generation_initiator.rb, line 51
        def clean
                all_files = Generators.all_files.clone
                all_files << @hash_file_name

                all_files.each do |f|
                        File.delete f if FileTest.exists?( f )
                end
        end

Инициировать кодогенерацию, если это необходимо.

Аргументы

force_rebuild
если true, то инициируется полная перегенерация.

[Source]

# File lib/rucodegen/generation_initiator.rb, line 26
        def initiate( force_rebuild = false )
                all_files = Generators.all_files
                if !all_files.empty?
                        if force_rebuild || is_hash_changed
                                # Требуется перегенерация всех файлов.
                                all_files.each do |file|
                                        regenerate_file( file, Generators.for_file( file ) )
                                end

                                update_hash_file
                        else
                                # Описание не изменилось, поэтому перегенерировать нужно только
                                # те файлы, которые отсутствуют.
                                all_files.each do |file|
                                        regenerate_file( file, Generators.for_file( file ) ) \
                                                unless FileTest.exists?( file )
                                end
                        end
                else
                        # Хеш больше не нужен.
                        File.delete @hash_file_name if FileTest.exists?( @hash_file_name )
                end
        end

[Validate]

Hosted by uCoz