Module | RuCodeGen::FilenameProducer |
In: |
lib/rucodegen/filename_producer.rb
|
Модуль для производства имени результирующего файла.
ABSOLUTE | = | :absolute | Ключ, который говорит, что задано абсолютное имя. | |
SCRIPT_RELATIVE | = | :script_relative | Ключ, который говорит, что имя задано относительно скрипта. | |
CWD_RELATIVE | = | :cwd_relative | Ключ, который говорит, что имя задано относительно текущего каталога. |
Определить имя файла. Имя может быть задано одним из следующих способов:
: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"
и:
то будут сгенерированны следующие файлы:
/usr/local/include/cfg.h /home/eao197/prj/cg/h/cfg.hpp /home/eao197/prj/h/cfg.hpp
Аргументы:
# 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