History

First initial release of TailwindCSS DevDoc

Damilola Olowookere committed 5 years ago

Commit 39aa5b11 parent 900cfc36 files · +162 −-2Browse files

Unified · Split

6 files
  1. assets/javascripts/templates/pages/about_tmpl.coffee +5 −0
  2. lib/docs/filters/tailwindcss/clean_html.rb +77 −0
  3. lib/docs/filters/tailwindcss/entries.rb +51 −0
  4. lib/docs/scrapers/tailwindcss.rb +31 −0
  5. public/icons/docs/tailwindcss/16.png +0 −0
  6. public/icons/docs/tailwindcss/16@2x.png +0 −0
assets/javascripts/templates/pages/about_tmpl.coffee+5−0
@@ -842,6 +842,11 @@ credits = [ · 841 unmodified lines
842 '2004-2017 Fabien Potencier',842 '2004-2017 Fabien Potencier',
843 'MIT',843 'MIT',
844 'https://symfony.com/doc/current/contributing/code/license.html'844 'https://symfony.com/doc/current/contributing/code/license.html'
845 ], [
846 'TailwindCSS',
847 'Adam Wathan',
848 'MIT',
849 'https://raw.githubusercontent.com/tailwindlabs/tailwindcss/master/LICENSE'
845 ], [850 ], [
846 'Tcl/Tk',851 'Tcl/Tk',
847 'The Regents of the University of California, Sun Microsystems, Inc., Scriptics Corporation, and other parties',852 'The Regents of the University of California, Sun Microsystems, Inc., Scriptics Corporation, and other parties',
lib/docs/filters/tailwindcss/clean_html.rb+77−0
@@ -0,0 +1,77 @@
1module Docs
2 class Tailwindcss
3 class CleanHtmlFilter < Filter
4 def call
5 clean_up
6
7 # Remove code highlighting
8 css('pre').each do |node|
9 node.content = node.content
10 node['data-language'] = 'php'
11 end
12
13 doc
14 end
15
16 def clean_up
17 @doc = doc.at_css('#content-wrapper')
18
19 css('.location').remove
20
21 # Replace .header with <h1>
22 css('.page-header > h1').each do |node|
23 node.content = 'Tailwind' if root_page?
24 node.parent.before(node).remove
25 end
26
27 css('.container-fluid').each do |node|
28 node.name = 'table'
29 node.css('.row').each { |n| n.name = 'tr' }
30 node.css('div[class^="col"]').each { |n| n.name = 'td' }
31 end
32
33 css('> div').each do |node|
34 node.before(node.children).remove
35 end
36
37 # Remove <abbr>
38 css('a > abbr').each do |node|
39 node.parent['title'] = node['title']
40 node.before(node.children).remove
41 end
42
43 # Clean up headings
44 css('h1 > a', '.content', 'h3 > code', 'h3 strong', 'abbr').each do |node|
45 node.before(node.children).remove
46 end
47
48 # Remove empty <td>
49 css('td').each do |node|
50 node.remove if node.content =~ /\A\s+\z/
51 end
52
53 # @doc = at_css('.docs_body')
54
55 # Clean up headings
56 css('h2 > a').each do |node|
57 node.before(node.children).remove
58 end
59
60 css('p > a[name]').each do |node|
61 node.parent.next_element['id'] = node['name']
62 end
63
64 css('blockquote').each do |node|
65 node['class'] = 'tip' if node.inner_html.include?('{tip}')
66 node.inner_html = node.inner_html.remove(/\{(tip|note)\}\s?/)
67 end
68
69 css('blockquote').each do |node|
70 if node.inner_html.include?('You\'re browsing the documentation for an old version of Laravel.')
71 node.remove
72 end
73 end
74 end
75 end
76 end
77end
lib/docs/filters/tailwindcss/entries.rb+51−0
@@ -0,0 +1,51 @@
1module Docs
2 class Tailwindcss
3 class EntriesFilter < Docs::EntriesFilter
4 # def get_name
5 # if api_page?
6 # name = at_css('h1').content.strip.remove('Illuminate\\')
7 # name << " (#{type})" unless name.start_with?(self.type)
8 # name
9 # else
10 # at_css('h1').content
11 # end
12 # end
13
14 def get_type
15 # /customizing-colors rediects to /colors, hence making css
16 # selector below not to match the href
17 if result[:path] == 'customizing-colors'
18 selector = "#sidebar a[href='#{result[:path]}']"
19 else
20 selector = "#sidebar a[href='#{result[:path]}']"
21 end
22
23 check = at_css(selector).parent.parent.parent.css('h5').inner_text
24 check
25 end
26
27 # def additional_entries
28 # return [] if root_page? || !api_page?
29 # base_name = self.name.remove(/\(.+\)/).strip
30
31 # css('h3[id^="method_"]').each_with_object [] do |node, entries|
32 # next if node.at_css('.location').content.start_with?('in')
33
34 # name = node['id'].remove('method_')
35 # name.prepend "#{base_name}::"
36 # name << '()'
37
38 # entries << [name, node['id']]
39 # end
40 # end
41
42 # def api_page?
43 # subpath.start_with?('/api')
44 # end
45
46 # def include_default_entry?
47 # true
48 # end
49 end
50 end
51end
lib/docs/scrapers/tailwindcss.rb+31−0
@@ -0,0 +1,31 @@
1module Docs
2 class Tailwindcss < UrlScraper
3 self.name = 'Tailwind CSS'
4 self.type = 'tailwindcss'
5 self.slug = 'tailwindcss'
6 self.base_url = 'https://tailwindcss.com/docs'
7 self.root_path = '/installation'
8 self.release = '8.5'
9
10 html_filters.push 'tailwindcss/entries', 'tailwindcss/clean_html'
11
12 # options[:container] = 'body';
13
14 options[:skip_patterns] = [
15 %r{\/guides\/.*},
16 %r{\/colors\z}
17 ]
18
19 #Obtainable from https://github.com/tailwindlabs/tailwindcss/blob/master/LICENSE
20 options[:attribution] = <<-HTML
21 MIT License<br>
22 Copyright (c) Adam Wathan <adam.wathan@gmail.com><br>
23 Copyright (c) Jonathan Reinink <jonathan@reinink.ca><br>
24 HTML
25
26 def get_latest_version(opts)
27 doc = fetch_doc('https://tailwindcss.com/docs/installation', opts)
28 doc.at_css('select option[value=v2]').inner_text
29 end
30 end
31end
public/icons/docs/tailwindcss/16.png+0−0

Binary file not shown.

public/icons/docs/tailwindcss/16@2x.png+0−0

Binary file not shown.