Module: PBSimply::ACCS

Included in:
PBSimply
Defined in:
lib/pbsimply/accs.rb

Overview

ACCS namespace.

Constant Summary collapse

DEFINITIONS =
{}
INDEX =

Built-in Accs index eRuby string.

"<%= YAML.dump(\n  {\n    \"title\" => @index[\"title\"],\n    \"date\" => @index[\"date\"],\n    \"author\" => @index[\"author\"]\n  }\n) %>\n---\n\n<%\narticles = Hash.new {|h,k| h[k] = Array.new }\n\nif @config[\"accs_across_category\"]\n  @indexes.each {|filename, index| articles[\"default\"].push index }\nelse\n  @indexes.each {|filename, index| articles[(index[\"category\"] || \"default\")].push index }\nend\n\n%>\n\n% articles.keys.sort.each do |catname|\n% cat = articles[catname]\n\n% unless articles.length == 1\n# <%= catname %>\n% end\n\n<%\n  sort_method = case @config[\"accs_sort_by\"]\n  when \"title\"\n    lambda {|i| [i[\"title\"].to_s, i[\"date\"]] }\n  when \"name\"\n    lambda {|i| [i[\"_filename\"].to_s, i[\"title\"].to_s, i[\"date\"]] }\n  when \"serial\"\n    lambda {|i| [i[\"serial\"].to_s, i[\"date\"], i[\"_filename\"].to_s] }\n  else\n    lambda {|i| [i[\"date\"], i[\"title\"].to_s, i[\"_last_update\"].to_i] }\n  end\n\n  list = if @config[\"accs_order\"] == \"desc\"\n    cat.sort_by(&sort_method).reverse\n  else\n    cat.sort_by(&sort_method)\n  end\n\n  list.each do |i|\n%>* [<%= i[\"title\"] %>](<%= i[\"page_url\"] %>)\n<% end %>\n\n% end\n"

Instance Method Summary collapse

Instance Method Details

#accsmodeObject

Turn on ACCS processing mode.



96
97
98
99
100
# File 'lib/pbsimply/accs.rb', line 96

def accsmode
  @accs_processing = true
  @singlemode = true
  @skip_index = true
end

#process_accsObject

letsaccs

This method called on the assumption that processed all documents and run as directory mode.



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/pbsimply/accs.rb', line 64

def process_accs
  STDERR.puts "Processing ACCS index..."
  if File.exist?(File.join(@dir, ".accsindex.erb"))
    erbtemplate = File.read(File.join(@dir, ".accsindex.erb"))
  elsif File.exist?(".accsindex.erb")
    erbtemplate = File.read(".accsindex.erb")
  else
    erbtemplate = INDEX
  end

  # Get infomation
  @accs_index = Psych.unsafe_load(File.read([@dir, ".accs.yaml"].join("/")))

  @accs_index["title"] ||= (@config["accs_index_title"] || "Index")
  @accs_index["date"] ||= Time.now.strftime("%Y-%m-%d")
  @accs_index["pagetype"] = "accs_index"

  @index = @frontmatter.merge @accs_index

  @hooks.accs.run({index: @index, indexes: @indexes})

  doc = ERB.new(erbtemplate, trim_mode: "%<>").result(binding)
  File.open(File.join(@dir, ".index.md"), "w") do |f|
    f.write doc
  end

  accsmode
  @dir = File.join(@dir, ".index.md")
  main
end

#single_accs(filename, frontmatter) ⇒ Object

letsaccs in single page.



103
104
105
106
107
108
109
# File 'lib/pbsimply/accs.rb', line 103

def single_accs filename, frontmatter
  unless @skip_index
    @indexes[filename] = frontmatter
    @db.dump(@indexes)
  end
  process_accs
end