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