1page "demos/*", :layout => "demo"
2
3###
4# Helpers
5###
6
7# Syntax highlighting example taken straight from Redcarpet project README:
8# https://github.com/vmg/redcarpet
9class HTMLwithPygments < Redcarpet::Render::HTML
10  def block_code(code, language)
11    Pygments.highlight(code, :lexer => language)
12  end
13end
14
15helpers do
16  def version
17    @version ||= JSON.parse(File.read(path_to_file('package.json')))['version']
18  end
19
20  def about
21    @about ||= begin
22      html = render_markdown(File.read(path_to_file('README.md')))
23
24      frag = Nokogiri::HTML.fragment(html)
25      insert = frag.css('p').find do |para|
26        links = para.css('a')
27        links.length > 0 && links.first['href'] =~ /^https:\/\/travis-ci.org/
28      end
29
30      insert['class'] = 'sharing'
31      insert.inner_html += partial('share')
32
33      frag.to_html
34    end
35  end
36
37  def spec_files
38    @spec_files ||= begin
39      files = Dir.glob(path_to_file('site/source/javascripts/lib/spec/*_spec.js'))
40      files.map!(&File.method(:basename))
41      files.reject! { |file| file =~ /(?:node|es6)_spec\.js/ }
42    end
43  end
44
45  def path_to_file(relative_path)
46    File.join(File.dirname(__FILE__), '..', *relative_path.split('/'))
47  end
48
49  # I would much prefer to just have a partial called "_about.md.erb", but see this:
50  # https://github.com/middleman/middleman/issues/963
51  def render_markdown(source)
52    puts markdown().inspect
53    Redcarpet::Markdown.new(HTMLwithPygments, markdown()).render(source)
54  end
55end
56
57set :css_dir, 'stylesheets'
58set :js_dir, 'javascripts'
59set :images_dir, 'images'
60
61set :markdown_engine, :redcarpet
62set :markdown, :fenced_code_blocks => true, :smartypants => true
63
64configure :build do
65  activate :minify_css
66  activate :relative_assets
67end
68