Class: PPZ::Folder::AbstractModel

Inherits:
Object
  • Object
show all
Defined in:
lib/folder/model/abstract.rb

Direct Known Subclasses

AbstractFileModel, FolderModel

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, level) ⇒ AbstractModel

Returns a new instance of AbstractModel.



8
9
10
11
12
13
14
15
16
17
# File 'lib/folder/model/abstract.rb', line 8

def initialize path, level
  if path.is_a? String
    path = Pathname path
  elsif !(path.is_a? Pathname)
    throw '文件夹的名字必须是 String 或 Pathname'
  end
  @path = path
  @basename = path.basename.to_s
  @level = level
end

Instance Attribute Details

#father_modelObject

Returns the value of attribute father_model.



6
7
8
# File 'lib/folder/model/abstract.rb', line 6

def father_model
  @father_model
end

#indexObject (readonly)

Returns the value of attribute index.



5
6
7
# File 'lib/folder/model/abstract.rb', line 5

def index
  @index
end

#levelObject (readonly)

Returns the value of attribute level.



5
6
7
# File 'lib/folder/model/abstract.rb', line 5

def level
  @level
end

#nameObject (readonly)

Returns the value of attribute name.



5
6
7
# File 'lib/folder/model/abstract.rb', line 5

def name
  @name
end

#next_modelObject

Returns the value of attribute next_model.



6
7
8
# File 'lib/folder/model/abstract.rb', line 6

def next_model
  @next_model
end

#prev_modelObject

Returns the value of attribute prev_model.



6
7
8
# File 'lib/folder/model/abstract.rb', line 6

def prev_model
  @prev_model
end

Class Method Details

.from_path(path, level) ⇒ Object



19
20
21
22
23
24
25
26
27
28
# File 'lib/folder/model/abstract.rb', line 19

def self.from_path path, level
  level += 1
  if Dir.exist? path
    FolderModel.new path, level
  elsif File.exist? path
    AbstractFileModel.from_path path, level
  else
    throw path + '不存在?'
  end
end

Instance Method Details



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/folder/model/abstract.rb', line 30

def relative_link target
  relative_level = @level - target.level # relative_level 是“目标 model 比当前 level 高几级”

  (if relative_level > 0
    '../' * relative_level
  elsif relative_level < 0
    result = ''
    father = target.father_model
    (- relative_level).times do
      result = father.name + '/' + result
      father = father.father_model
    end
    result
  else
    ''
  end) + target.name + '.html'
end