From dc0e174253bc7858fc1e7d005b5426f3736b4e63 Mon Sep 17 00:00:00 2001 From: Thibaut Date: Tue, 19 Nov 2013 18:37:18 +0100 Subject: [PATCH] Add Ruby on Rails documentation --- assets/images/icons.png | Bin 10252 -> 11057 bytes assets/images/icons@2x.png | Bin 26439 -> 29046 bytes .../templates/pages/about_tmpl.coffee | 5 + .../templates/pages/news_tmpl.coffee | 5 +- assets/stylesheets/global/_icons.scss | 1 + lib/docs/filters/rails/entries.rb | 73 +++++++++++++ lib/docs/scrapers/rdoc/rails.rb | 96 ++++++++++++++++++ public/icons/docs/rails/16.png | Bin 0 -> 802 bytes public/icons/docs/rails/16@2x.png | Bin 0 -> 2325 bytes public/icons/docs/rails/SOURCE | 1 + 10 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 lib/docs/filters/rails/entries.rb create mode 100644 lib/docs/scrapers/rdoc/rails.rb create mode 100644 public/icons/docs/rails/16.png create mode 100644 public/icons/docs/rails/16@2x.png create mode 100644 public/icons/docs/rails/SOURCE diff --git a/assets/images/icons.png b/assets/images/icons.png index 65e2a3de2eb0c625e6baae427bb06a14ebf54184..bdb65351003ab43e1259e53b8c0ae58374555cc0 100644 GIT binary patch literal 11057 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 result app.news = [ - [ 1384560000000, # November 16, 2013 + [ 1384819200000, # November 19, 2013 + """ New Ruby on Rails documentation """ + ], [ + 1384560000000, # November 16, 2013 """ New Ruby documentation """ ], [ 1382572800000, # October 24, 2013 diff --git a/assets/stylesheets/global/_icons.scss b/assets/stylesheets/global/_icons.scss index fb6b50e5..bc2016f4 100644 --- a/assets/stylesheets/global/_icons.scss +++ b/assets/stylesheets/global/_icons.scss @@ -40,3 +40,4 @@ ._icon-lodash:before { background-position: -1rem -5rem; } ._icon-php:before { background-position: -2rem -5rem; } ._icon-ruby:before { background-position: -3rem -5rem; } +._icon-rails:before { background-position: -4rem -5rem; } diff --git a/lib/docs/filters/rails/entries.rb b/lib/docs/filters/rails/entries.rb new file mode 100644 index 00000000..ef6beb0f --- /dev/null +++ b/lib/docs/filters/rails/entries.rb @@ -0,0 +1,73 @@ +module Docs + class Rails + class EntriesFilter < Docs::Rdoc::EntriesFilter + TYPE_BY_NAME_MATCHES = { + /Assertions|::Test|Fixture/ => 'Testing', + /\AActiveRecord.+Assoc/ => 'ActiveRecord/Associations', + /\AActiveRecord.+Attribute/ => 'ActiveRecord/Attributes', + /\AActiveRecord.+(Migration|Schema|Adapters::Table)/ => 'ActiveRecord/Migrations', + /\AActiveSupport.+(Subscriber|Notifications)/ => 'ActiveSupport/Instrumentation', + /\A(False|Nil|True)Class/ => 'Boolean' } + + TYPE_BY_NAME_STARTS_WITH = { + 'ActionDispatch::Integration' => 'Testing', + 'ActionDispatch::Routing' => 'ActionDispatch/Routing', + 'ActionView::Helpers' => 'ActionView/Helpers', + 'ActiveModel::Errors' => 'ActiveModel/Validation', + 'ActiveModel::Valid' => 'ActiveModel/Validation', + 'ActiveRecord::Batches' => 'ActiveModel/Query', + 'ActiveRecord::Calculations' => 'ActiveModel/Query', + 'ActiveRecord::Connection' => 'ActiveModel/Connection', + 'ActiveRecord::FinderMethods' => 'ActiveModel/Query', + 'ActiveRecord::Query' => 'ActiveModel/Query', + 'ActiveRecord::Relation' => 'ActiveModel/Relation', + 'ActiveRecord::Result' => 'ActiveModel/Connection', + 'ActiveRecord::Scoping' => 'ActiveModel/Query', + 'ActiveRecord::SpawnMethods' => 'ActiveModel/Query', + 'ActiveSupport::Cach' => 'ActiveSupport/Caching', + 'ActiveSupport::Hash' => 'ActiveSupport/Hash', + 'ActiveSupport::Inflector' => 'ActiveSupport/Inflector', + 'ActiveSupport::Ordered' => 'ActiveSupport/Hash', + 'ActiveSupport::Time' => 'ActiveSupport/TimeZones', + 'Rails::Application' => 'Rails/Application', + 'Rails::Engine' => 'Rails/Engine', + 'Rails::Railtie' => 'Rails/Railtie' } + + def get_name + name = super + name.sub! 'HashWithIndifferentAccess::HashWithIndifferentAccess', 'HashWithIndifferentAccess' + name + end + + def get_type + parent = at_css('.meta-parent').try(:content).to_s + + if [name, parent].any? { |str| str.end_with?('Error') || str.end_with?('Exception') } + return 'Errors' + end + + TYPE_BY_NAME_MATCHES.each_pair do |key, value| + return value if name =~ key + end + + TYPE_BY_NAME_STARTS_WITH.each_pair do |key, value| + return value if name.start_with?(key) + end + + super + end + + def include_default_entry? + super && !skip? + end + + def additional_entries + skip? ? [] : super + end + + def skip? + @skip ||= !css('p').any? { |node| node.content.present? } + end + end + end +end diff --git a/lib/docs/scrapers/rdoc/rails.rb b/lib/docs/scrapers/rdoc/rails.rb new file mode 100644 index 00000000..8bfa5ab5 --- /dev/null +++ b/lib/docs/scrapers/rdoc/rails.rb @@ -0,0 +1,96 @@ +module Docs + class Rails < Rdoc + # Generated with: + # find \ + # actionmailer \ + # actionpack \ + # activemodel \ + # activerecord \ + # activesupport \ + # railties \ + # -name '*.rb' \ + # -not -name 'version.rb' \ + # -not -wholename '*generators/*' \ + # -not -wholename '*test/*' \ + # -not -wholename '*examples/*' \ + # | xargs \ + # rdoc --format=darkfish --no-line-numbers --op=rdoc --visibility=public + + self.name = 'Ruby on Rails' + self.slug = 'rails' + self.version = '4.0.1' + self.dir = '/Users/Thibaut/DevDocs/Docs/RDoc/Rails' + + html_filters.replace 'rdoc/entries', 'rails/entries' + + options[:root_title] = 'Ruby on Rails' + + options[:skip] += %w( + AbstractController/Callbacks.html + AbstractController/UrlFor.html + ActionController.html + ActionController/Instrumentation.html + ActionController/ModelNaming.html + ActionController/Rendering.html + ActionController/Rescue.html + ActionController/UrlFor.html + ActionDispatch/DebugExceptions.htnl + ActionDispatch/Http/FilterParameters.html + ActionDispatch/Http/URL.html + ActionDispatch/Integration/Runner.html + ActionDispatch/Integration/Session.html + ActionDispatch/Reloader.html + ActionDispatch/RequestId.html + ActionDispatch/Routing/HtmlTableFormatter.html + ActionDispatch/Routing/Mapper.html + ActionDispatch/ShowExceptions.html + ActionView.html + ActionView/Context.html + ActionView/DependencyTracker/ERBTracker.html + ActionView/FileSystemResolver.html + ActionView/FixtureResolver.html + ActionView/LogSubscriber.html + ActionView/ModelNaming.html + ActionView/Template/Handlers/Erubis.html + ActiveModel.html + ActiveModel/Lint/Tests.html + ActiveRecord.html + ActiveRecord/DynamicMatchers/Finder.html + ActiveRecord/Sanitization.html + ActiveRecord/Tasks/DatabaseTasks.html + ActiveSupport.html + ActiveSupport/Configurable/Configuration.html + ActiveSupport/Dependencies/WatchStack.html + ActiveSupport/DescendantsTracker.html + ActiveSupport/FileUpdateChecker.html + ActiveSupport/Notifications/Fanout.html + ActiveSupport/Testing/ConstantLookup.html + ActiveSupport/Testing/Declarative.html + ActiveSupport/Testing/Isolation/Subprocess.html + Rails/API/Task.html + Rails/ConsoleMethods.html) + + options[:skip_patterns] = [ + /\AAbstractController\/ViewPaths/, + /\AActionController\/Caching(?!\/Fragments|\.)/, + /\AActionController\/HideActions/, + /\AActionController\/RequestForgeryProtection\/ProtectionMethods/, + /\AActionController\/Test/, + /\AActionDispatch\/RemoteIp/, + /\AActionDispatch\/Test/, + /\AActionMailer\/DeliveryMethods/, + /\AActionView\/LookupContext/, + /\AActionView\/Resolver/, + /\AActiveRecord\/ConnectionAdapters\/(?!DatabaseStatements|SchemaStatements|Table)/, + /\AActiveSupport\/JSON\//, + /\AActiveSupport\/Multibyte\/Unicode\//, + /\AActiveSupport\/XML/i, + /\ALogger/, + /\ASourceAnnotationExtractor/] + + options[:attribution] = <<-HTML + © 2004–2013 David Heinemeier Hansson
+ Licensed under the MIT License. + HTML + end +end diff --git a/public/icons/docs/rails/16.png b/public/icons/docs/rails/16.png new file mode 100644 index 0000000000000000000000000000000000000000..4280bc5a4abe84479557fa731f6b9232b07e3d10 GIT binary patch literal 802 zcmV+-1Ks?IP))pn?m9 ziVH#9D+o%}jkpjbiYP`D)1)Ta{MboilW8(@=ib*L6b8Wq&-Oe=PL_wJ?oRf+Q%L-{ zQ=xab7Y&N#kmorVfC7-EZNw{iX0-p==K5w6_hj|JH?>M~7^hT|m?$;&-dbb$#8Hks z`VfJ2YKQl6&$G{<*%gWfM`^Gh-)_^~Y9Vj#AF~h#lAx4aKt!P*t1{EPuB^(pM(kN>RhuFyr#Y&!~-!5|RX@tN7)E4{0o2 z!Fh)Z9(9i8?=NBP9z+Zkg!MdQ^@nK&#>X&jU`Ezz(LZvOtl8Rq_QCH;EX`Q^?J_<% z)XeC~jnv0fM@G8&A~^4fN=2$2i3<^WLz46t36%(q9NIDS$g5}QJ2s9+(SPz$WqW0r z&AE9rxXuFN0_B4>8ubREg0BqhrF!Tfjg=MtkHLuvTohBEnL$;^ouH+d?fMSa>)Yt+ z(h~1K^&F{lV1{)Eoz+H18JavnRO#KVaIxq5?`!P*w95Lz1|AVp?}#d8+O3udT||UE zx8KI}>*uYxwn4U;LYjjJ8M!r^?Z4#Q&3Bj!j=Y_rSw_K>Tntp`DaSY!@)nRALRY`u gXwH9o?dlW%0%V;WR%M~7eE6d_a`Ms0qBmH@;wK z0(_9DkRXj(hzer05Cz35NNIs!OKm%CDebg{cIM2?nRD5fwLC13Z9=Jj<4OL>J~?ae z=lMVD`LDeN;HI9r%_BB$SQ`yitm!FQYciW_U#qUrs-m{K zCudz`ZO_t$_7nHqZ_l{$s`h`WjZQ0BT@G!QVdJ=EZ6G!awM~uKRIE*$%k<^tfeo|z zyW0ygW3eg)(MqHo1_DaNXh|nync80!mng|k8)-t(dgcA}AEl zVMw!DW!9%wao+!aoAR950A3s-fCC4j6j>6JOpXyxj-$gOQFn!f*R7#z&H`Ti{`YY2 zj{ATr01G6}QZkxQ`R@Hg(psI~k1XMwuYVO!K6;F47oE?gKYYNGdty8x0*EMo9Zys_ z`o6FZrs@J{?F|C)ngRO-7H=6C6c5GT4CsrYbA6A8rvavE<;5j=iT*9 zdY3Fhmx{dhqldZpfqOBz94^ZctpV_Y1(JG$-`{Zu>Er~Lt-TM(sO~W+=|icA>h2v3 zKm7z*P$8&v1635@gI5VOntun+;h`O`ti7L+7yrio7hYiXgKNokcl*ve)g_o9WOVyB-r4dRTOL}+ z$ZH!QcpF^^h|2xs%SD1vV>=m> zU<)RUIQRD30Ko&{I2<0^f4-i$I?gj+zLg#8pCGDKu&KjkLXZm>{l^H+amaUfAwh;J zX~KaLN+}dTEzM8>2sTdq!)%g})N9PS;?oQ)U4rd&3!Dg^RwT_Pdw#uvuv8>#HpuD? zls3?r3Z(3kPF8Keu=~=h{Q!KFf`ZeGj z!u#MYgTq_4GXL7E>0i1Omu9Fi@Xjg0!y%Yl#F4GT*u)SP^XO2MOvWcd*s_+%B*6rl zGr#yb=3R9KAHC&fhE^=6@5}{s&V>&a@bYGc&iV)!-SdCgG(~HLQsUPuQHXN{fnn;< z7{_)TrZ_Nw%PeUlMU0~3m18tcC`A!({ca! z>7Lb#O}zuq5r73uy@^f|CXP;!KW#dt>C@p<&5HmK6pOURsyun^b?jXKIJrt0Iwzd( zUW^Z#7>%<+`HX(wY|=_lp@I_`fCV34LEnP8*u)YH%;>xkJApbGev|-u+V{9LVRYLz zPwE4!6>_{ZpfUM~{OJ{%lQD5U#s{!71$6gRxccD-(P6;mhaSON2jJ5yic`P=w7Z() z#fIJ8*f@qP!-?|uA|Ot%X-00SD_(TSd?A*=s-@2PufA9#0 z{`xXKolh-<|0g_q1@MLrn4s$;J zKkQilGscE@p@YEBcv_FK^%NId@L?A36gX1rT%2UCq?8u`IGd4Tln^(X)W^mY2m-#` z`^1PALwlEsC8V=|~C^<#i;j%cKI7}2!DCa1)OKU}3YvEFji=FRQspC>lax%7-o$riN vtH+y~H7yab)VB<})WtT*LGO00000NkvXXu0mjff<#vq literal 0 HcmV?d00001 diff --git a/public/icons/docs/rails/SOURCE b/public/icons/docs/rails/SOURCE new file mode 100644 index 00000000..d1822cdc --- /dev/null +++ b/public/icons/docs/rails/SOURCE @@ -0,0 +1 @@ +http://commons.wikimedia.org/wiki/File:Ruby_logo.svg