diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index d2dc1b24..0165ade2 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -711,6 +711,11 @@ credits = [ '2010-2018 Christian Johansen', 'BSD', 'https://raw.githubusercontent.com/sinonjs/sinon/master/LICENSE' + ], [ + 'Sequelize', + '2014—present Sequelize contributors', + 'MIT', + 'https://raw.githubusercontent.com/sequelize/sequelize/master/LICENSE' ], [ 'Socket.io', '2014-2015 Automattic', diff --git a/lib/docs/filters/sequelize/clean_html.rb b/lib/docs/filters/sequelize/clean_html.rb new file mode 100644 index 00000000..27c4d552 --- /dev/null +++ b/lib/docs/filters/sequelize/clean_html.rb @@ -0,0 +1,59 @@ +module Docs + class Sequelize + class CleanHtmlFilter < Filter + def call + @doc = at_css('.content') + + # Clean up the home page + if root_page? || subpath == "index.html" + # Remove logo + css('.manual-user-index > div > div.logo').remove + + # Convert title to proper h1 element + at_css('.manual-user-index > div > div.sequelize').name = 'h1' + + # Remove badges (NPM, Travis, test coverage, etc.) + css('.manual-user-index > p:nth-child(4)').remove + + # Remove image cards pointing to entries of the manual + css('.manual-cards').remove + + # Pull the header out of it's container + header = at_css('h1') + header.parent.parent.parent.add_previous_sibling header + else + # Pull the header out of it's container + header = at_css('h1') + header.parent.add_previous_sibling header + end + + # Remove header notice + css('.header-notice').remove + + # Change td in thead to th + css('table > thead > tr > td').each do |node| + node.name = 'th' + end + + # Add syntax highlighting to code blocks + css('pre > code[class^="lang-"]').each do |node| + pre = node.parent + # Convert the existing language definitions to Prism-compatible attributes + pre['data-language'] = 'javascript' if node['class'] == 'lang-js' || node['class'] == 'lang-javascript' + pre['data-language'] = 'json' if node['class'] == 'lang-json' + pre['data-language'] = 'shell' if node['class'] == 'lang-sh' || node['class'] == 'lang-bash' + pre['data-language'] = 'sql' if node['class'] == 'lang-sql' + pre['data-language'] = 'typescript' if node['class'] == 'lang-ts' + end + + # Add syntax highlighting to source files + css('pre.raw-source-code').each do |node| + node['data-language'] = 'javascript' + end + + # Return the cleaned-up document + doc + end + end + end +end diff --git a/lib/docs/filters/sequelize/entries.rb b/lib/docs/filters/sequelize/entries.rb new file mode 100644 index 00000000..6cf7ed0e --- /dev/null +++ b/lib/docs/filters/sequelize/entries.rb @@ -0,0 +1,33 @@ +module Docs + class Sequelize + class EntriesFilter < Docs::EntriesFilter + # Use the main title as the page name + def get_name + at_css('h1').text + end + + # Assign the pages to main categories + def get_type + if path.start_with?('manual/') + 'Manual' + elsif path.include?('lib/data-types') + 'datatypes' + elsif path.include?('lib/errors/validation') + 'errors/validation' + elsif path.include?('lib/errors/database') + 'errors/database' + elsif path.include?('lib/errors/connection') + 'errors/connection' + elsif path.include?('lib/errors') + 'errors' + elsif path.include?('lib/associations') + 'associations' + elsif path.include?('master/variable') + 'variables' + else + 'classes' + end + end + end + end +end diff --git a/lib/docs/scrapers/sequelize.rb b/lib/docs/scrapers/sequelize.rb new file mode 100644 index 00000000..9e49ca50 --- /dev/null +++ b/lib/docs/scrapers/sequelize.rb @@ -0,0 +1,30 @@ +module Docs + class Sequelize < UrlScraper + self.name = 'Sequelize' + self.slug = 'sequelize' + self.type = 'simple' + self.release = '5.21.1' + self.base_url = 'https://sequelize.org/master/' + self.links = { + home: 'https://sequelize.org/', + code: 'https://github.com/sequelize/sequelize' + } + + # List of content filters (to be applied sequentially) + html_filters.push 'sequelize/entries', 'sequelize/clean_html' + + # Skip the source files, the license page and the "Who's using Sequelize" page + options[:skip_patterns] = [/\.js\.html/, /manual\/legal\.html/, /manual\/whos-using\.html/] + + # License information that appears appears at the bottom of the entry page + options[:attribution] = <<-HTML + Copyright © 2014–present Sequelize contributors
+ Licensed under the MIT License. + HTML + + # Method to fetch the most recent version of the project + def get_latest_version(opts) + get_npm_version('sequelize', opts) + end + end +end diff --git a/public/icons/docs/sequelize/16.png b/public/icons/docs/sequelize/16.png new file mode 100644 index 00000000..c80f6561 Binary files /dev/null and b/public/icons/docs/sequelize/16.png differ diff --git a/public/icons/docs/sequelize/16@2x.png b/public/icons/docs/sequelize/16@2x.png new file mode 100644 index 00000000..78cb63a6 Binary files /dev/null and b/public/icons/docs/sequelize/16@2x.png differ diff --git a/public/icons/docs/sequelize/SOURCE b/public/icons/docs/sequelize/SOURCE new file mode 100644 index 00000000..03a2f866 --- /dev/null +++ b/public/icons/docs/sequelize/SOURCE @@ -0,0 +1 @@ +https://github.com/sequelize/sequelize/blob/master/docs/images/logo.png