From 78cf26a6a7e8f5cda6c677e23562a363bedd703a Mon Sep 17 00:00:00 2001 From: Thibaut Courouble Date: Sun, 5 Jun 2016 11:54:30 -0400 Subject: [PATCH] Finish Kotlin scraper --- assets/images/icons.png | Bin 46228 -> 46513 bytes assets/images/icons@2x.png | Bin 120791 -> 121388 bytes assets/javascripts/collections/types.coffee | 2 +- assets/javascripts/news.json | 3 ++ .../templates/pages/about_tmpl.coffee | 5 +++ assets/javascripts/views/pages/simple.coffee | 1 + assets/stylesheets/application-dark.css.scss | 1 + assets/stylesheets/application.css.scss | 1 + assets/stylesheets/global/_base.scss | 1 + assets/stylesheets/global/_icons.scss | 1 + assets/stylesheets/pages/_kotlin.scss | 9 ++++ lib/docs/filters/kotlin/clean_html.rb | 40 +++++++++++++++++ lib/docs/filters/kotlin/entries.rb | 42 +++++------------- lib/docs/scrapers/kotlin.rb | 18 ++++++-- public/icons/docs/kotlin/16.png | Bin 1238 -> 389 bytes public/icons/docs/kotlin/16@2x.png | Bin 2562 -> 680 bytes public/icons/docs/kotlin/SOURCE | 2 +- 17 files changed, 88 insertions(+), 38 deletions(-) create mode 100644 assets/stylesheets/pages/_kotlin.scss diff --git a/assets/images/icons.png b/assets/images/icons.png index 1720cac0da617bd5247163d0cbc0391c6dd2a702..7200cecacef42a36c46b1efb4ea0e1efe5275985 100644 GIT binary patch delta 7363 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 z

