From a4ba32ebcaa1a07e340bb992d4bb9eed578aad40 Mon Sep 17 00:00:00 2001 From: Thibaut Courouble Date: Sun, 3 Sep 2017 13:05:18 -0400 Subject: [PATCH] Finish Nim scraper --- assets/images/docs-2.png | Bin 13480 -> 13703 bytes assets/images/docs-2@2x.png | Bin 31544 -> 32076 bytes assets/javascripts/news.json | 3 + .../templates/pages/about_tmpl.coffee | 5 ++ assets/javascripts/vendor/prism.js | 43 +++++++++- assets/stylesheets/application-dark.css.scss | 1 - assets/stylesheets/application.css.scss | 1 - assets/stylesheets/components/_prism.scss | 7 +- assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_nim.scss | 81 ------------------ assets/stylesheets/pages/_simple.scss | 1 + lib/docs/filters/nim/clean_html.rb | 58 ++++++++++--- lib/docs/filters/nim/entries.rb | 75 +++++++++------- lib/docs/scrapers/nim.rb | 16 ++-- public/icons/docs/nim/16.png | Bin 789 -> 283 bytes public/icons/docs/nim/16@2x.png | Bin 1949 -> 531 bytes public/icons/docs/nim/SOURCE | 2 +- 17 files changed, 155 insertions(+), 139 deletions(-) delete mode 100644 assets/stylesheets/pages/_nim.scss diff --git a/assets/images/docs-2.png b/assets/images/docs-2.png index fcfb9f250a6b96e1447dbe2ad63d6b931c522dca..ba3a162bfbf7c89c6f44c267561d32c036f70b57 100644 GIT binary patch delta 3888 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 ZCKP+u&xI0=>8St!002ovPDHLkV1oQ9RyF_t diff --git a/assets/images/docs-2@2x.png b/assets/images/docs-2@2x.png index 1b88fe32e9dc3b65fbca2b3b1cc4f7a8780c30b6..1e56762c34fa003e7ee8d043b5f2fff2bdcf4150 100644 GIT binary patch delta 10239 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 Wqd0TOu$%oau#)^2xjGr+p#KAE00MFV diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index d18ec141..04d97b4c 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,5 +1,8 @@ [ [ + "2017-09-03", + "New documentation: Nim" + ], [ "2017-07-23", "New documentation: Godot" ], [ diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index bbdab6ef..6a5c2b75 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -423,6 +423,11 @@ credits = [ '2009-2016 Xiaozhe Wang (chaoslawful)
© 2009-2017 Yichun "agentzh" Zhang (章亦春), OpenResty Inc.', 'BSD', 'https://github.com/openresty/lua-nginx-module#copyright-and-license' + ], [ + 'Nim', + '2006-2017 Andreas Rumpf', + 'MIT', + 'https://github.com/nim-lang/Nim#license' ], [ 'Node.js', 'Joyent, Inc. and other Node contributors
Node.js is a trademark of Joyent, Inc.', diff --git a/assets/javascripts/vendor/prism.js b/assets/javascripts/vendor/prism.js index ee343658..288a9c7f 100644 --- a/assets/javascripts/vendor/prism.js +++ b/assets/javascripts/vendor/prism.js @@ -1,4 +1,4 @@ -/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+elixir+erlang+go+java+json+kotlin+lua+nginx+perl+php+python+crystal+rust+scss+sql+typescript */ +/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript+c+cpp+coffeescript+ruby+elixir+erlang+go+java+json+kotlin+lua+nginx+nim+perl+php+python+crystal+rust+scss+sql+typescript */ var _self = (typeof window !== 'undefined') ? window // if in browser : ( @@ -568,6 +568,9 @@ Prism.languages.markup = { 'entity': /&#?[\da-z]{1,8};/i }; +Prism.languages.markup['tag'].inside['attr-value'].inside['entity'] = + Prism.languages.markup['entity']; + // Plugin to make entity title show the real entity, idea by Roman Komarov Prism.hooks.add('wrap', function(env) { @@ -664,7 +667,7 @@ Prism.languages.clike = { Prism.languages.javascript = Prism.languages.extend('clike', { 'keyword': /\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\b/, - 'number': /\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/, + 'number': /\b-?(0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/, // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) 'function': /[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i, 'operator': /-[-=]?|\+[+=]?|!=?=?|<>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ @@ -672,7 +675,7 @@ Prism.languages.javascript = Prism.languages.extend('clike', { Prism.languages.insertBefore('javascript', 'keyword', { 'regex': { - pattern: /(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, + pattern: /(^|[^/])\/(?!\/)(\[[^\]\r\n]+]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/, lookbehind: true, greedy: true } @@ -710,6 +713,7 @@ if (Prism.languages.markup) { } Prism.languages.js = Prism.languages.javascript; + Prism.languages.c = Prism.languages.extend('clike', { 'keyword': /\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/, 'operator': /\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/, @@ -1245,6 +1249,39 @@ Prism.languages.nginx = Prism.languages.extend('clike', { Prism.languages.insertBefore('nginx', 'keyword', { 'variable': /\$[a-z_]+/i }); +Prism.languages.nim = { + 'comment': /#.*/, + // Double-quoted strings can be prefixed by an identifier (Generalized raw string literals) + // Character literals are handled specifically to prevent issues with numeric type suffixes + 'string': { + pattern: /(?:(?:\b(?!\d)(?:\w|\\x[8-9a-fA-F][0-9a-fA-F])+)?(?:"""[\s\S]*?"""(?!")|"(?:\\[\s\S]|""|[^"\\])*")|'(?:\\(?:\d+|x[\da-fA-F]{2}|.)|[^'])')/, + greedy: true + }, + // The negative look ahead prevents wrong highlighting of the .. operator + 'number': /\b(?:0[xXoObB][\da-fA-F_]+|\d[\d_]*(?:(?!\.\.)\.[\d_]*)?(?:[eE][+-]?\d[\d_]*)?)(?:'?[iuf]\d*)?/, + 'keyword': /\b(?:addr|as|asm|atomic|bind|block|break|case|cast|concept|const|continue|converter|defer|discard|distinct|do|elif|else|end|enum|except|export|finally|for|from|func|generic|if|import|include|interface|iterator|let|macro|method|mixin|nil|object|out|proc|ptr|raise|ref|return|static|template|try|tuple|type|using|var|when|while|with|without|yield)\b/, + 'function': { + pattern: /(?:(?!\d)(?:\w|\\x[8-9a-fA-F][0-9a-fA-F])+|`[^`\r\n]+`)\*?(?:\[[^\]]+\])?(?=\s*\()/, + inside: { + 'operator': /\*$/ + } + }, + // We don't want to highlight operators inside backticks + 'ignore': { + pattern: /`[^`\r\n]+`/, + inside: { + 'punctuation': /`/ + } + }, + 'operator': { + // Look behind and look ahead prevent wrong highlighting of punctuations [. .] {. .} (. .) + // but allow the slice operator .. to take precedence over them + // One can define his own operators in Nim so all combination of operators might be an operator. + pattern: /(^|[({\[](?=\.\.)|(?![({\[]\.).)(?:(?:[=+\-*\/<>@$~&%|!?^:\\]|\.\.|\.(?![)}\]]))+|\b(?:and|div|of|or|in|is|isnot|mod|not|notin|shl|shr|xor)\b)/m, + lookbehind: true + }, + 'punctuation': /[({\[]\.|\.[)}\]]|[`(){}\[\],:]/ +}; Prism.languages.perl = { 'comment': [ { diff --git a/assets/stylesheets/application-dark.css.scss b/assets/stylesheets/application-dark.css.scss index 7cedbf59..8e719586 100644 --- a/assets/stylesheets/application-dark.css.scss +++ b/assets/stylesheets/application-dark.css.scss @@ -67,7 +67,6 @@ 'pages/meteor', 'pages/modernizr', 'pages/moment', - 'pages/nim', 'pages/nginx', 'pages/node', 'pages/npm', diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index e909e005..21ce39a3 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -67,7 +67,6 @@ 'pages/meteor', 'pages/modernizr', 'pages/moment', - 'pages/nim', 'pages/nginx', 'pages/node', 'pages/npm', diff --git a/assets/stylesheets/components/_prism.scss b/assets/stylesheets/components/_prism.scss index bec5e941..405fd436 100644 --- a/assets/stylesheets/components/_prism.scss +++ b/assets/stylesheets/components/_prism.scss @@ -77,6 +77,11 @@ } } -.token.important { +.token.important, +.token.bold { font-weight: $boldFontWeight; } + +.token.italic { + font-style: italic; +} diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index 63a3a471..cfd5605b 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -173,3 +173,4 @@ ._icon-electron:before { background-position: -2rem -2rem; @extend %doc-icon-2; } ._icon-falcon:before { background-position: -3rem -2rem; @extend %doc-icon-2; } ._icon-godot:before { background-position: -4rem -2rem; @extend %doc-icon-2; } +._icon-nim:before { background-position: -5rem -2rem; @extend %doc-icon-2; @extend %darkIconFix !optional; } diff --git a/assets/stylesheets/pages/_nim.scss b/assets/stylesheets/pages/_nim.scss deleted file mode 100644 index 590fb342..00000000 --- a/assets/stylesheets/pages/_nim.scss +++ /dev/null @@ -1,81 +0,0 @@ -._nim { - @extend %simple; - - @if $style == 'dark' { - span.DecNumber { color: #AE81FF; } - span.BinNumber { color: #AE81FF; } - span.HexNumber { color: #AE81FF; } - span.OctNumber { color: #AE81FF; } - span.FloatNumber { color: #AE81FF; } - span.Identifier { color: #F8F8F2; } - span.Keyword { font-weight: 600; color: #F92672; } - span.StringLit { color: #E6DB74; } - span.LongStringLit { color: #E6DB74; } - span.CharLit { color: #E6DB74; } - span.EscapeSequence { color: white; } - span.Operator { color: white; } - span.Punctuation {color: white; } - span.Comment, span.LongComment { - font-style: italic; - font-weight: 400; - color: #75715E; } - - span.RegularExpression { color: darkviolet; } - span.TagStart { color: #F92672; } - span.TagEnd { color: #F92672; } - span.Key { color: #AE81FF; } - span.Value { color: #AE81FF; } - span.RawData { color: #a4255b; } - span.Assembler { color: #AE81FF; } - span.Preprocessor { color: #AE81FF; } - span.Directive { color: #AE81FF; } - - span.Command, span.Rule, span.Hyperlink, span.Label, span.Reference, - span.Other { color: white; } - - /* Pop type, const, proc, and iterator defs in nim def blocks */ - dt pre > span.Identifier, dt pre > span.Operator { color: #529B2F; font-weight: 700; } - } @else { - span.DecNumber { color: #252dbe; } - span.BinNumber { color: #252dbe; } - span.HexNumber { color: #252dbe; } - span.OctNumber { color: #252dbe; } - span.FloatNumber { color: #252dbe; } - span.Identifier { color: #3b3b3b; } - span.Keyword { font-weight: 600; color: #5e8f60; } - span.StringLit { color: #a4255b; } - span.LongStringLit { color: #a4255b; } - span.CharLit { color: #a4255b; } - span.EscapeSequence { color: black; } - span.Operator { color: black; } - span.Punctuation {color: black; } - span.Comment, span.LongComment { - font-style: italic; - font-weight: 400; - color: #484a86; } - - span.RegularExpression { color: darkviolet; } - span.TagStart { color: darkviolet; } - span.TagEnd { color: darkviolet; } - span.Key { color: #252dbe; } - span.Value { color: #252dbe; } - span.RawData { color: #a4255b; } - span.Assembler { color: #252dbe; } - span.Preprocessor { color: #252dbe; } - span.Directive { color: #252dbe; } - - span.Command, span.Rule, span.Hyperlink, span.Label, span.Reference, - span.Other { color: black; } - - /* Pop type, const, proc, and iterator defs in nim def blocks */ - dt pre > span.Identifier, dt pre > span.Operator { color: #155da4; font-weight: 700; } - } - dt pre > span.Identifier ~ span.Identifier, dt pre > span.Operator ~ span.Identifier { - color: inherit; - font-weight: inherit; } - - dt pre > span.Operator ~ span.Identifier, dt pre > span.Operator ~ span.Operator { - color: inherit; - font-weight: inherit; } - -} diff --git a/assets/stylesheets/pages/_simple.scss b/assets/stylesheets/pages/_simple.scss index b1a47857..d242e759 100644 --- a/assets/stylesheets/pages/_simple.scss +++ b/assets/stylesheets/pages/_simple.scss @@ -38,6 +38,7 @@ ._markdown, ._mocha, ._mongoose, +._nim, ._redux, ._requirejs, ._typescript, diff --git a/lib/docs/filters/nim/clean_html.rb b/lib/docs/filters/nim/clean_html.rb index 3231f9eb..50b3e504 100644 --- a/lib/docs/filters/nim/clean_html.rb +++ b/lib/docs/filters/nim/clean_html.rb @@ -4,26 +4,60 @@ module Docs def call @doc = at_css('#documentId .container') - css('.docinfo').remove + css('.docinfo', '.footer', 'blockquote > p:empty', '.link-seesrc').remove - content = at_css('#content') - if content != nil - at_css('#content').remove_attribute('class') - @doc.add_child(at_css('#content').inner_html) + css('h1:not(.title), h2, h3, h4').each do |node| + node.name = node.name.sub(/\d/) { |i| i.to_i + 1 } end - css('> div.row').remove + if content = at_css('#content') + content.prepend_child at_css('h1.title') + @doc = content + end - css('pre').each do |node| - node['data-language'] = 'nim' + if root_page? + at_css('h1').content = 'Nim Documentation' end - # remove link from headers css('h1 > a', 'h2 > a', 'h3 > a', 'h4 > a').each do |node| - node.parent['id'] = node['id'] - node.parent.content = node.content + node.parent['id'] = node['id'] if node['id'] + node.before(node.children).remove + end + + css('a[name]').each do |node| + node.next_element['id'] = node['name'] + node.remove + end + + css('pre').each do |node| + node.content = node.content.strip + node['data-language'] = 'nim' unless node.content =~ /\A[\w\-\_\:\=\ ]+\z/ end - + + css('tt').each do |node| + node.name = 'code' + end + + css('cite').each do |node| + node.name = 'em' + end + + css('.section').each do |node| + node.first_element_child['id'] = node['id'] if node['id'] + node.before(node.children).remove + end + + css('span.pre').each do |node| + node.before(node.children).remove + end + + css('blockquote > pre:only-child', 'blockquote > dl:only-child', 'blockquote > table').each do |node| + node.parent.before(node.parent.children).remove + end + + css('a', 'dl', 'table', 'code').remove_attr('class') + css('table').remove_attr('border') + doc end end diff --git a/lib/docs/filters/nim/entries.rb b/lib/docs/filters/nim/entries.rb index ddcd7522..2176727b 100644 --- a/lib/docs/filters/nim/entries.rb +++ b/lib/docs/filters/nim/entries.rb @@ -1,49 +1,62 @@ module Docs class Nim class EntriesFilter < Docs::EntriesFilter - def get_type - at_css('h1').content + def get_name + name = at_css('h1').content + name.remove! 'Module ' + name.remove! ' User Guide' + name.remove! ' User\'s manual' + name.remove! %r{ \-.*} + name.strip! + name end - def get_name - at_css('h1').content + def get_type + if name.include?('Tutorial') + 'Tutorial' + elsif slug == 'manual' + 'Manual' + elsif at_css('h1').content.include?('Module ') + name + else + 'Reference' + end end def additional_entries entries = [] - if get_name.start_with? 'Module ' - module_name = get_name[7..-1] - css('div .section').map do |node| - section_node = node.at_css('h1 a') - if section_node != nil - section_name = section_node.content.strip - items_node = node.at_css('dl.item') - if items_node != nil - items_node.css('dt a').map do |item_node| - item_name = item_node['name'] - if item_name.include? ',' - item_name = item_name.sub(',', '(') + ')' - end - entries << [module_name + '.' + item_name, item_node.parent['id']] - end - end + + if at_css('h1').content.include?('Module ') + css('#toc-list > li > .simple-toc-section').each do |node| + type = node.previous_element.content.strip + + node.css('a.reference:not(.reference-toplevel)').each do |n| + n.css('span').remove + name = n.content.strip + name << '()' if (type == 'Procs' || type == 'Templates') && !name.include?('`') + name.remove! '`' + name.prepend "#{self.name}." + id = n['href'].remove('#') + entries << [name, id] unless entries.any? { |e| e[0] == name } end end - else - css('h1', 'h2', 'h3').map do |node| - id = node['id'] + elsif slug == 'manual' + css('#toc-list > li > a').each do |node| name = node.content.strip - if id != nil - entries << [name, id] - else - a = node.at_css('a') - if a != nil - id = a['id'] - entries << [name, id] - end + next if name.start_with?('About') + id = node['href'].remove('#') + entries << [name, id] + end + + css('#toc-list > ul').each do |node| + type = node.previous_element.content.strip + + node.css('> li > a').each do |n| + entries << [n.content.strip, n['href'].remove('#'), "Manual: #{type}"] end end end + entries end end diff --git a/lib/docs/scrapers/nim.rb b/lib/docs/scrapers/nim.rb index 571c529a..11d7addc 100644 --- a/lib/docs/scrapers/nim.rb +++ b/lib/docs/scrapers/nim.rb @@ -2,20 +2,20 @@ module Docs class Nim < UrlScraper self.type = 'nim' self.release = '0.17.0' + self.base_url = 'https://nim-lang.org/docs/' + self.root_path = 'overview.html' self.links = { home: 'https://nim-lang.org/', code: 'https://github.com/nim-lang/Nim' } - self.base_url = 'https://nim-lang.org/' - self.root_path = 'docs/overview.html' - html_filters.push 'nim/entries', 'nim/clean_html' - - options[:skip] = %w(cdn-cgi/l/email-protection docs/theindex.html docs/docgen.txt) + html_filters.push 'nim/entries', 'nim/clean_html' + + options[:skip] = %w(theindex.html docgen.txt) + options[:attribution] = <<-HTML © 2006–2017 Andreas Rumpf
- All rights reserved. Licensed under the MIT License. + Licensed under the MIT License. HTML - end -end \ No newline at end of file +end diff --git a/public/icons/docs/nim/16.png b/public/icons/docs/nim/16.png index 1945b395a7b163d571b929c3f7923b53dcc560b7..c471da7d74581b2a7ed708009d0d31436f2d6ee5 100644 GIT binary patch delta 255 zcmV^>WMRo98w}R5qj^Erlm3P0cAP_3eDH(u-Fxin%kP~fM|ekzXAGER z(5+R6?vhg^c*DmQ>L%KnCyY*E!mDF)I-|Dc0=;!?aEt)o33zmCte^GTnnT>9gbzFZ z+D%;?hc##we9lF}gxkQL-6u3c+eW`UT)Cskj6X9In2gu+i)08(?DH9N?0iwbvA>6WXrIlJ;M1)qDe$SRCwB@Q(Z_DQ5gN)qKIDVMd?8#!X6Tedh0Q; z9|LtY+?VpF$jCLuoZX!no!OmrXLWUFRRken)6LeOz+X(T#D9D#wWu^&x75-~A|$m` z)=J5~?wyU2h!T1@!@1`>-??*V?gw_e9sUP@Dav586=|US9|1DRvK_brH%L||h*B}( zWg53y72pY{nn>2vBg?-+wH+j@0}8|vXz?W(T*dr$x62e+U6Hdt(6^_3w14-_Do<`4 z)o88LpO8uY5`PJ{ksv5>3fuUCQfRL~nSqmlb0b@47oSF~td0YIeL*k*xH1MvwfT`P zb2tUq)o|>BnODK-5VyjO+LWV{_acX=>GN|yYQUF(UkDG4!naT`96-Y9eXyp{YtWM;#8s+HG=D+Nm8$GRExzRR;amHfmV>a0 zZvbBp?g(%~nGS?PH~4Cd2ZnF&^;VS|V^~WCaDoaJp%n61w+1s`M%F5rI1f};UW^^- zjrIAx=MD>^3UHZKpu08ibXzm4&t-_2Q-HNN=~veEb{Q}AcI7a#EbB}}qctPrfu?#( zd`}ybk$-PeB1pOdr7meF&ZVr4KFDmi?lmQJHZxfZuM86yN<@l}Q-<-5X68(7jrquv zfwNcfgC5J(!d)~_`=6}Y3HST5U5LjK7n8%7*CWoH3WGFg+5!RbJnBDRL3?Pg_K>W0 z4S~U|I&IgbBqVQyIGc+2J~hm#Mry&KEI;w;sCNHHK$wV95pcW%{B>;n*u#vL&~)0{ zwVBjaisk9FcN34(I~slYCpdCs>iu~W*WZ15oh`(`2?{8RZIee8qsUpKoQiETPc&Mi vp7pcw$04F7$yx-3qC*4azc+4R8aIaTX1?xXe1w~*00000NkvXXu0mjf0Fz}q diff --git a/public/icons/docs/nim/16@2x.png b/public/icons/docs/nim/16@2x.png index bd13ba65cf59cc1b728d7ea60073816abed8deaa..02831fef70d8f16bf333e55f620854796f55da44 100644 GIT binary patch delta 506 zcmV2`0I2~%vVY+UWH?&_uat)vi!b;I z89{DCVw5lpBd4M$p64lIB}kBf3zV>kPd0_`a1P^89jOpllA#>>V?XZN4cB#@3zc{- zV4|jJfnC+LVL?G~VEfk$;|q`7Z9Hn9Z^-)t7sWqhQ6f2S@PiuBr_y^JCMQu z#=7!nORR7(Sbsxvtie$fhbru&k|)$P!|A{_I@I&M5r*0fABld*=j*q!7>g!0eUniM zMbRLzf`aJc`MDTYqb#x_IVxZ;(%B5DiDk%+B*=u4*oHKoHGS+3?Jj?ZIX!Zt9kMvQ zE=&|hHxxlesJ@T1U2{2P6yX%MT?^Ii3gTjMI1P`By>m_qb7N{44^N2sFr7A}#8D&; zgW)N#IV6oH+F*%gS!M|O(_#tgK@}klPe{%4)*6YT$bn=q1&JR&zQShN2bZe?^JG%heMF)~90YwQ332P#QKK~#9!?N@tHRAm(Zb{Fh9Ha$>B%dDB~onvWJ zI#d18^cWwoyJ}&DqoSmk$RPW;`?&1g<)QIVB6cob&sg-*>*VA0#0mfm}@^*9iQ(K%VeCd#W4> zc9pXJe+ckOa!9Nm0yGTV;jpPKHW%TnNwBu7|I81c_?+QZ1ZxKi#wrDe zEy!;G9&9kJCx1B^%kL}5j(EagUPlCnH8{Wr3P6&W&&(w=wMJ5DByeK2IZ5%B`OhUM z8m~7&u*K>kCN71U8HnM#;{5q9oI4!k>1`o>CEK*K4W@Mflr-SSSrggQ<>WMFMYD96 zm*>#xuScA=$M5taMZPj;H^tBKQAoRi!(hophZyTY^S_uVm3>ZuVlW^VN zs(e>`fPWO4)XVay#8U@uZE!fOY7Q`*fQ2MbY1qf8yHRR`DTQp=wD^hR-;Axopl&(2 zj{!lY-QTOc1Jeqxvdb79UCwPUJL&3Nb^*qWg9^=m@N_Phnt zf8H13K2-TgE;wK4`+m(Ju`-1n4u8g4j= z@t0&pMZY5F4y*bhr?)6Cd`6rhjX*Vz355k zTos;W|1reI#Rjs%Ao4#s<#?hGzDr4pzkj8qKo@$nW@3e3wci`ny{J-)d*TkW#RaF% z8boZi1d^C&yAB2pX{#CkIm**ne{;*WoQUa0b20-|j;Jz(>>6cCs@RZXQ_jxT@Li(} zA&t#05F-%cV1~TEb^i07`kUH(P@t#b#vfBt){J(!?4#^AIizuxO~!D-$Ir(=+*?Jp zlc%od#vZC(;`DaR>!jyGDg8|+8?3$UI#2DMWeHHo9q5ZOMukw}*0`tJe^~e>y*P*d z^lii^2oAZ~50!r=tMKK!Th>k$J9U?6r(ut2X?^t&U_rBD^?cyZF?K9UR{DO-%d~qg^`6#W7CZD_v44Hg5QHjV^fx^n zYDh%+CMy1-Pl@yXs=q|f&!y!bthyM#QVJA9n9pu~hPe_0ZqLsMM~P6a_?(TT&E| z0zuifNJACCSlGrscYnp3(VT^WtN-FkHuSc_tFe_xL|ZT(GmOFcg7#O}_P@FN4-mmb z>@J6UX*4@wFa??sjI#*DZfE`)Kk(3o`w#z^1oVeW0T^yWF1Y{nAC+tW8(wt+e*n;> W*P07wHQ4|F00{s|MNUMnLSTYOWxm${ diff --git a/public/icons/docs/nim/SOURCE b/public/icons/docs/nim/SOURCE index ed29d859..1a0962d4 100644 --- a/public/icons/docs/nim/SOURCE +++ b/public/icons/docs/nim/SOURCE @@ -1 +1 @@ -https://nim-lang.org/assets/img/logo.svg \ No newline at end of file +https://github.com/nim-lang/website/tree/master/jekyll/assets/img \ No newline at end of file