mirror of https://github.com/freeCodeCamp/devdocs
parent
ac4131b791
commit
6510b06a36
@ -0,0 +1,77 @@
|
||||
._sanctuary {
|
||||
@extend %simple;
|
||||
|
||||
--base-font-size: 14px;
|
||||
|
||||
--h2-padding-top: 0.5em;
|
||||
--h2-line-height: 1.25rem;
|
||||
--h2-padding-bottom: 0.5em;
|
||||
--h2-border-bottom-width: 1px;
|
||||
--h2-margin-bottom: 1em;
|
||||
|
||||
--h3-padding-top: 1px;
|
||||
--h3-line-height: 1.375rem;
|
||||
--h3-padding-bottom: 2px;
|
||||
--h3-border-bottom-width: 1px;
|
||||
--h3-margin-bottom: 1em;
|
||||
|
||||
--h4-padding-top: 0px;
|
||||
--h4-line-height: calc(1.3 * var(--base-font-size));
|
||||
--h4-padding-bottom: 0px;
|
||||
--h4-margin-bottom: 1em;
|
||||
|
||||
padding-left: 32px;
|
||||
|
||||
.pilcrow {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 24px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
font-weight: var(--bolderFontWeight);
|
||||
color: #eee;
|
||||
}
|
||||
|
||||
.pilcrow:hover {
|
||||
color: var(--linkColor);
|
||||
}
|
||||
|
||||
.pilcrow.h2 {
|
||||
margin-left: -40px;
|
||||
margin-top: calc(0px - (var(--h2-padding-top) +
|
||||
var(--h2-line-height) +
|
||||
var(--h2-padding-bottom) +
|
||||
var(--h2-border-bottom-width) +
|
||||
var(--h2-margin-bottom)));
|
||||
padding: var(--h2-padding-top) 0 var(--h2-padding-bottom);
|
||||
font-size: 1rem;
|
||||
line-height: var(--h2-line-height);
|
||||
}
|
||||
|
||||
.pilcrow.h3 {
|
||||
margin-left: -40px;
|
||||
margin-top: calc(0px - (var(--h3-padding-top) +
|
||||
var(--h3-line-height) +
|
||||
var(--h3-padding-bottom) +
|
||||
var(--h3-border-bottom-width) +
|
||||
var(--h3-margin-bottom)));
|
||||
padding: var(--h3-padding-top) 0 var(--h3-padding-bottom);
|
||||
font-size: inherit;
|
||||
line-height: var(--h3-line-height);
|
||||
}
|
||||
|
||||
.pilcrow.h4 {
|
||||
margin-left: -24px;
|
||||
margin-top: calc(0px - (var(--h4-padding-top) +
|
||||
var(--h4-line-height) +
|
||||
var(--h4-padding-bottom) +
|
||||
var(--h4-margin-bottom)));
|
||||
padding: var(--h4-padding-top) 0 var(--h4-padding-bottom);
|
||||
font-size: inherit;
|
||||
line-height: var(--h4-line-height);
|
||||
}
|
||||
|
||||
pre > code {
|
||||
font-size: inherit;
|
||||
}
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
def repeat(n, s)
|
||||
Array.new(n, s).join("")
|
||||
end
|
||||
|
||||
def _(n)
|
||||
repeat(n, " ")
|
||||
end
|
||||
|
||||
module Docs
|
||||
|
||||
class Sanctuary
|
||||
class CleanHtmlFilter < Filter
|
||||
def call
|
||||
# Remove header containing GitHub, Gitter, and Stack Overflow links.
|
||||
doc.at("#css-header").unlink()
|
||||
|
||||
# Remove redundant section links from table of contents.
|
||||
doc.at("a[href='#section:api']").next_element.unlink()
|
||||
|
||||
# Swap headings and accompanying pilcrows to aid positioning via CSS.
|
||||
doc.css(".pilcrow").each { |node| node.next_element.after(node) }
|
||||
|
||||
# Insert Fink link in place of logo.
|
||||
doc.at("[id='section:sponsors'] ~ ul > li > p").prepend_child(
|
||||
doc.document.create_element("a", "Fink", {"href" => "https://www.fink.no/"})
|
||||
)
|
||||
|
||||
# Convert code blocks to the correct structure for syntax highlighting.
|
||||
doc.css("code[class^='language-']").each { |node|
|
||||
node.parent.replace(
|
||||
doc.document.create_element(
|
||||
"pre",
|
||||
node.content,
|
||||
{"data-language" => node.attributes["class"].value.delete_prefix("language-")}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
# Convert interactive examples to straightforward code blocks.
|
||||
doc.css(".examples").each { |node|
|
||||
node.replace(
|
||||
doc.document.create_element(
|
||||
"pre",
|
||||
node
|
||||
.css("input")
|
||||
.map { |node| "> " + node.attributes["value"].value }
|
||||
.zip(node.css(".output").map { |node|
|
||||
if node.content.start_with?("! Invalid value")
|
||||
# XXX: Reinstate newlines and consecutive spaces.
|
||||
content = node.content.dup()
|
||||
content[ 15] = "\n\n"
|
||||
content[ 68] = "\n" + _("add :: FiniteNumber -> ".size)
|
||||
content[104] = "\n" + _("add :: FiniteNumber -> ".size + ("FiniteNumber".size - 1) / 2)
|
||||
content[134] = "\n\n"
|
||||
content[138] = _(2)
|
||||
content[155] = "\n\n"
|
||||
content[215] = "\n\n"
|
||||
content[337] = "\n"
|
||||
content
|
||||
else
|
||||
node.content
|
||||
end
|
||||
})
|
||||
.map { |pair| pair.join("\n") }
|
||||
.join("\n\n"),
|
||||
{"data-language" => "javascript"}
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
# Remove example that requires interactivity.
|
||||
pre = doc.at("[id='section:overview'] ~ pre")
|
||||
p = pre.previous_element
|
||||
if p.content == "Try changing words to [] in the REPL below. Hit return to re-evaluate."
|
||||
p.unlink()
|
||||
pre.unlink()
|
||||
else
|
||||
raise "Failed to find interactive example within overview section"
|
||||
end
|
||||
|
||||
doc
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,33 @@
|
||||
module Docs
|
||||
|
||||
class EntryIndex
|
||||
# Override to prevent sorting.
|
||||
def entries_as_json
|
||||
@entries.map(&:as_json)
|
||||
end
|
||||
# Override to prevent sorting.
|
||||
def types_as_json
|
||||
@types.values.map(&:as_json)
|
||||
end
|
||||
end
|
||||
|
||||
class Sanctuary
|
||||
class EntriesFilter < Docs::EntriesFilter
|
||||
def additional_entries
|
||||
entries = []
|
||||
type = ""
|
||||
css("h3, h4").each do |node|
|
||||
case node.name
|
||||
when "h3"
|
||||
type = node.text
|
||||
when "h4"
|
||||
name = id = node.attributes["id"].value
|
||||
entries << [name, id, type]
|
||||
end
|
||||
end
|
||||
return entries
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
end
|
@ -0,0 +1,25 @@
|
||||
module Docs
|
||||
|
||||
class Sanctuary < UrlScraper
|
||||
self.name = "Sanctuary"
|
||||
self.slug = "sanctuary"
|
||||
self.type = "sanctuary"
|
||||
self.release = "3.1.0"
|
||||
self.base_url = "https://sanctuary.js.org/"
|
||||
self.links = {
|
||||
home: "https://sanctuary.js.org/",
|
||||
code: "https://github.com/sanctuary-js/sanctuary",
|
||||
}
|
||||
|
||||
html_filters.push("sanctuary/entries")
|
||||
html_filters.push("sanctuary/clean_html")
|
||||
|
||||
options[:title] = "Sanctuary"
|
||||
options[:attribution] = "Licensed under the MIT License."
|
||||
|
||||
def get_latest_version(opts)
|
||||
get_npm_version("sanctuary", opts)
|
||||
end
|
||||
end
|
||||
|
||||
end
|
After Width: | Height: | Size: 564 B |
After Width: | Height: | Size: 1.2 KiB |
@ -0,0 +1 @@
|
||||
https://github.com/sanctuary-js/sanctuary-logo/tree/v1.1.0
|
Loading…
Reference in new issue