class DisOrder::Pages

Public Class Methods

build(file, startFolder) click to toggle source
# File lib/DisOrder/pages.rb, line 5
def self.build(file, startFolder)
  return unless File.exist?(config("baseMetaDataFolder") + "/"+ file)

  template = ERB.new(baseTemplate(), 0, "%<>")

  @pages = YAML.load_file(config("baseMetaDataFolder") + "/"+ file)

  @pages.each_with_index do |f, i|
    puts "--- Make Page: #{f[1]["name"]}".white

    pageDir = "#{config("output")}/#{f[1]["url"] }"
    pageSource = "#{startFolder}/#{f[1]["folder"]}"
    cssSource = "#{pageSource}/css/"
    imageSource = "#{pageSource}/images/"
    jsSource = "#{pageSource}/js/"
    fontSource = "#{pageSource}/fonts/"

    FileUtils.mkdir_p(pageDir)
    puts "---- Created Folder: #{pageDir}".white

    file_name = sanitize_filename(f[1]["folder"])

    copySources(cssSource, outputCSS(), "css", file_name)
    copySources(imageSource, outputImages(), "images", file_name)
    copySources(jsSource, outputJS(), "js", file_name)
    copySources(fontSource, outputFonts(), "fonts", file_name)

    puts "---- Creating Page HTML".white
    if File.exist?(startFolder+ "/" +f[1]["folder"] +"/index.md")
      @ArticleText = render_markdown(File.new(startFolder+ "/" +f[1]["folder"] +"/index.md", encoding: "UTF-8").read)
      article = ERB.new(File.new(config("baseTemplateFolder") + "/" + config("articleHtml"), encoding: "UTF-8").read).result(binding)
      @contentBlock = ERB.new(article).result(binding)

      puts "----- Convertet  Markdown to HTML".white

    elsif  File.exist?(startFolder+ "/" +f[1]["folder"] +"/index.html")
      @contentBlock = ERB.new(File.new(startFolder+ "/" +f[1]["folder"] +"/index.html", encoding: "UTF-8").read).result(binding)

      puts "----- Got Page HTML ".white
    end

    if File.exist?(cssSource)
      @cssBlock = "static/css/#{file_name}/style.css"
    else
      @cssBlock = config("indexCSS")
    end
    @title = f[1]["name"]

    @jsBlock = nil
    if File.exist?(jsSource)
        jsfiles = Dir.entries(jsSource)
        jsfiles.delete "."
        jsfiles.delete ".."
        jsfiles.map! { |file| "/static/js/#{file_name}/#{file}" }
        @jsBlock = jsfiles
    end

    result = template.result(binding)

    File.open("#{pageDir}/index.html", mode: "w:UTF-8") do |f|
      f.write result
    end

    puts "---- Created HTML Page".white

    puts "--- Finished Page: #{f[1]["name"]} \n".white
  end
end

Private Class Methods

copySources(from, to, what, name) click to toggle source
# File lib/DisOrder/pages.rb, line 75
def self.copySources(from, to, what, name)
  if File.exist?(from)
    FileUtils.mkdir_p(to)
    FileUtils.cp_r(from, to)
    FileUtils.mv("#{to}/#{what}", "#{to}/#{name}")
    puts "---- Copied #{what}".white
  end
end