241nU8IAMJ(b$d**nuYbpWN(gL)g%3+?c`-NAB5#m2M<>gdJ~{vou7*uX-tf$C zpT^S|yk0}=6s8JFxjY8M^>H5X9M0)Gu_2Mx1b_;mF$3pHxhp*X``^Lo%_(=Y5#UEk z5Za^m#>o34P_e$g%a^YL35B~<(4df*@_ih~fxf;IYm52*`!hfyz<-ZY0K&DUr9TUq zNlu?W4>~&bw1-%LppXaLHDvk>6LbA<%<3cU04utz%6qHG4@2E0a5>Kd&ZgSK_9dn; zZ_>XYJx~hYokJuVI4`NKU@cX{+KtiB5zc<+pWR}x+kCBX@GLU*6 z@SP5?Jc9S=C(mrC^GKa?+(Xjlw zMUtX>1C;@cK`K>u$34U4RQnAi8l8(%|Q+;SkHO7FYx;y!7c zC2-@$tw8`J;eQ7pxO?|Of*pB_YAqSWNmSjQp=xAuTlpnoCj{6i>%lK%I0dlrH=l8Up7)>k?xqvYiZN zQWLmc62OsXxZ2GCg62*26nWoRxf8VGh5cERE02F6HA>wyKuKRQLHO z?&!rGAw9SQ`PNhXEi#=xjd# z&3N+u=FIVg>(_4p$(l9Wu=h^~zWT}r4jecRB!7#2<6-2;$$-;fSm=v_M*<*E%5sK+ z*xQGIg#`i$;?1Gf&lvW` z*?$ASYDw?)bX(Xa)djhY!5kqR9suBu#pRuQ<~5veacDo;=-Sz~bxG&ewJCi^YP|c7 z)w%Z_tnuZjz~K?5z%aO#4~VOw{2yu^=O}MNPj3sKoW7B-+Zf5OEzROnmaXBuq8e3{ z2V9a|iTOWeH)@BAyy-OM0Ea{1VPT??tbg0iK$ffqS+b7*0K8Ik;t^K)l4RX;8p%4o zqci^VL2cU3hA?wO;O(YonHR~Fou8x-m=#Y_^k0`G={n&%PWRu_A=uLI0KW6`lL8=Z zi(8%%i;d8a4!~YzA&mO3ze1?PEXvcdHkFGzmqAt5QYcUGWFhbBXmB!75W z5Zs2sj{))~7C-*-;s{7bVBXbcZ`n`)?xh?cO>!XsQgNeSc$Ui>HR>y{wOvYJ!?5@o z%%1JRD#6LgMIZ>rsRjd(DM?=5TIL0wJb4yK?Cb(rL4>BtsB?h3MQVYnK;{8@+Rb{W zHEO{rzQh-<=X>?tEWrF8!Vk~ka(}KnoJ&~<$HQkqv&R%TAh(1r%nx2#<_Jx`da!Nr zOgNJ23T;>%xrz3xrG`-AtP6W%7Qn?ke14fj*Qv-^P~tGHQZy~`2j9@xygIFI*Vd4Z zecKmz9Ip22QfvPW38R(E~)0|-D*wFelGSVct;)(Yc-Re#__1YimR zkRVC0#5NjU8rI4Y00R@ZU_}`F10xk(4zl_aQu#0dheZHclCF}03xTAWtlKp%aoWqY zu9>Xwz`({-hXGDAMfad)ijJ-TH$gO0wci#e>$)N=i}9Ib8Y%iwKMJ4I^uCbb`|6cE zhm)Izog?g6cbnpgo6RN zRZGiC03a_EKPbE<@V)ic6p%{gKyvixN!A1S-h0y_H+L-vLckjgK!3^;l5F4Jhz-

jIav-Bj0?douW4%lBj+;H4}V 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 e.length > 0 - GUIDES_RGX = /(^|[\s\(])(guide|guides|tutorial|reference|playbooks|getting\ started|manual)($|[\s\):])/i + GUIDES_RGX = /(^|[\s\(])(guides?|tutorials?|reference|playbooks|getting\ started|manual)($|[\s\):])/i _groupFor: (type) -> if GUIDES_RGX.test(type.name) diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index cd2eeb78..fa0b8b59 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,5 +1,8 @@ [ [ + "2016-06-05", + "New documentation: Kotlin" + ], [ "2016-04-24", "New documentations: NumPy and Apache Pig" ], [ diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index 3bbe87a9..ad0bffbb 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -250,6 +250,11 @@ credits = [ 'Steven Sanderson, the Knockout.js team, and other contributors', 'MIT', 'https://raw.githubusercontent.com/knockout/knockout/master/LICENSE' + ], [ + 'Kotlin', + '2010-2016 JetBrains s.r.o.', + 'Apache', + 'https://raw.githubusercontent.com/JetBrains/kotlin-web-site/master/LICENSE' ], [ 'Laravel', 'Taylor Otwell', diff --git a/assets/javascripts/views/pages/simple.coffee b/assets/javascripts/views/pages/simple.coffee index e2e12ac7..2e2adcfb 100644 --- a/assets/javascripts/views/pages/simple.coffee +++ b/assets/javascripts/views/pages/simple.coffee @@ -11,6 +11,7 @@ app.views.CakephpPage = app.views.EmberPage = app.views.ExpressPage = app.views.GoPage = +app.views.KotlinPage = app.views.LaravelPage = app.views.LodashPage = app.views.MarionettePage = diff --git a/assets/stylesheets/application-dark.css.scss b/assets/stylesheets/application-dark.css.scss index 2c9148f2..ba74373a 100644 --- a/assets/stylesheets/application-dark.css.scss +++ b/assets/stylesheets/application-dark.css.scss @@ -50,6 +50,7 @@ 'pages/haskell', 'pages/jquery', 'pages/knockout', + 'pages/kotlin', 'pages/laravel', 'pages/lua', 'pages/mdn', diff --git a/assets/stylesheets/application.css.scss b/assets/stylesheets/application.css.scss index e17817e0..9044dac9 100644 --- a/assets/stylesheets/application.css.scss +++ b/assets/stylesheets/application.css.scss @@ -50,6 +50,7 @@ 'pages/haskell', 'pages/jquery', 'pages/knockout', + 'pages/kotlin', 'pages/laravel', 'pages/lua', 'pages/mdn', diff --git a/assets/stylesheets/global/_base.scss b/assets/stylesheets/global/_base.scss index b734e6f9..66b3066f 100644 --- a/assets/stylesheets/global/_base.scss +++ b/assets/stylesheets/global/_base.scss @@ -155,6 +155,7 @@ td { margin-top: 0; margin-bottom: 0; } + > pre:first-child, > p:first-child, > ul:first-child, > ol:first-child { margin-top: 0; } > pre:last-child, > p:last-child, > ul:last-child, > ol:last-child { margin-bottom: 0; } } diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index 5c57d7a3..2a229a24 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -139,3 +139,4 @@ ._icon-perl:before { background-position: -3rem -11rem; } ._icon-apache_pig:before { background-position: -4rem -11rem; } ._icon-numpy:before { background-position: -5rem -11rem; } +._icon-kotlin:before { background-position: -6rem -11rem; } diff --git a/assets/stylesheets/pages/_kotlin.scss b/assets/stylesheets/pages/_kotlin.scss new file mode 100644 index 00000000..9857a6a3 --- /dev/null +++ b/assets/stylesheets/pages/_kotlin.scss @@ -0,0 +1,9 @@ +._kotlin { + h2 { @extend %block-heading; } + h3 { @extend %block-label, %label-blue; } + code { @extend %label; } + + td > pre { margin: .5em 0; } + + .api-docs-breadcrumbs { @extend %note; } +} diff --git a/lib/docs/filters/kotlin/clean_html.rb b/lib/docs/filters/kotlin/clean_html.rb index 5ac568dc..e7812ac9 100644 --- a/lib/docs/filters/kotlin/clean_html.rb +++ b/lib/docs/filters/kotlin/clean_html.rb @@ -2,8 +2,48 @@ module Docs class Kotlin class CleanHtmlFilter < Filter def call + @doc = at_css('.page-content') + subpath.start_with?('api') ? api_page : doc_page doc end + + def doc_page + css('.page-link-to-github').remove + + css('a > img').each do |node| + node.parent.before(node.parent.content).remove + end + + css('pre').each do |node| + node['data-language'] = node.at_css('code')['class'][/lang_(\w+)/, 1] if node.at_css('code') + node.content = node.content + end + end + + def api_page + at_css('h1, h2, h3').name = 'h1' + + if breadcrumbs = at_css('.api-docs-breadcrumbs') + at_css('h1').after(breadcrumbs) + end + + unless at_css('h2') + css('h3').each do |node| + node.name = 'h2' + end + end + + css('a[href="#"]').each do |node| + node.before(node.content).remove + end + + css('.signature > code').each do |node| + parent = node.parent + parent.name = 'pre' + parent.inner_html = node.inner_html.gsub('
', "\n").strip + parent.content = parent.content + end + end end end end diff --git a/lib/docs/filters/kotlin/entries.rb b/lib/docs/filters/kotlin/entries.rb index 7874797f..15012899 100644 --- a/lib/docs/filters/kotlin/entries.rb +++ b/lib/docs/filters/kotlin/entries.rb @@ -2,49 +2,27 @@ module Docs class Kotlin class EntriesFilter < Docs::EntriesFilter def get_name - if at_css('h1') - name = at_css('h1').text - module_name = breadcrumbs[1] - - "#{module_name}.#{name}" - elsif at_css('h2') - at_css('h2').text.gsub 'Package ', '' - elsif at_css('h3') - at_css('h3').text + if subpath.start_with?('api') + breadcrumbs[1..-1].join('.') + else + at_css('h1').content end end def get_type - if package? || top_level? && !extensions? + if subpath.start_with?('api') breadcrumbs[1] - else - "miscellaneous" + elsif subpath.start_with?('docs/tutorials') + 'Tutorials' + elsif subpath.start_with?('docs/reference') + 'Reference' end end private def breadcrumbs - container = at_css('.api-docs-breadcrumbs') - - if container - links = container.children.select.with_index { |_, i| i.even? } - links.map &:text - else - [] - end - end - - def top_level? - breadcrumbs.size == 3 - end - - def extensions? - get_name.start_with? 'Extensions' - end - - def package? - breadcrumbs.size == 2 + @breadcrumbs ||= css('.api-docs-breadcrumbs a').map(&:content).map(&:strip) end end end diff --git a/lib/docs/scrapers/kotlin.rb b/lib/docs/scrapers/kotlin.rb index e657b144..8763e643 100644 --- a/lib/docs/scrapers/kotlin.rb +++ b/lib/docs/scrapers/kotlin.rb @@ -2,8 +2,8 @@ module Docs class Kotlin < UrlScraper self.type = 'kotlin' self.release = '1.0.2' - self.base_url = 'https://kotlinlang.org/api/latest/jvm/stdlib/' - self.root_path = 'index.html' + self.base_url = 'https://kotlinlang.org/' + self.root_path = 'api/latest/jvm/stdlib/index.html' self.links = { home: 'https://kotlinlang.org/', code: 'https://github.com/JetBrains/kotlin' @@ -11,10 +11,20 @@ module Docs html_filters.push 'kotlin/entries', 'kotlin/clean_html' - options[:container] = '.page-content' + options[:container] = '.global-content' + + options[:only_patterns] = [/\Adocs\/tutorials\//, /\Adocs\/reference\//, /\Aapi\/latest\/jvm\/stdlib\//] + options[:skip] = %w( + api/latest/jvm/stdlib/alltypes/index.html + docs/ + docs/videos.html + docs/events.html + docs/resources.html + docs/reference/grammar.html) + options[:replace_paths] = { 'api/latest/jvm/stdlib/' => 'api/latest/jvm/stdlib/index.html' } options[:attribution] = <<-HTML - © 2016 JetBrains
+ © 2010–2016 JetBrains s.r.o.
Licensed under the Apache License, Version 2.0. HTML end diff --git a/public/icons/docs/kotlin/16.png b/public/icons/docs/kotlin/16.png index e78fa6a2f6429e521c5f997237f0b3204ed015c5..8be2258b92600954824b4d43e155f3cd0b152e5c 100644 GIT binary patch delta 363 zcmV-x0hIpM355fYBYy!*Nkl zZR0t=yWih>F+ZQLgaq?M0gV3dVSSh}{(~j6Us$*Ni4ChC)Nd2yWylhE7dDE1JyDDs z{Kc&CZvr90jDRQMvuM#!L9dn+hIEAq#3sncfaM5}B34kTXn%}m6%BN%D-wvgf3QBw z9o&srN0yv3DrL=4r(i%JhQ87IESGpQaud-~p~w?=MX{6}foOXr>9IV*^~fFg$mJkK zBm$Wtz7$e%fT*};>9W0|onj-RMe~p#noJ?N2gsLzF1w6$kafk#SAaDJbh#-Na?3yzKTqRcE zae%z>UuPU9J29mL>?MGg{yVJ0WGBW1@WOwO)9~5F8VU*G*$2C5nv+oN3{(IB002ov JPDHLkV1jxpt8f4S literal 1238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pn}NEkcg59UmvUF{9L`nl>DSry^7odplSvNn+hu+GdHy)QK2F?C$HG5 z!d3~a!V1U+3F|8Y3;nDA{o-C@9zzrKDK}xwt{K19`Se z86_nJR{Hwo<>h+i#(Mch>H3D2mX`VkM*2oZx=P7{9O-#x!EwNQn0$BtH5O0c3d|4@L;p!@;Rg)$-uxY=IP=XVj&ni z**7C3T;%xw@Ap3MGcrEelR3FeXGUXN(5jH8*-n|fPUf+iYs)VB3QkmOJTl2cb6Zcw z7S@ZG^6r#8UKWt4skCFW@{y>QVL^f-_DQRSa-XH9)yRKeoUX>QhX0=R_kF+X{{P?k zevUSqzwW;eNz0C{?u?Q=qr#icG}TAZOtEa5{^PZm{450KNH+-RG6wKn=Ucd{#VL1M zn9cT^t9h>fc`DKPe(@BpHLIAuvD81j+nCSDdVrTPNz%aXytRWtk570%tMK&m6DM}a zKk-k{^lXZ`z#4euWrAS-@81)bn=f!Z>si=8mzno^QorKFnG<&wyn4ks?b)3*3QIX$ zjlQIZEI7QQHTI|AguRU{vmHP2|Y39ro@ANG9m(rYw=Ga>6i48|PHt*16_DSZP zzvRB+Ch>_Y48!UVtghu*FZ5G-V&K~VgN+4yUcagP70`J%eQQnc*Zfrs)t^&+?ChF@ zidg;cS~vJ6#2)n!4}8F{yzrua^U2nq=?Rx*PrueW;{KB>P3~Wh*K;W=iR2pxZZL9B z);iyPVUhW(iy@C+d@k^R@c2u7&A;!iJV&oz6kBhkv%q(M@{Ia(3b#y(R+!ZO`ykbm zcgyzqyFJwx&%9+@72&3nt#G#~?C*!W%J*g*kbfySr+U*`o}3r8Hv4`^hbQkbkE=iN zD68vCn8j;`Thn%2o72*LL^Qm7|Ca3uCxSO0x8MD{Ry^a%@zTBTGGyPm&0KJ%K>o1n z2HQEj8y9?g>~5~+nYwN5Y=bNIru7M(ySY|eKl=ad6w|prpZ`PO1kX9>O-$Neyj}>)8$l|R2^b@`AjlL6kM2#0(RM#a7F{PtE?tIx%zcn!cNs4}XM2olQTz^wQEox$NhQnB&ji{ht=w z614w9eeP=wwQj9DGd3^Pzwm@P=n_-PwRdwCr>jWjPK;_jQUCM7#^&#A_iz6_wfxKP zjLJl_9OjuBZaV|`ck-X&;T9{D;XT}TJgPZ5h9kGt@A8e;!jH}#TmOI0fBC@KIVbbX Ru5*A28&6k1mvv4FO#p5a2@U`N diff --git a/public/icons/docs/kotlin/16@2x.png b/public/icons/docs/kotlin/16@2x.png index 6cdef2e158945fb18c4d0f1741707a269a99156d..4f2f686f87f37d6a6f573e1f950c3260d7db0844 100644 GIT binary patch delta 657 zcmV;C0&e|+6sQG|BYy&KNkl}0=>Z9A#%j;(ewwvFzp zaaC;Fwr$&Z^W{b3nYul1JNKNs{{QNgDpgG0sDP*2A?rR~dJV-JpMiMq+ZP}Gd*Mq! zH+&83TIL3)Cp(1!&9a~2p>rIbFCT$dUPGveytojcNzNhO_gmIKN;C8R6%WZNjf%4fQ9~C5bpb+Y6`WILQc~luVoO zcc8k)khC-dhks@S;^<62GQulGwF!TSs;apNHLtg!lsC7`k} zAl+~ZS%#w|#7>Ur=zfy_x~^q0!U)B10Tjd*j_BZemKQI8h!R4$4OgLuSkDpdT+d7W zWLICqBFc?OHQq*9h}9g?&h<+7kIA2j@Nxl?j1N#6Lgk3It~YrRUBr48<}o0__zWc> zGC87+>wg_FE`W$LzD7}m%n_|z9|^%y5F1zs84zRoh=Pa|j%eljTzY`GHP*2p5+Ks_ z4gV4G9MRJCjTj*y*0TUzK)4Cu2t;#43)gpgfQs0_{B!|fe4D$NKuGr_d`boIIGVX~ rg(HNM@G24Dd0gnhT=u_PF~0!18d=yY?8oo`015yANkvXXu0mjfNJKvL literal 2562 zcmY*bc{~(q7amL25JE`C7)zLiM5ZwqG$w1dhRD85wqXX-M3&TzWVyENyHG~<_4<%4 z6zYaTV~LPtUyAXK?)~ofeedsg-uImIKIeJPdH;H&%}g*nTw+`R0DuQ;pl8lFfyc(d z#@LAz$`<2bBAR2+0P35wON@Y%U|>T80JsH@jR}yEb%p`3!CT@;IAbG(i=PkF$<@!< z4NCSQFwg)1l8j)uK5ir@Alb*;mxv&1f_@Wtg+>BD>aTZ}3fOlgkAM>M>k-w1tm-|}>2|E`5pJx7=^jDTKDvApU`{&tE zTt=O8HUIzz8mp&ciQ`PU?nAKG7rh%al=CxmQzx3$Z~#+ejDE*lP;jrXJJCNmj29to zl3}f+GJ9!Q_+ehjd)qU%F{6^jR`SyPKHC@wFWf~Tc9u_zkSyxnxH(B06S-Kk*ORH5*Q4ecN0ZAgV zO5F(-3tD@Y6lu~vyf=rkN)np37T|E^zC6ngM zSc_vz^QICZ{<-I-agn}Sx8Cg;?0`{YFIa5OUKt5$x4>v90zrXyuhmX!2KJ=2v=ttI@9)_3$c$WOk$Jz4Z!KQ-9<2{*L5uC%Pe*yHKz>>9PFD;Wp*Eo#LmBjvoV- z4AZ4f9W8{hoyAnHp%13cOlHZ?TwVoGD|~yCTN1^si-bS+3kov5V|m*H*0Z-{VNy?b z;}C0BE2i9S(fxC53VKM<_$_=KJTKOKNXz-{xkEQ~Lq`ebbA`XbOjjGI7FVSxJZAgh z!IRk7%=SV)V|NXR!*&9VNN8Ei;Z0B5#-4WRk@QvPceB%7ii;U5`XenVsq9;i zS87em5LQ86GX2VL_zzS&Ca&Re`v$jO)8*WL97PP+>1j_omXVY@;?J`Q^Ys|cRnFWi zoZzH$(obp(xD3AJs3#g4ePYYGGXxIEE>#WOmTd{!kLt7Muv=&v2pstrDXJV*HhB5svfwT5u4ZVl$#SP(;aHYeZ~TOzUZ)GPV*Zh`JxBhCCK^grPI)meH@y;@cQxY3cXFf z^)w+-eJyER*`GC6A|wTB3W8V7r>6FH=%0U8eQ`i2443(t30ZKk5@4hn8 z8iioF_6t;1db5xCr^EZ&JKJT`>Dyr`c{YR*nQWKg;(Z*PfAQp66BwQ5WF~w@#HQ8h z&ibv}#r@0GnF_g8{a*Ch-E+uMSn2L+Q*kq0z`%2y)j`v_7&nN5WE-QAr#2KuubH{8 zu^$3>ty&Uv(p|Ht^7FEWg=$V2ZCm$vbYUFPnrYhT8;ZBHhIj-XhJO$lei9Y#k*ABA zTPz+stehE};c^w~5S0}2RmYO8lk{#6QcBiWE5zduSIi9(03Ff;bDHrHE~Zg=^HMc= zS7+)h)o+p{`l9DqVVj|^(!?6#Bd`K1m>hWX(!hk8L|B{2tg~{*9ZO~iRk@KInJRrk zBB~Z1{j#ZL&7v}U-NDH@Kwf_u%KRm1-A-UDYIJ|qhfjhg2L{VR_0TuYm5*~*u}2y8 zi6pqk1u=gj$=zLq>DD~cOHJErE9##1(luE<0LOsyH@wb;k=L3YB~A;2@l}n;9dx_v z>3cuVG#&(bW9!$c4oLi46*eY~{%zTM;dzMVkGfqrW47fuRTmg)CP zUps+eLvg(ib~vKnZ|P-6Q59|?gk(Xs^cFt5N9-bXYfBRCaAdDcABS0)jYI^|TaA;m z3qk%v)9>=0vS^a$-m(QvlRoGzfUtUz`kntIsh%yIJQfApKi}81Xz|Ww$f}3C@cmWgKj=$sGxmW3CBvngM+a-$ zWUzzD`fy?5HrOk!h`Am?5mG)~G_>qLSydOXUIp`7Y+D3nrdCv}k8cRF9CSIp@2Qar z+-SypJ-qz$0c~u5WHfMLd#5C=f&5ey?>no2GG;5YK)oI)u%kM1dhE|ck$o*|wc74(lbd75 OA2Y1Ji5?a082N9>-=6~j diff --git a/public/icons/docs/kotlin/SOURCE b/public/icons/docs/kotlin/SOURCE index 9b2016ac..8831cc82 100644 --- a/public/icons/docs/kotlin/SOURCE +++ b/public/icons/docs/kotlin/SOURCE @@ -1 +1 @@ -https://upload.wikimedia.org/wikipedia/commons/b/b5/Kotlin-logo.png +https://github.com/JetBrains/kotlin-web-site/blob/master/assets/images/favicon.ico