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

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
get_nav_html() click to toggle source
# File lib/folder/model/abstract.rb, line 78
def get_nav_html
  # prev_model nav_html
  prev_model_html = ''
  if @prev_model
    prev_link = relative_link @prev_model
    prev_model_html = "<li class=\"prev\"><a href=\"#{prev_link}\">#{@prev_model.name}</a></li>"
  end
  next_model_html = ''
  if @next_model
    next_link = relative_link @next_model
    next_model_html = "<li class=\"next\"><a href=\"#{next_link}\">#{@next_model.name}</a></li>"
  end

  %~<ul class="interpage-nav">#{prev_model_html}#{next_model_html}</ul>~
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