Решение на Трета задача от Васил Бунарджиев

Обратно към всички решения

Към профила на Васил Бунарджиев

Резултати

  • 3 точки от тестове
  • 0 бонус точки
  • 3 точки общо
  • 25 успешни тест(а)
  • 19 неуспешни тест(а)

Код

class String
def is_int?
/\A[-+]?[0-9_]+\z/ === self
end
end
module RBFS
class File
def initialize(*argument)
if argument[0] == nil
@file_value = nil
else
@file_value = argument[0]
@file_type = argument[0].class.to_s
end
end
def data_type
return :nil if @file_type == nil
return :string if @file_type == 'String'
return :symbol if @file_type == 'Symbol'
return :number if @file_type == 'Fixnum' or @file_type == 'Float'
return :boolean if @file_type == 'FalseClass' or @file_type == 'TrueClass'
end
def data
@file_value
end
def data=(argument)
@file_value = argument
@file_type = argument.class.to_s
end
def serialize
return self.data_type.to_s+':' if @file_value == nil
return self.data_type.to_s+':'+@file_value.to_s
end
def parse(string_data)
arg_type = string_data[0..string_data.index(':')-1]
arg = string_data[string_data.index(':')+1..-1]
return File.new(arg == 'true') if arg_type == 'boolean'
return File.new(arg.to_sym) if arg_type == 'symbol'
return File.new(arg) if arg_type == 'string'
return File.new if arg_type == 'nil'
return File.new(arg.to_i) if arg_type == 'number' and arg.is_int?
return File.new(arg.to_f) if arg_type == 'number'
end
end
class Directory
def files
@all_types_hash.reject {|key,value| value.class == RBFS::Directory}
end
def directories
@directories
end
def all_types_hash
@all_types_hash
end
def initialize
@all_types_hash = Hash.new
@directories = Hash.new
end
def add_file(name, file)
@all_types_hash[name] = file
end
def add_directory(name, *directory)
if directory[0] != nil
@all_types_hash[name] = directory[0]
@directories[name] = directory[0]
else
@all_types_hash[name] = nil
end
end
def [](name)
return directories[name]
end
end
end

Лог от изпълнението

▸ Покажи лога

История (1 версия и 0 коментара)

Васил обнови решението на 10.11.2014 16:46 (преди над 10 години)

▸ Покажи разликите
+class String
+ def is_int?
+ /\A[-+]?[0-9_]+\z/ === self
+ end
+end
+
+module RBFS
+ class File
+ def initialize(*argument)
+ if argument[0] == nil
+ @file_value = nil
+ else
+ @file_value = argument[0]
+ @file_type = argument[0].class.to_s
+ end
+ end
+
+ def data_type
+ return :nil if @file_type == nil
+ return :string if @file_type == 'String'
+ return :symbol if @file_type == 'Symbol'
+ return :number if @file_type == 'Fixnum' or @file_type == 'Float'
+ return :boolean if @file_type == 'FalseClass' or @file_type == 'TrueClass'
+ end
+
+ def data
+ @file_value
+ end
+
+ def data=(argument)
+ @file_value = argument
+ @file_type = argument.class.to_s
+ end
+
+ def serialize
+ return self.data_type.to_s+':' if @file_value == nil
+ return self.data_type.to_s+':'+@file_value.to_s
+ end
+
+ def parse(string_data)
+ arg_type = string_data[0..string_data.index(':')-1]
+ arg = string_data[string_data.index(':')+1..-1]
+ return File.new(arg == 'true') if arg_type == 'boolean'
+ return File.new(arg.to_sym) if arg_type == 'symbol'
+ return File.new(arg) if arg_type == 'string'
+ return File.new if arg_type == 'nil'
+ return File.new(arg.to_i) if arg_type == 'number' and arg.is_int?
+ return File.new(arg.to_f) if arg_type == 'number'
+ end
+ end
+
+ class Directory
+
+ def files
+ @all_types_hash.reject {|key,value| value.class == RBFS::Directory}
+ end
+
+ def directories
+ @directories
+ end
+
+ def all_types_hash
+ @all_types_hash
+ end
+
+ def initialize
+ @all_types_hash = Hash.new
+ @directories = Hash.new
+ end
+
+ def add_file(name, file)
+ @all_types_hash[name] = file
+ end
+
+ def add_directory(name, *directory)
+ if directory[0] != nil
+ @all_types_hash[name] = directory[0]
+ @directories[name] = directory[0]
+ else
+ @all_types_hash[name] = nil
+ end
+ end
+
+ def [](name)
+ return directories[name]
+ end
+ end
+end