- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
def properties_file2hash(_property_file, _link_hash=nil)
r_hash = Hash.new
if _property_file && FileTest::exist?(_property_file)
f = File::open(_property_file,'r')
begin
_lines = f.readlines
_lines.each{|_line|
_strip_line = _line.strip
if (_strip_line.length > 0)&&(_strip_line[0,1]!='#')
var_plat = _line.split('::')
if var_plat.length > 1
if (RUBY_PLATFORM.include?(var_plat[0]))
_line = var_plat[1]
var_plat[2..-1].collect{|x| _line=_line+'::'+x} if var_plat.length > 2
else
_line = ''
end
end
var = _line.split('=')
if var.length > 1
_value = var[1].strip
var[2..-1].collect{|x| _value=_value+'='+x} if var.length > 2
if _link_hash
_value = resolve_link(_value, _link_hash)
end
r_hash[var[0].strip]=_value
end
end
}
ensure
f.close unless f.nil?
end
return r_hash
end
Реальный кусок... Весь код проги(не моей)... ТАКОЙ.
1
Рассмотим типичный package.
Тут мы видим класс с двумя методами. Или, точнее говоря, модуль с двумя функциями, которые могут стать классом, если некоторый хеш с полями этого метода освятить (bless) и привязать к этому модулю-пакету. Такие модули-пакеты можно объяединить в пакет-пакет.
Я понятно объясняю, я надеюсь?
Так вот единица в конце позволяет при загрузке этого файла заэвалиуроваться в TRUE, и таким образом не упасть, потому что если при загрузке модуля-пакета вы получаете FALSe, то происходит ошибка.
Как видите, код на перл всегда выглядит логично
Этот метод следует разбить на 2-3 более мелких, убрать _ из названий переменных и избавиться от трети ненужных переменных