Class: Atom::Scaffold

Inherits:
Object
  • Object
show all
Defined in:
lib/atom/scaffold.rb

Class Method Summary collapse

Class Method Details

.create(root_dir) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 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) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
# 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 "markup: textile\n\nplugins: { pre: [], post: [] }\n\n"
  end
end

.mk_concept(root_dir) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
# 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 "---\nauthor: {{author}}\nclass: concept\n---\n\nh1(topic-title). {{title}}\n\n"
  end
end

.mk_dotatom(root_dir) ⇒ Object



27
28
29
30
# 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) ⇒ Object



32
33
34
35
36
37
38
39
40
41
# 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 "config/\noutput/\ntemp/\n"
  end
end

.mk_html_skeleton(root_dir) ⇒ Object



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# 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 "<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"utf-8\" />\n  <title>{{title}}</title>\n</head>\n  <body>\n  {{{body}}}\n  </body>\n</html>\n"
  end
end

.mk_map(root_dir) ⇒ Object



93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# 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 "---\nauthor: {{author}}\nclass: map\n---\n\nh1(map-title). {{title}}\n\nTo include topics in this document, begin a line with @=@ followed by a space and the title of the topic. Like so:\n\nbc. = Title of My Topic\n\n"
  end
end

.mk_procedure(root_dir) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# 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 "---\nauthor: {{author}}\nclass: procedure\n---\n\nh1(topic-title). {{title}}\n\np(preparation). Before you begin\n\nh2. Procedure\n\n# Step 1\n\np(result). Result of procedure\n\n"
  end
end

.mkdirs(root_dir, dirs) ⇒ Object



130
131
132
133
134
135
136
137
138
139
140
141
142
# 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