|
|
@@ -0,0 +1,163 @@
|
|
|
+module Docs
|
|
|
+ class DateFns < FileScraper
|
|
|
+ self.name = 'date-fns'
|
|
|
+ self.slug = 'date_fns'
|
|
|
+ self.type = 'simple'
|
|
|
+ self.links = {
|
|
|
+ home: 'https://date-fns.org/',
|
|
|
+ code: 'https://github.com/date-fns/date-fns'
|
|
|
+ }
|
|
|
+ self.release = '2.29.2'
|
|
|
+ self.base_url = "https://date-fns.org/v#{self.release}/docs/"
|
|
|
+
|
|
|
+ # https://github.com/date-fns/date-fns/blob/main/LICENSE.md
|
|
|
+ options[:attribution] = <<-HTML
|
|
|
+ © 2021 Sasha Koss and Lesha Koss<br>
|
|
|
+ Licensed under the MIT License.
|
|
|
+ HTML
|
|
|
+
|
|
|
+ def build_pages
|
|
|
+ markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, autolink: true, fenced_code_blocks: true, tables: true)
|
|
|
+
|
|
|
+ md_files = %w(esm.md fp.md gettingStarted.md i18n.md i18nContributionGuide.md release.md timeZones.md unicodeTokens.md upgradeGuide.md webpack.md)
|
|
|
+ md_files.each do |md_file|
|
|
|
+ md_string = request_one("docs/#{md_file}").body
|
|
|
+ md_file = 'index.md' if md_file == 'gettingStarted.md'
|
|
|
+ name = md_string.match(/^#([^\n]+)/)[1]
|
|
|
+ path = md_file.sub '.md', ''
|
|
|
+ page = {
|
|
|
+ path: path,
|
|
|
+ store_path: "#{path}.html",
|
|
|
+ output: markdown.render(md_string),
|
|
|
+ entries: [Entry.new(name, path, 'General')]
|
|
|
+ }
|
|
|
+ yield page
|
|
|
+ end
|
|
|
+
|
|
|
+ docs = JSON.parse(request_one('tmp/docs.json').body)
|
|
|
+ docs.each do |type, features|
|
|
|
+ features.each do |feature|
|
|
|
+ name = feature['title']
|
|
|
+ feature_id = feature['urlId']
|
|
|
+ next if feature_id.start_with?('fp/')
|
|
|
+ next if feature['type'] != 'jsdoc'
|
|
|
+ # fix description table on https://date-fns.org/v2.29.2/docs/parse
|
|
|
+ feature['content']['description'].sub! "\n| Unit", "\n\n| Unit"
|
|
|
+ feature['content']['description'].sub! "\nNotes:\n", "\n\nNotes:\n"
|
|
|
+ page = {
|
|
|
+ path: name,
|
|
|
+ store_path: "#{feature_id}.html",
|
|
|
+ output: ERB.new(PAGE_ERB).result(binding),
|
|
|
+ entries: [Entry.new(name, feature_id, type)]
|
|
|
+ }
|
|
|
+ yield page
|
|
|
+ end
|
|
|
+ end
|
|
|
+ end
|
|
|
+
|
|
|
+ PAGE_ERB = <<-HTML.strip_heredoc
|
|
|
+ <h1><%= feature['title'] %></h1>
|
|
|
+ <p><%= feature['description'] %></p>
|
|
|
+
|
|
|
+ <h2>Description</h2>
|
|
|
+ <p><%= markdown.render feature['content']['description'] %></p>
|
|
|
+
|
|
|
+ <% if feature['usage'] %>
|
|
|
+ <h2>Usage</h2>
|
|
|
+ <% feature['usage'].each do |_, usage| %>
|
|
|
+ <pre data-language="javascript"><%= '// ' + usage['title'] + '\n' %><%= usage['code'] %></pre>
|
|
|
+ <% end %>
|
|
|
+ <% end %>
|
|
|
+
|
|
|
+ <% if feature['syntax'] %>
|
|
|
+ <h2>Syntax</h2>
|
|
|
+ <pre data-language="javascript"><%= feature['syntax'] %></pre>
|
|
|
+ <% end %>
|
|
|
+
|
|
|
+ <% if feature['content']['properties'] %>
|
|
|
+ <h2>Properties</h2>
|
|
|
+ <table>
|
|
|
+ <tr>
|
|
|
+ <th>Name</th>
|
|
|
+ <th>Type</th>
|
|
|
+ <th>Description</th>
|
|
|
+ </tr>
|
|
|
+ <% feature['content']['properties'].each do |param| %>
|
|
|
+ <tr>
|
|
|
+ <td><code><%= param['name'] %></code></td>
|
|
|
+ <td><code><%= param['type']['names'].join ' ' %></code></td>
|
|
|
+ <td><%= markdown.render param['description'] || '' %></td>
|
|
|
+ </tr>
|
|
|
+ <% end %>
|
|
|
+ </table>
|
|
|
+ <% end %>
|
|
|
+
|
|
|
+ <% if feature['content']['params'] %>
|
|
|
+ <h2>Arguments</h2>
|
|
|
+ <table>
|
|
|
+ <tr>
|
|
|
+ <th>Name</th>
|
|
|
+ <th>Description</th>
|
|
|
+ </tr>
|
|
|
+ <% feature['content']['params'].each do |param| %>
|
|
|
+ <tr>
|
|
|
+ <td><code><%= param['name'] %></code></td>
|
|
|
+ <td><%= markdown.render param['description'] || '' %></td>
|
|
|
+ </tr>
|
|
|
+ <% end %>
|
|
|
+ </table>
|
|
|
+ <% end %>
|
|
|
+
|
|
|
+ <% if feature['content']['returns'] %>
|
|
|
+ <h2>Returns</h2>
|
|
|
+ <table>
|
|
|
+ <tr>
|
|
|
+ <th>Description</th>
|
|
|
+ </tr>
|
|
|
+ <% feature['content']['returns'].each do |param| %>
|
|
|
+ <tr>
|
|
|
+ <td><%= markdown.render param['description'] || '' %></td>
|
|
|
+ </tr>
|
|
|
+ <% end %>
|
|
|
+ </table>
|
|
|
+ <% end %>
|
|
|
+
|
|
|
+ <% if feature['content']['exceptions'] %>
|
|
|
+ <h2>Exceptions</h2>
|
|
|
+ <table>
|
|
|
+ <tr>
|
|
|
+ <th>Type</th>
|
|
|
+ <th>Description</th>
|
|
|
+ </tr>
|
|
|
+ <% feature['content']['exceptions'].each do |param| %>
|
|
|
+ <tr>
|
|
|
+ <td><code><%= param['type']['names'].join ' ' %></code></td>
|
|
|
+ <td><%= markdown.render param['description'] || '' %></td>
|
|
|
+ </tr>
|
|
|
+ <% end %>
|
|
|
+ </table>
|
|
|
+ <% end %>
|
|
|
+
|
|
|
+ <% if feature['content']['examples'] %>
|
|
|
+ <h2>Examples</h2>
|
|
|
+ <% feature['content']['examples'].each do |example| %>
|
|
|
+ <pre data-language="javascript"><%= example %></pre>
|
|
|
+ <% end %>
|
|
|
+ <% end %>
|
|
|
+
|
|
|
+ <div class="_attribution">
|
|
|
+ <p class="_attribution-p">
|
|
|
+ <%= options[:attribution] %>
|
|
|
+ <br>
|
|
|
+ <a href="<%= self.base_url %><%= feature_id %>" class="_attribution-link">
|
|
|
+ <%= self.base_url %><%= feature_id %>
|
|
|
+ </a>
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
+ HTML
|
|
|
+
|
|
|
+ def get_latest_version(opts)
|
|
|
+ get_latest_github_release('date-fns', 'date-fns', opts)
|
|
|
+ end
|
|
|
+ end
|
|
|
+end
|