class PPZ::Folder::AbstractModel
Attributes
father_model[RW]
index[R]
level[R]
name[R]
next_model[RW]
prev_model[RW]
Public Class Methods
from_path(path, level)
click to toggle source
# 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
new(path, level)
click to toggle source
# 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
Public Instance Methods
relative_link(target)
click to toggle source
# 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
Private Instance Methods
get_ancestor_html()
click to toggle source
# File lib/folder/model/abstract.rb, line 62 def get_ancestor_html list = [] father = self loop do break unless father.father_model father = father.father_model list.unshift father end %~<div class="ancestor-nav"><ul>#{ (list.collect do |node| %`<li><a href="#{relative_link node}">#{node.name}</a></li>` end .join) + %`<li class="self">#{self.name}</li>` }</ul></div>~ end
get_head_html()
click to toggle source
# File lib/folder/model/abstract.rb, line 57 def get_head_html css_path = ('../' * @level) + '.ppz/asset/style/index.css' %~<title>#{@name}</title><link rel="stylesheet" href="#{css_path}">~ end
get_js_html()
click to toggle source
# File lib/folder/model/abstract.rb, line 94 def get_js_html js_path = ('../' * @level) + '.ppz/asset/js/index.js' %~<script type="module" src="#{js_path}"></script>~ end
to_html()
click to toggle source
# File lib/folder/model/abstract.rb, line 49 def to_html get_head_html + get_ancestor_html + get_content_html + get_nav_html + get_js_html end