Class: DressCode::Generator

Inherits:
Object
  • Object
show all
Defined in:
lib/dress_code/generator.rb

Constant Summary collapse

STATIC =
"#{File.dirname(__FILE__)}/../static"
TEMPLATE =
"#{STATIC}/styleguide.html.mustache"

Instance Method Summary collapse

Constructor Details

#initialize(opts) ⇒ Generator

Returns a new instance of Generator.



9
10
11
12
13
14
15
16
17
# File 'lib/dress_code/generator.rb', line 9

def initialize(opts)
  @out_file = opts[:out_file] || 'styleguide.html'
  @docs = opts[:docs]
  @css = opts[:css]
  @js = opts[:js]
  @template = opts[:template] || TEMPLATE
  @inline_css = opts[:dress_code_css].nil? ? true : !!opts[:dress_code_css]
  @inline_js = opts[:dress_code_js].nil? ? true : !!opts[:dress_code_js]
end

Instance Method Details

#dress_code_cssObject



30
31
32
33
# File 'lib/dress_code/generator.rb', line 30

def dress_code_css
  return unless @inline_css
  File.read("#{STATIC}/base.css") + File.read("#{STATIC}/github.css")
end

#dress_code_jsObject



35
36
37
38
# File 'lib/dress_code/generator.rb', line 35

def dress_code_js
  return unless @inline_js
  File.read("#{STATIC}/docs.js")
end

#generateObject



19
20
21
22
23
24
25
26
27
28
# File 'lib/dress_code/generator.rb', line 19

def generate
  template = File.read(@template, encoding: 'bom|utf-8')
  write_file(@out_file, Mustache.render(template, {
    :docs => map_docs,
    :css => @css,
    :js => @js,
    :dress_code_css => dress_code_css,
    :dress_code_js => dress_code_js
  }))
end

#map_doc(doc) ⇒ Object



44
45
46
47
48
49
50
51
# File 'lib/dress_code/generator.rb', line 44

def map_doc(doc)
  {
    :id => "#{doc.component.gsub(' ', '_').downcase}",
    :prose => doc.to_html,
    :component => doc.component,
    :file => doc.relative_path
  }
end

#map_docsObject



40
41
42
# File 'lib/dress_code/generator.rb', line 40

def map_docs
  @docs.map { |doc| map_doc(doc) }
end

#write_file(path, content) ⇒ Object



53
54
55
56
57
58
# File 'lib/dress_code/generator.rb', line 53

def write_file(path, content)
  File.open(path, 'w') do |file|
    puts "# writing file: #{path}"
    file.write(content)
  end
end