# -------------------------------------- # 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.glob("source/en/*").map { |e| e.sub("source/en/", "") }.sort # $last_version = $versions.last $last_version = "1.1.0" $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 = { "ar" => { name: "العربية" }, "cs" => { name: "Čeština" }, "da" => { name: "Dansk", new: "En ny version er tilgængelig" }, "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" }, "hr" => { name: "Hrvatski" }, "id-ID" => { name: "Indonesia", new: "Ada versi baru tersedia" }, "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." }, "ja" => { name: "日本語" }, "nb" => { name: "Norsk (Bokmål)", notice: "Den siste versjonen (#{$last_version}) er ikke tilgjengelig på norsk, men du kan lese den på engelsk og hjelpe med å oversette den.", new: "En ny versjon er tilgjengelig" }, "nl" => { name: "Nederlands" }, "pl" => { name: "polski" }, "pt-BR" => { name: "Português do Brasil", 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." }, "ro" => { name: "română", new: "O nouă versiune este disponibilă" }, "ru" => { name: "Pyccкий", notice: "Самая последняя версия (#{$last_version}) ещё пока не переведена на русский, но вы можете прочитать её на английском и помочь с переводом." }, "sk" => { name: "Slovenčina" }, "ka" => { name: "ქართული" }, "sl" => { name: "Slovenščina" }, "sr" => { name: "Srpski" }, "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" }, "uk" => { name: "Українська" }, "zh-CN" => { name: "简体中文", notice: "最新版 (#{$last_version}) 暂时还没有翻译到简体中文,您可以阅读最新的英语版,并且帮助翻译,不胜感激。" }, "zh-TW" => { name: "正體中文", notice: "最新版 (#{$last_version}) 暫時還沒有翻譯到正體中文,您可以閱讀最新的英語版,並且幫助翻譯,不勝感激。" }, "ko" => { name: "한국어" }, "fa" => { name: "فارسی" } } $language_count = $languages.size 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, "https://keepachangelog.com" redirect "index.html", to: "en/#{$last_version}/index.html" $languages.each do |language| code = language.first versions = Dir.entries("source/#{code}").sort - %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 %() 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 def available_translation_for(language) language_name = language.last[:name] language_path = "source/#{language.first}" if File.exist?("#{language_path}/#{$last_version}") "#{$last_version} #{language_name}" elsif File.exist?("#{language_path}/#{$previous_version}") "#{$previous_version} #{language_name}" end 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 ]} 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