Module RuCodeGen::FilenameProducer
In: lib/rucodegen/filename_producer.rb

Модуль для производства имени результирующего файла.

Methods

produce  

Constants

ABSOLUTE = :absolute   Ключ, который говорит, что задано абсолютное имя.
SCRIPT_RELATIVE = :script_relative   Ключ, который говорит, что имя задано относительно скрипта.
CWD_RELATIVE = :cwd_relative   Ключ, который говорит, что имя задано относительно текущего каталога.

Public Class methods

Определить имя файла. Имя может быть задано одним из следующих способов:

 :absolute => "/usr/lib/mystab.c"    # Абсолютное имя, не нуждается
                                     # в дальнейших преобразованиях.
 :script_relative => "h/cfg.hpp"     # Имя h/cfg.hpp задано относительно
                                     # пути, в котором находится
                                     # генерирующий скрипт.
 :cwd_relative => "h/cfg.hpp"        # Имя h/cfg.hpp задано относительно
                                     # текущего каталога.

Например, если указано:

 :absolute => "/usr/local/include/cfg.h"
 :script_relative => "h/cfg.hpp"
 :cwd_relative => "h/cfg.hpp"

и:

  • текущим каталогом является /home/eao197/prj,
  • генерирующий скрипт находится в каталоге /home/eao197/prj/cg

то будут сгенерированны следующие файлы:

 /usr/local/include/cfg.h
 /home/eao197/prj/cg/h/cfg.hpp
 /home/eao197/prj/h/cfg.hpp

Аргументы:

script_name
имя скрипта, в котором вычисляется имя файла. Необходимо для обработки случая :script_relative.
file_name
имя, указанное пользователем (это должен быть Hash).

[Source]

# File lib/rucodegen/filename_producer.rb, line 38
        def FilenameProducer.produce( script_name, file_name )
                # В file_name должен быть всего один элемент.
                fail "1 element expected in file_name" if 1 != file_name.size

                if file_name.has_key?( ABSOLUTE )
                        return file_name[ ABSOLUTE ]
                elsif file_name.has_key?( SCRIPT_RELATIVE )
                        return File.join( File.dirname( script_name ),
                                        file_name[ SCRIPT_RELATIVE ] )
                elsif file_name.has_key?( CWD_RELATIVE )
                        return File.join( Dir.pwd, file_name[ CWD_RELATIVE ] )
                else
                        fail "unsupported key: #{file_name.keys[0]}"
                end
        end

[Validate]

Hosted by uCoz