class Atom::Scaffold

Public Class Methods

create(root_dir) click to toggle source
# File lib/atom/scaffold.rb, line 3
def self.create(root_dir)
  dirs = [
    'source',
    ['source', 'topics'],
    ['source', 'maps'],
    'config',
    'temp',
    'output',
    ['output', 'html'],
    'templates',
    'plugins'
  ]
  
  if mkdirs(root_dir, dirs)
    mk_dotatom(root_dir)
    mk_dotgitignore(root_dir)
    mk_atom(root_dir)
    mk_concept(root_dir)
    mk_procedure(root_dir)
    mk_map(root_dir)
    mk_html_skeleton(root_dir)
  end
end
mk_atom(root_dir) click to toggle source
# File lib/atom/scaffold.rb, line 43
    def self.mk_atom(root_dir)
      $stdout.puts "create [File]: #{root_dir}/config/atom.yml"
      File.open("#{root_dir}/config/atom.yml", "w") do |file|
        file.puts <<EOS
markup: textile

plugins: { pre: [], post: [] }

EOS
      end
    end
mk_concept(root_dir) click to toggle source
# File lib/atom/scaffold.rb, line 55
    def self.mk_concept(root_dir)
      $stdout.puts "create [File]: #{root_dir}/templates/concept.textile"
      File.open("#{root_dir}/templates/concept.textile", "w") do |file|
        file.puts <<EOS
---
author: {{author}}
class: concept
---

h1(topic-title). {{title}}

EOS
      end
    end
mk_dotatom(root_dir) click to toggle source
# File lib/atom/scaffold.rb, line 27
def self.mk_dotatom(root_dir)
  $stdout.puts "create [File]: #{root_dir}/.atom"
  FileUtils.touch "#{root_dir}/.atom"
end
mk_dotgitignore(root_dir) click to toggle source
# File lib/atom/scaffold.rb, line 32
    def self.mk_dotgitignore(root_dir)
      $stdout.puts "create [File]: #{root_dir}/.gitignore"
      File.open("#{root_dir}/.gitignore", "w") do |file|
        file.puts <<EOS
config/
output/
temp/
EOS
      end
    end
mk_html_skeleton(root_dir) click to toggle source
# File lib/atom/scaffold.rb, line 112
    def self.mk_html_skeleton(root_dir)
      $stdout.puts "create [File]: #{root_dir}/templates/default.html"
      File.open("#{root_dir}/templates/default.html", "w") do |file|
        file.puts <<EOS
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>{{title}}</title>
</head>
  <body>
  {{{body}}}
  </body>
</html>
EOS
      end
    end
mk_map(root_dir) click to toggle source
# File lib/atom/scaffold.rb, line 93
    def self.mk_map(root_dir)
      $stdout.puts "create [File]: #{root_dir}/templates/map.textile"
      File.open("#{root_dir}/templates/map.textile", "w") do |file|
        file.puts <<EOS
---
author: {{author}}
class: map
---

h1(map-title). {{title}}

To include topics in this document, begin a line with @=@ followed by a space and the title of the topic. Like so:

bc. = Title of My Topic

EOS
      end
    end
mk_procedure(root_dir) click to toggle source
# File lib/atom/scaffold.rb, line 70
    def self.mk_procedure(root_dir)
      $stdout.puts "create [File]: #{root_dir}/templates/procedure.textile"
      File.open("#{root_dir}/templates/procedure.textile", "w") do |file|
        file.puts <<EOS
---
author: {{author}}
class: procedure
---

h1(topic-title). {{title}}

p(preparation). Before you begin

h2. Procedure

# Step 1

p(result). Result of procedure

EOS
      end
    end
mkdirs(root_dir, dirs) click to toggle source
# File lib/atom/scaffold.rb, line 130
def self.mkdirs(root_dir, dirs)
  if File.exist? root_dir
    raise "'#{root_dir}' already exists"
    return false
  end
  
  FileUtils.mkdir root_dir
  
  dirs.each do |dir|
    $stdout.puts "create  [Dir]: #{File.join(root_dir, dir)}"
    FileUtils.mkdir "#{File.join(root_dir, dir)}"
  end
end