# -------------------------------------- # Config # -------------------------------------- # ----- Site ----- # # Last version should be the latest English version since the manifesto is first # written in English, then translated into other languages later. $versions = (Dir.entries("source/en") - %w[. ..]) $last_version = $versions.last $previous_version = $versions[$versions.index($last_version) - 1] # This list of languages populates the language navigation. issues_url = 'https://github.com/olivierlacan/keep-a-changelog/issues' $languages = { "cs" => { name: "Čeština" }, "de" => { name: "Deutsch", notice: "Die neuste version (#{$last_version}) ist noch nicht auf Deutsch verfügbar, aber du kannst sie dir auf Englisch durchlesen und bei der Übersetzung mithelfen." }, "en" => { default: true, name: "English", new: "A new version is available" }, "es-ES" => { name: "Español", notice: "La última versión (#{$last_version}) aun no está disponible en Español, por ahora puedes leerla en Inglés y ayudar a traducirla." }, "fr" => { name: "Français", notice: "La dernière version (#{$last_version}) n'est pas encore disponible en français, mais vous pouvez la lire en anglais pour l'instant et aider à la traduire.", new: "Une nouvelle version est disponible" }, "it-IT" => { name: "Italiano", notice: "L'ultima versione (#{$last_version}) non è ancora disponibile in Italiano, ma la potete leggere in Inglese per ora e potete contribuire a tradurla." }, "pl-PL" => { name: "Polskie" }, "pt-BR" => { name: "Brazilian Portugese", notice: "A última versão (#{$last_version}) ainda não está disponível em Português mas nesse momento você pode lê-la em inglês e ajudar em sua tradução." }, "ru" => { name: "Pyccкий", notice: "Самая последняя версия (#{$last_version}) ещё пока не переведена на русский, но вы можете прочитать её на английском и помочь с переводом." }, "sl" => { name: "Slovenščina" }, "sv" => { name: "Svenska", notice: "Den senaste versionen (#{$last_version}) är ännu inte tillgänglig på Svenska, men du kan läsa det på engelska och även hjälpa till att översätta det." }, "tr-TR" => { name: "Türkçe" }, "zh-CN" => { name: "简体中文", notice: "最新版 (#{$last_version}) 暂时还没有翻译到简体中文,您可以阅读最新的英语版,并且帮助翻译,不胜感激。" }, "zh-TW" => { name: "繁體中文", notice: "最新版 (#{$last_version}) 暫時還沒有翻譯到繁體中文,您可以閱讀最新的英語版,並且幫助翻譯,不勝感激。" } } activate :i18n, lang_map: $languages, mount_at_root: :en set :gauges_id, '' set :publisher_url, 'https://www.facebook.com/olivier.lacan.5' set :site_url, 'http://keepachangelog.com' redirect "index.html", to: "en/#{$last_version}/index.html" $languages.each do |language| code = language.first versions = Dir.entries("source/#{code}") - %w[. ..] redirect "#{code}/index.html", to: "#{code}/#{versions.last}/index.html" end # ----- Assets ----- # set :css_dir, 'assets/stylesheets' set :js_dir, 'assets/javascripts' set :images_dir, 'assets/images' set :fonts_dir, 'assets/fonts' # ----- Images ----- # activate :automatic_image_sizes # ----- Markdown ----- # activate :syntax set :markdown_engine, :redcarpet ## Override default Redcarpet renderer in order to define a class class CustomMarkdownRenderer < Redcarpet::Render::HTML def doc_header %Q[] end def header(text, header_level) slug = text.parameterize tag_name = "h#{header_level}" anchor_link = "" header_tag_open = "<#{tag_name} id='#{slug}'>" output = "" output << header_tag_open output << anchor_link output << text output << "" output end end $markdown_config = { fenced_code_blocks: true, footnotes: true, smartypants: true, tables: true, with_toc_data: true, renderer: CustomMarkdownRenderer } set :markdown, $markdown_config # -------------------------------------- # Helpers # -------------------------------------- helpers do def path_to_url(path) Addressable::URI.join(config.site_url, path).normalize.to_s end end # -------------------------------------- # Content # -------------------------------------- # ----- Directories ----- # activate :directory_indexes page "/404.html", directory_index: false # -------------------------------------- # Production # -------------------------------------- # ----- Optimization ----- # configure :build do set :gauges_id, "5389808eeddd5b055a00440d" activate :asset_hash activate :gzip, {exts: %w[ .css .eot .htm .html .ico .js .json .svg .ttf .txt .woff ]} set :haml, {ugly: true, attr_wrapper: '"'} activate :minify_css activate :minify_html do |html| html.remove_quotes = false end activate :minify_javascript end # ----- Prefixing ----- # activate :autoprefixer do |config| config.browsers = ['last 2 versions', 'Explorer >= 10'] config.cascade = false end # Haml doesn't pick up on Markdown configuration so we have to remove the # default Markdown Haml filter and reconfigure one that follows our # global configuration. module Haml::Filters remove_filter("Markdown") #remove the existing Markdown filter module Markdown include Haml::Filters::Base def renderer $markdown_config[:renderer] end def render(text) Redcarpet::Markdown.new(renderer.new($markdown_config)).render(text) end end end