This commit is contained in:
Vitor Santos Costa 2017-09-06 02:15:22 +01:00
parent a64059612f
commit 3fd8ccb06b
55 changed files with 2512 additions and 0 deletions

173
H/globals.h Normal file
View File

@ -0,0 +1,173 @@
//
// File defining fields in the Yap_GLOBAL global structure
//
// these fields used to spread all over the place, because they must be used in
// 3 ways:
// - they must be defined somewhere
// - they have an #ifdef to get a shorter name
// - they must be initialised somewhere
// - they may be of interest to restore
//
// The defs include 3+ components:
// Type
// name in structured / global name
// init code (optional);
// restore code (optional);
//
// Stuff that must be shared by all threads or workers
// START_GLOBAL_DATA
// initialization: tell whether the system has been initialised and by whom.
GLOBAL_INIT(int, Initialised, FALSE);
GLOBAL_INIT(int, InitialisedFromPL, FALSE);
GLOBAL_INIT(int, PL_Argc, 0);
GLOBAL_INIT(char **, PL_Argv, NULL);
GLOBAL_INIT(bool, FAST_BOOT_FLAG, false);
// halt hooks
GLOBAL_INIT(struct halt_hook *, HaltHooks, NULL);
GLOBAL_INIT(fptr_t, JIT_finalizer, NULL);
// stack overflow expansion/gc control
GLOBAL_INIT(int, AllowLocalExpansion, TRUE);
GLOBAL_INIT(int, AllowGlobalExpansion, TRUE);
GLOBAL_INIT(int, AllowTrailExpansion, TRUE);
GLOBAL_INIT(UInt, SizeOfOverflow, 0);
// amount of space recovered in all garbage collections
GLOBAL_INIT(UInt, AGcThreshold, 10000);
GLOBAL_INIT(Agc_hook, AGCHook, NULL);
/* multi-thread support */
#if THREADS
/* number of threads and processes in system */
GLOBAL_INIT(UInt, NOfThreads, 1);
/* number of threads created since start */
GLOBAL_INIT(UInt, NOfThreadsCreated, 1);
/* total run time for dead threads */
GLOBAL_INIT(UInt, ThreadsTotalTime, 0L);
// Threads Array
GLOBAL_INITF(lockvar, ThreadHandlesLock, MkLock);
#endif
#if defined(YAPOR) || defined(THREADS);
// protect long critical regions
GLOBAL_INITF(lockvar, BGL, MkLock);
#endif
#if defined(YAPOR) || defined(TABLING);
GLOBAL(struct global_optyap_data, optyap_data);
#endif /* YAPOR || TABLING */
// whether Yap is responsible for signal handling
GLOBAL(int, PrologShouldHandleInterrupts);
/* This is the guy who actually started the system, and who has the correct
* registers */
#if defined(THREADS);
GLOBAL(pthread_t, master_thread);
GLOBAL_INIT(struct thread_mbox *, named_mboxes, NULL);
GLOBAL_INITF(lockvar, mboxq_lock, MkLock);
GLOBAL_INIT(UInt, mbox_count, 0);
GLOBAL(struct swi_mutex *, WithMutex);
#endif /* THREADS */
// streams
GLOBAL(struct stream_desc *, Stream);
#if defined(THREADS) || defined(YAPOR);
GLOBAL_INITF(lockvar, StreamDescLock, MkLock);
#endif
// access to yap initial arguments
GLOBAL(char **, argv);
GLOBAL(int, argc);
// extensions to Terms
#ifdef COROUTINING
/* array with the ops for your favourite extensions */
GLOBAL_ARRAY(ext_op, attas, attvars_ext + 1);
#endif
// agc.c
GLOBAL(int, agc_calls);
GLOBAL(YAP_ULONG_LONG, agc_collected);
/* total time spent in GC */
GLOBAL_INIT(Int, tot_agc_time, 0);
/* number of heap objects in all garbage collections */
GLOBAL_INIT(Int, tot_agc_recovered, 0);
// arrays.c
#if HAVE_MMAP
GLOBAL_INIT(struct MMAP_ARRAY_BLOCK *, mmap_arrays, NULL);
#endif
#ifdef DEBUG
// computils.c
GLOBAL_ARRAY(char, Option, 20);
GLOBAL(YP_FILE *, logfile);
// init.c
// int output_msg
// =FALSE
#endif
#if defined(COFF) || defined(A_OUT);
// loada_coff.c && load_aout.c
GLOBAL_ARRAY(char, Executable, YAP_FILENAME_MAX);
#endif
GLOBAL_INIT(int, OpaqueHandlersCount, 0);
GLOBAL_INIT(struct YAP_opaque_handler_struct *, OpaqueHandlers, NULL);
#if __simplescalar__
GLOBAL_ARRAY(char, pwd, YAP_FILENAME_MAX);
#endif
// udi.c
// struct udi_control_block RtreeCmd void
GLOBAL(const char *, RestoreFile);
// gprof.c
GLOBAL(Int, ProfCalls);
GLOBAL(Int, ProfGCs);
GLOBAL(Int, ProfHGrows);
GLOBAL(Int, ProfSGrows);
GLOBAL(Int, ProfMallocs);
GLOBAL(Int, ProfIndexing);
GLOBAL(Int, ProfOn);
GLOBAL(Int, ProfOns);
GLOBAL(struct RB_red_blk_node *, ProfilerRoot);
GLOBAL(struct RB_red_blk_node *, ProfilerNil);
GLOBAL_INIT(char *, DIRNAME, NULL);
#if LOW_PROF
GLOBAL_INIT(int, ProfilerOn, FALSE);
GLOBAL_INIT(FILE *, FProf, NULL);
GLOBAL_INIT(FILE *, FPreds, NULL);
#endif /* LOW_PROF */
// Mutexes
#if THREADS
GLOBAL_INIT(struct swi_mutex *, FreeMutexes, NULL);
GLOBAL_INIT(struct swi_mutex *, mutex_backbone, NULL);
GLOBAL_INITF(lockvar, MUT_ACCESS, MkLock);
#endif
GLOBAL_INIT(char *, Home, NULL);
/* ISO char conversion: I will make no comments */
GLOBAL_INIT(char *, CharConversionTable, NULL);
GLOBAL_INIT(char *, CharConversionTable2, NULL);
/* max priority */
GLOBAL_INIT(int, MaxPriority, 1200);
/// alias table access
GLOBAL_INIT(struct AliasDescS *, FileAliases, Yap_InitStandardAliases());
GLOBAL(int, NOfFileAliases);
GLOBAL(int, SzOfFileAliases);
GLOBAL_INIT(struct vfs *, VFS, Yap_InitAssetManager());
END_GLOBAL_DATA

View File

@ -0,0 +1,4 @@
$(function () {
$('a').tooltip();
});

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 180 612 612">
<g fill="#FFF" sodipodi:docname="twitter_bootstrap_logo.svg" inkscape:version="0.48.1 r9760" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
<path d="M510 186c25.5 0 49.6 10 67.8 28.2S606 256.5 606 282v408c0 25.5-10 49.6-28.2 67.8S535.5 786 510 786H102c-25.5 0-49.6-10-67.8-28.2S6 715.5 6 690V282c0-25.5 10-49.6 28.2-67.8S76.5 186 102 186h408m0-6H102C45.9 180 0 225.9 0 282v408c0 56.1 45.9 102 102 102h408c56.1 0 102-45.9 102-102V282c0-56.1-45.9-102-102-102z"/>
<path d="M166.3 313h173.5c32 0 57.7 7.3 77 22s29 36.8 29 66.5c0 18-4.4 33.4-13.2 46.2-8.8 12.8-21.4 22.8-37.8 29.8v1c22 4.7 38.7 15.1 50 31.2 11.3 16.2 17 36.4 17 60.8 0 14-2.5 27.1-7.5 39.2-5 12.2-12.8 22.7-23.5 31.5s-24.3 15.8-41 21-36.5 7.8-59.5 7.8h-164V313zm62.5 149.5h102c15 0 27.5-4.2 37.5-12.8s15-20.8 15-36.8c0-18-4.5-30.7-13.5-38s-22-11-39-11h-102v98.6zm0 156.5h110.5c19 0 33.8-4.9 44.2-14.8 10.5-9.8 15.8-23.8 15.8-41.8 0-17.7-5.2-31.2-15.8-40.8s-25.2-14.2-44.2-14.2H228.8V619z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 180 612 612">
<g fill="#FFF" sodipodi:docname="twitter_bootstrap_logo.svg" inkscape:version="0.48.1 r9760" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
<path d="M383.5 521.8c-10.5-9.5-25.2-14.2-44.2-14.2H228.8V619h110.5c19 0 33.8-4.9 44.2-14.8 10.5-9.8 15.8-23.8 15.8-41.8-.1-17.6-5.3-31.2-15.8-40.6zm-15.3-72c10-8.5 15-20.8 15-36.8 0-18-4.5-30.7-13.5-38s-22-11-39-11h-102v98.5h102c15 0 27.5-4.3 37.5-12.7z"/>
<path d="M510 180H102C45.9 180 0 225.9 0 282v408c0 56.1 45.9 102 102 102h408c56.1 0 102-45.9 102-102V282c0-56.1-45.9-102-102-102zm-55.8 429.8c-5 12.2-12.8 22.7-23.5 31.5s-24.3 15.8-41 21-36.5 7.8-59.5 7.8h-164V313h173.5c32 0 57.7 7.3 77 22s29 36.8 29 66.5c0 18-4.4 33.4-13.2 46.2-8.8 12.8-21.4 22.8-37.8 29.8v1c22 4.7 38.7 15.1 50 31.2 11.3 16.2 17 36.4 17 60.8 0 14-2.5 27.1-7.5 39.3z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 KiB

View File

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 612 612">
<g sodipodi:docname="twitter_bootstrap_logo.svg" inkscape:version="0.48.1 r9760" xmlns:svg="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape">
<path fill="#563D7C" d="M612 510c0 56.1-45.9 102-102 102H102C45.9 612 0 566.1 0 510V102C0 45.9 45.9 0 102 0h408c56.1 0 102 45.9 102 102v408z"/>
<path fill="#FFF" d="M166.3 133h173.5c32 0 57.7 7.3 77 22s29 36.8 29 66.5c0 18-4.4 33.4-13.2 46.2-8.8 12.8-21.4 22.8-37.8 29.8v1c22 4.7 38.7 15.1 50 31.2 11.3 16.2 17 36.4 17 60.8 0 14-2.5 27.1-7.5 39.2-5 12.2-12.8 22.7-23.5 31.5s-24.3 15.8-41 21-36.5 7.8-59.5 7.8h-164V133zm62.5 149.5h102c15 0 27.5-4.2 37.5-12.8s15-20.8 15-36.8c0-18-4.5-30.7-13.5-38s-22-11-39-11h-102v98.6zm0 156.5h110.5c19 0 33.8-4.9 44.2-14.8 10.5-9.8 15.8-23.8 15.8-41.8 0-17.7-5.2-31.2-15.8-40.8s-25.2-14.2-44.2-14.2H228.8V439z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

8
docs/custom/assets/css/docs.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 220 KiB

19
docs/custom/assets/js/docs.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,52 @@
// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
// IT'S JUST JUNK FOR OUR DOCS!
// ++++++++++++++++++++++++++++++++++++++++++
/*!
* Copyright 2014-2015 The Bootstrap Authors
* Copyright 2014-2015 Twitter, Inc.
*
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see https://creativecommons.org/licenses/by/3.0/.
*/
// Intended to prevent false-positive bug reports about Bootstrap not working properly in old versions of IE due to folks testing using IE's unreliable emulation modes.
(function () {
'use strict'
function emulatedIEMajorVersion() {
var groups = /MSIE ([0-9.]+)/.exec(window.navigator.userAgent)
if (groups === null) {
return null
}
var ieVersionNum = parseInt(groups[1], 10)
var ieMajorVersion = Math.floor(ieVersionNum)
return ieMajorVersion
}
function actualNonEmulatedIEMajorVersion() {
// Detects the actual version of IE in use, even if it's in an older-IE emulation mode.
// IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx
// @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx
var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // eslint-disable-line no-new-func
if (jscriptVersion === undefined) {
return 11 // IE11+ not in emulation mode
}
if (jscriptVersion < 9) {
return 8 // IE8 (or lower; haven't tested on IE<8)
}
return jscriptVersion // IE9 or IE10 in any mode, or IE11 in non-IE11 mode
}
var ua = window.navigator.userAgent
if (ua.indexOf('Opera') > -1 || ua.indexOf('Presto') > -1) {
return // Opera, which might pretend to be IE
}
var emulated = emulatedIEMajorVersion()
if (emulated === null) {
return // Not IE
}
var nonEmulated = actualNonEmulatedIEMajorVersion()
if (emulated !== nonEmulated) {
window.alert('WARNING: You appear to be using IE' + nonEmulated + ' in IE' + emulated + ' emulation mode.\nIE emulation modes can behave significantly differently from ACTUAL older versions of IE.\nPLEASE DON\'T FILE BOOTSTRAP BUGS based on testing in IE emulation modes!')
}
}())

View File

@ -0,0 +1,24 @@
/*!
* IE10 viewport hack for Surface/desktop Windows 8 bug
* Copyright 2014-2017 The Bootstrap Authors
* Copyright 2014-2017 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
// See the Getting Started docs for more information:
// https://getbootstrap.com/getting-started/#support-ie10-width
(function () {
'use strict'
if (navigator.userAgent.match(/IEMobile\/10\.0/)) {
var msViewportStyle = document.createElement('style')
msViewportStyle.appendChild(
document.createTextNode(
'@-ms-viewport{width:auto!important}'
)
)
document.head.appendChild(msViewportStyle)
}
}())

View File

@ -0,0 +1,105 @@
// NOTICE!! DO NOT USE ANY OF THIS JAVASCRIPT
// IT'S ALL JUST JUNK FOR OUR DOCS!
// ++++++++++++++++++++++++++++++++++++++++++
/*!
* JavaScript for Bootstrap's docs (https://getbootstrap.com)
* Copyright 2011-2017 The Bootstrap Authors
* Copyright 2011-2017 Twitter, Inc.
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see https://creativecommons.org/licenses/by/3.0/.
*/
/* global Clipboard, anchors */
(function ($) {
'use strict'
$(function () {
// Tooltip and popover demos
$('.tooltip-demo').tooltip({
selector: '[data-toggle="tooltip"]',
container: 'body'
})
$('[data-toggle="popover"]').popover()
// Demos within modals
$('.tooltip-test').tooltip()
$('.popover-test').popover()
// Indeterminate checkbox example
$('.bd-example-indeterminate [type="checkbox"]').prop('indeterminate', true)
// Disable empty links in docs examples
$('.bd-content [href="#"]').click(function (e) {
e.preventDefault()
})
// Modal relatedTarget demo
$('#exampleModal').on('show.bs.modal', function (event) {
var $button = $(event.relatedTarget) // Button that triggered the modal
var recipient = $button.data('whatever') // Extract info from data-* attributes
// If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
// Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
var $modal = $(this)
$modal.find('.modal-title').text('New message to ' + recipient)
$modal.find('.modal-body input').val(recipient)
})
// Activate animated progress bar
$('.bd-toggle-animated-progress').on('click', function () {
$(this).siblings('.progress').find('.progress-bar-striped').toggleClass('progress-bar-animated')
})
// Insert copy to clipboard button before .highlight
$('.highlight').each(function () {
var btnHtml = '<div class="bd-clipboard"><button class="btn-clipboard" title="Copy to clipboard">Copy</button></div>'
$(this).before(btnHtml)
$('.btn-clipboard')
.tooltip()
.on('mouseleave', function () {
// explicitly hide tooltip, since after clicking it remains
// focused (as it's a button), so tooltip would otherwise
// remain visible until focus is moved away
$(this).tooltip('hide')
})
})
var clipboard = new Clipboard('.btn-clipboard', {
target: function (trigger) {
return trigger.parentNode.nextElementSibling
}
})
clipboard.on('success', function (e) {
$(e.trigger)
.attr('title', 'Copied!')
.tooltip('_fixTitle')
.tooltip('show')
.attr('title', 'Copy to clipboard')
.tooltip('_fixTitle')
e.clearSelection()
})
clipboard.on('error', function (e) {
var modifierKey = /Mac/i.test(navigator.userAgent) ? '\u2318' : 'Ctrl-'
var fallbackMsg = 'Press ' + modifierKey + 'C to copy'
$(e.trigger)
.attr('title', fallbackMsg)
.tooltip('_fixTitle')
.tooltip('show')
.attr('title', 'Copy to clipboard')
.tooltip('_fixTitle')
})
anchors.options = {
icon: '#'
}
anchors.add('.bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5')
$('.bd-content > h2, .bd-content > h3, .bd-content > h4, .bd-content > h5').wrapInner('<div></div>')
})
}(jQuery))

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,38 @@
// scss-lint:disable ImportantRule, IdSelector
//
// Carbon ads
//
#carbonads {
position: static;
display: block;
max-width: 400px;
padding: 15px 15px 15px 160px;
margin: 2rem 0;
overflow: hidden;
font-size: 13px;
line-height: 1.4;
text-align: left;
background-color: rgba(0,0,0,.05);
a {
color: #333;
text-decoration: none;
}
@include media-breakpoint-up(sm) {
max-width: 330px;
border-radius: 4px;
}
}
.carbon-img {
float: left;
margin-left: -145px;
}
.carbon-poweredby {
display: block;
color: #777 !important;
}

View File

@ -0,0 +1,139 @@
// Docsearch overrides
//
// `!important` indicates overridden properties.
.algolia-autocomplete {
display: block !important;
flex: 1;
// Menu container
.ds-dropdown-menu {
width: 100%;
min-width: 0 !important;
max-width: none !important;
padding: .75rem 0 !important;
background-color: #fff;
background-clip: padding-box;
border: 1px solid rgba(0,0,0,.1);
box-shadow: 0 .5rem 1rem rgba(0,0,0,.175);
@include media-breakpoint-up(md) {
width: 175%;
}
// Caret
&::before {
display: none !important;
}
[class^=ds-dataset-] {
padding: 0 !important;
overflow: visible !important;
background-color: transparent !important;
border: 0 !important;
}
.ds-suggestions {
margin-top: 0 !important;
}
}
.algolia-docsearch-suggestion {
padding: 0 !important;
overflow: visible !important;
}
.algolia-docsearch-suggestion--category-header {
padding: .125rem 1rem !important;
margin-top: 0 !important;
font-size: .875rem !important;
font-weight: 500 !important;
color: $bd-purple-bright !important;
border-bottom: 0 !important;
}
.algolia-docsearch-suggestion--wrapper {
float: none !important;
padding-top: 0 !important;
}
// Section header
.algolia-docsearch-suggestion--subcategory-column {
float: none !important;
width: auto !important;
padding: 0 !important;
text-align: left !important;
}
.algolia-docsearch-suggestion--content {
float: none !important;
width: auto !important;
padding: 0 !important;
// Vertical divider between column header and content
&::before {
display: none !important;
}
}
.ds-suggestion {
&:not(:first-child) {
.algolia-docsearch-suggestion--category-header {
padding-top: .75rem !important;
margin-top: .75rem !important;
border-top: 1px solid rgba(0,0,0,.1);
}
}
.algolia-docsearch-suggestion--subcategory-column {
display: none !important;
}
}
.algolia-docsearch-suggestion--title {
display: block;
padding: .25rem 1rem !important;
margin-bottom: 0 !important;
font-size: .875rem !important;
font-weight: 400 !important;
}
.algolia-docsearch-suggestion--text {
padding: 0 1rem .5rem !important;
margin-top: -.25rem;
font-size: .875rem !important;
font-weight: normal;
line-height: 1.25 !important;
}
.algolia-docsearch-footer {
float: none !important;
width: auto !important;
height: auto !important;
padding: .75rem 1rem 0;
font-size: .75rem !important;
line-height: 1 !important;
color: #767676 !important;
border-top: 1px solid rgba(0,0,0,.1);
}
.algolia-docsearch-footer--logo {
display: inline !important;
overflow: visible !important;
color: inherit !important;
text-indent: 0 !important;
background: none !important;
}
.algolia-docsearch-suggestion--highlight {
color: #5f2dab;
background-color: rgba(154, 132, 187, .12);
}
.algolia-docsearch-suggestion--text .algolia-docsearch-suggestion--highlight {
box-shadow: inset 0 -2px 0 0 rgba(95,45,171,.5) !important;
}
.ds-suggestion.ds-cursor .algolia-docsearch-suggestion--content {
background-color: rgba(208,189,236,.15) !important;
}
}

View File

@ -0,0 +1,12 @@
// scss-lint:disable ImportantRule
.anchorjs-link {
font-weight: normal;
color: rgba($link-color, .5);
transition: color .16s linear;
&:hover {
color: $link-color;
text-decoration: none;
}
}

View File

@ -0,0 +1,108 @@
//
// Brand guidelines
//
// Logo series wrapper
.bd-brand-logos {
display: table;
width: 100%;
margin-bottom: 1rem;
overflow: hidden;
color: #563d7c;
background-color: #f9f9f9;
border-radius: .25rem;
}
// Individual items
.bd-brand-item {
padding: 4rem 0;
text-align: center;
}
.bd-brand-item + .bd-brand-item {
border-top: 1px solid #fff;
}
.bd-brand-logos .inverse {
color: #fff;
background-color: #563d7c;
}
// Heading content within
.bd-brand-item h1,
.bd-brand-item h3 {
margin-top: 0;
margin-bottom: 0;
}
.bd-brand-item .bd-booticon {
margin-right: auto;
margin-left: auto;
}
// Make the icons stand out on what is/isn't okay
// .bd-brand-item .glyphicon {
// width: 30px;
// height: 30px;
// margin: 10px auto -10px;
// line-height: 30px;
// color: #fff;
// border-radius: 50%;
// }
// .bd-brand-item .glyphicon-ok {
// background-color: #5cb85c;
// }
// .bd-brand-item .glyphicon-remove {
// background-color: #d9534f;
// }
@media (min-width: 768px) {
.bd-brand-item {
display: table-cell;
width: 1%;
}
.bd-brand-item + .bd-brand-item {
border-top: 0;
border-left: 1px solid #fff;
}
.bd-brand-item h1 {
font-size: 4rem;
}
}
//
// Color swatches
//
.color-swatches {
margin: 0 -5px;
overflow: hidden; // clearfix
}
.color-swatch {
float: left;
width: 4rem;
height: 4rem;
margin-right: .25rem;
margin-left: .25rem;
border-radius: .25rem;
@media (min-width: 768px) {
width: 6rem;
height: 6rem;
}
}
// Docs colors
.color-swatches {
.bd-purple {
background-color: $bd-purple;
}
.bd-purple-light {
background-color: $bd-purple-light;
}
.bd-purple-lighter {
background-color: #e5e1ea;
}
.bd-gray {
background-color: #f9f9f9;
}
}

View File

@ -0,0 +1,12 @@
// Wall of Browser Bugs
//
// Better display for the responsive table on the Wall of Browser Bugs.
.bd-browser-bugs {
td p {
margin-bottom: 0;
}
th:first-child {
width: 18%;
}
}

View File

@ -0,0 +1,29 @@
// Buttons
//
// Custom buttons for the docs.
.btn-bd-purple {
font-weight: 500;
color: $bd-purple-bright;
border-color: $bd-purple-bright;
&:hover,
&:active {
color: #fff;
background-color: $bd-purple-bright;
border-color: $bd-purple-bright;
}
}
.btn-bd-yellow {
font-weight: 500;
color: $bd-yellow;
border-color: $bd-yellow;
&:hover,
&:active {
color: $bd-graphite;
background-color: $bd-yellow;
border-color: $bd-yellow;
}
}

View File

@ -0,0 +1,40 @@
//
// Callouts
//
.bd-callout {
padding: 1.25rem;
margin-top: 1.25rem;
margin-bottom: 1.25rem;
border: 1px solid #eee;
border-left-width: .25rem;
border-radius: .25rem;
}
.bd-callout h4 {
margin-top: 0;
margin-bottom: .25rem;
}
.bd-callout p:last-child {
margin-bottom: 0;
}
.bd-callout code {
border-radius: .25rem;
}
.bd-callout + .bd-callout {
margin-top: -.25rem;
}
// Variations
@mixin bs-callout-variant($color) {
border-left-color: $color;
h4 { color: $color; }
}
.bd-callout-info { @include bs-callout-variant($bd-info); }
.bd-callout-warning { @include bs-callout-variant($bd-warning); }
.bd-callout-danger { @include bs-callout-variant($bd-danger); }

View File

@ -0,0 +1,39 @@
// clipboard.js
//
// JS-based `Copy` buttons for code snippets.
.bd-clipboard {
position: relative;
display: none;
float: right;
+ .highlight {
margin-top: 0;
}
}
.btn-clipboard {
position: absolute;
top: .5rem;
right: .5rem;
z-index: 10;
display: block;
padding: .25rem .5rem;
font-size: 75%;
color: #818a91;
cursor: pointer;
background-color: transparent;
border: 0;
border-radius: .25rem;
&:hover {
color: #fff;
background-color: #027de7;
}
}
@media (min-width: 768px) {
.bd-clipboard {
display: block;
}
}

View File

@ -0,0 +1,24 @@
//
// Docs color palette classes
//
@each $color, $value in $colors {
.swatch-#{$color} {
background-color: #{$value};
@include color-yiq($value);
}
}
@each $color, $value in $theme-colors {
.swatch-#{$color} {
background-color: #{$value};
@include color-yiq($value);
}
}
@each $color, $value in $grays {
.swatch-#{$color} {
background-color: #{$value};
@include color-yiq($value);
}
}

View File

@ -0,0 +1,415 @@
// scss-lint:disable QualifyingElement
//
// Grid examples
//
.bd-example-row {
.row + .row {
margin-top: 1rem;
}
.row {
> .col,
> [class^="col-"] {
padding-top: .75rem;
padding-bottom: .75rem;
background-color: rgba(86,61,124,.15);
border: 1px solid rgba(86,61,124,.2);
}
}
.flex-items-top,
.flex-items-middle,
.flex-items-bottom {
min-height: 6rem;
background-color: rgba(255,0,0,.1);
}
}
.bd-example-row-flex-cols .row {
min-height: 10rem;
background-color: rgba(255,0,0,.1);
}
.bd-highlight {
background-color: rgba($bd-purple, .15);
border: 1px solid rgba($bd-purple, .15);
}
// Grid mixins
.example-container {
width: 800px;
@include make-container();
}
.example-row {
@include make-row();
}
.example-content-main {
@include make-col-ready();
@include media-breakpoint-up(sm) {
@include make-col(6);
}
@include media-breakpoint-up(lg) {
@include make-col(8);
}
}
.example-content-secondary {
@include make-col-ready();
@include media-breakpoint-up(sm) {
@include make-col(6);
}
@include media-breakpoint-up(lg) {
@include make-col(4);
}
}
//
// Container illustrations
//
.bd-example-container {
min-width: 16rem;
max-width: 25rem;
margin-right: auto;
margin-left: auto;
}
.bd-example-container-header {
height: 3rem;
margin-bottom: .5rem;
background-color: lighten($blue, 50%);
border-radius: .25rem;
}
.bd-example-container-sidebar {
float: right;
width: 4rem;
height: 8rem;
background-color: lighten($blue, 25%);
border-radius: .25rem;
}
.bd-example-container-body {
height: 8rem;
margin-right: 4.5rem;
background-color: lighten($bd-purple, 25%);
border-radius: .25rem;
}
.bd-example-container-fluid {
max-width: none;
}
//
// Docs examples
//
.bd-example {
position: relative;
padding: 1rem;
margin: 1rem (-$grid-gutter-width / 2);
border: solid #f7f7f9;
border-width: .2rem 0 0;
@include clearfix();
@include media-breakpoint-up(sm) {
padding: 1.5rem;
margin-right: 0;
margin-bottom: 0;
margin-left: 0;
border-width: .2rem;
}
+ .highlight,
+ .clipboard + .highlight {
margin-top: 0;
}
+ p {
margin-top: 2rem;
}
.pos-f-t {
position: relative;
margin: -1rem;
@include media-breakpoint-up(sm) {
margin: -1.5rem;
}
}
> .form-control {
+ .form-control {
margin-top: .5rem;
}
}
> .nav + .nav,
> .alert + .alert,
> .navbar + .navbar,
> .progress + .progress,
> .progress + .btn {
margin-top: 1rem;
}
> .dropdown-menu:first-child {
position: static;
display: block;
}
> .form-group:last-child {
margin-bottom: 0;
}
}
.bd-example > .close {
float: none;
}
// Typography
.bd-example-type .table .type-info {
color: #999;
vertical-align: middle;
}
.bd-example-type .table td {
padding: 1rem 0;
border-color: #eee;
}
.bd-example-type .table tr:first-child td {
border-top: 0;
}
.bd-example-type h1,
.bd-example-type h2,
.bd-example-type h3,
.bd-example-type h4,
.bd-example-type h5,
.bd-example-type h6 {
margin: 0;
}
// Contextual background colors
.bd-example-bg-classes p {
padding: 1rem;
}
// Images
.bd-example > img {
+ img {
margin-left: .5rem;
}
}
// Buttons
.bd-example > .btn-group {
margin-top: .25rem;
margin-bottom: .25rem;
}
.bd-example > .btn-toolbar + .btn-toolbar {
margin-top: .5rem;
}
// Forms
.bd-example-control-sizing select,
.bd-example-control-sizing input[type="text"] + input[type="text"] {
margin-top: .5rem;
}
.bd-example-form .input-group {
margin-bottom: .5rem;
}
.bd-example > textarea.form-control {
resize: vertical;
}
// List groups
.bd-example > .list-group {
max-width: 400px;
}
// Navbars
.bd-example {
.fixed-top,
.sticky-top {
position: static;
margin: -1rem -1rem 1rem;
}
.fixed-bottom {
position: static;
margin: 1rem -1rem -1rem;
}
@include media-breakpoint-up(sm) {
.fixed-top,
.sticky-top {
margin: -1.5rem -1.5rem 1rem;
}
.fixed-bottom {
margin: 1rem -1.5rem -1.5rem;
}
}
}
// Pagination
.bd-example .pagination {
margin-top: .5rem;
margin-bottom: .5rem;
}
// Example modals
.bd-example-modal {
background-color: #fafafa;
.modal {
position: relative;
top: auto;
right: auto;
bottom: auto;
left: auto;
z-index: 1;
display: block;
}
.modal-dialog {
left: auto;
margin-right: auto;
margin-left: auto;
}
}
.modal.show {
z-index: 1072;
.tooltip, .popover {
z-index: 1073;
}
}
.modal-backdrop {
z-index: 1071;
}
// Example tabbable tabs
.bd-example-tabs .nav-tabs {
margin-bottom: 1rem;
}
// Tooltips
.bd-example-tooltips {
text-align: center;
}
.bd-example-tooltips > .btn {
margin-top: .25rem;
margin-bottom: .25rem;
}
.bs-tooltip-top-docs,
.bs-tooltip-bottom-docs {
.arrow {
left: 50%;
}
}
.bs-tooltip-right-docs,
.bs-tooltip-left-docs {
.arrow {
top: 50%;
}
}
// Popovers
.bd-example-popover-static {
padding-bottom: 1.5rem;
background-color: #f9f9f9;
}
.bd-example-popover-static .popover {
position: relative;
display: block;
float: left;
width: 260px;
margin: 1.25rem;
}
.bs-popover-top-docs,
.bs-popover-bottom-docs {
.arrow {
left: 50%;
}
}
.bs-popover-right-docs,
.bs-popover-left-docs {
.arrow {
top: 50%;
}
}
// Tooltips
.tooltip-demo a {
white-space: nowrap;
}
.bd-example-tooltip-static .tooltip {
position: relative;
display: inline-block;
margin: 10px 20px;
opacity: 1;
}
// Scrollspy demo on fixed height div
.scrollspy-example {
position: relative;
height: 200px;
margin-top: .5rem;
overflow: auto;
}
.scrollspy-example-2 {
position: relative;
height: 350px;
overflow: auto;
}
.bd-example-border-utils {
[class^="border"] {
display: inline-block;
width: 5rem;
height: 5rem;
margin: .25rem;
background-color: #f5f5f5;
border: 1px solid;
}
}
//
// Code snippets
//
.highlight {
padding: 1rem;
margin: 1rem (-$grid-gutter-width / 2);
background-color: #f7f7f9;
-ms-overflow-style: -ms-autohiding-scrollbar;
@include media-breakpoint-up(sm) {
padding: 1.5rem;
margin-right: 0;
margin-left: 0;
}
}
.highlight pre {
padding: 0;
margin-top: 0;
margin-bottom: 0;
background-color: transparent;
border: 0;
}
.highlight pre code {
font-size: inherit;
color: $gray-900; // Effectively the base text color
}

View File

@ -0,0 +1,115 @@
// scss-lint:disable IdSelector, NestingDepth, SelectorDepth, QualifyingElement
//
// Automatically style Markdown-based tables like a Bootstrap `.table`.
//
.bd-content {
order: 1;
// Hack the sticky header
> h2[id],
> h3[id],
> h4[id] {
pointer-events: none;
> div,
> a {
pointer-events: auto;
}
&::before {
display: block;
height: 6rem;
margin-top: -6rem;
visibility: hidden;
content: "";
}
}
> table {
width: 100%;
max-width: 100%;
margin-bottom: 1rem;
@include media-breakpoint-down(md) {
display: block;
overflow-x: auto;
-ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057
}
// Cells
> thead,
> tbody,
> tfoot {
> tr {
> th,
> td {
padding: $table-cell-padding;
vertical-align: top;
border: 1px solid $table-border-color;
> p:last-child {
margin-bottom: 0;
}
}
}
}
// Prevent breaking of code (e.g., Grunt tasks list)
td:first-child > code {
white-space: nowrap;
}
}
}
//
// Docs sections
//
.bd-content {
> h2:not(:first-child) {
margin-top: 3rem;
}
> h3 {
margin-top: 1.5rem;
}
> ul li,
> ol li {
margin-bottom: .25rem;
}
@include media-breakpoint-up(lg) {
> ul,
> ol,
> p {
max-width: 80%;
}
}
}
.bd-title {
margin-top: 1rem;
margin-bottom: .5rem;
font-weight: 300;
@include media-breakpoint-up(sm) {
font-size: 3rem;
}
}
.bd-lead {
font-size: 1.125rem;
font-weight: 300;
@include media-breakpoint-up(sm) {
max-width: 80%;
margin-bottom: 1rem;
font-size: 1.5rem;
}
}
.bd-text-purple { color: $bd-purple; }
.bd-text-purple-bright { color: $bd-purple-bright; }

View File

@ -0,0 +1,24 @@
//
// Examples
//
.bd-examples .img-thumbnail {
margin-bottom: .75rem;
}
.bd-examples h4 {
margin-bottom: .25rem;
}
.bd-examples p {
margin-bottom: 1.25rem;
}
@media (max-width: 480px) {
.bd-examples {
margin-right: -.75rem;
margin-left: -.75rem;
}
.bd-examples > [class^="col-"] {
padding-right: .75rem;
padding-left: .75rem;
}
}

View File

@ -0,0 +1,21 @@
.bd-featured-sites {
margin-right: -1px;
margin-left: -1px;
}
.bd-featured-sites .col-6 {
padding: 1px;
}
.bd-featured-sites .img-fluid {
margin-top: 0;
}
@media (min-width: 768px) {
.bd-featured-sites .col-sm-3:first-child img {
border-top-left-radius: .25rem;
border-bottom-left-radius: .25rem;
}
.bd-featured-sites .col-sm-3:last-child img {
border-top-right-radius: .25rem;
border-bottom-right-radius: .25rem;
}
}

View File

@ -0,0 +1,40 @@
//
// Footer
//
.bd-footer {
font-size: 85%;
text-align: center;
background-color: #f7f7f7;
a {
font-weight: 500;
color: $gray-700;
&:hover,
&:focus {
color: $link-color;
}
}
p {
margin-bottom: 0;
}
@include media-breakpoint-up(sm) {
text-align: left;
}
}
.bd-footer-links {
padding-left: 0;
margin-bottom: 1rem;
li {
display: inline-block;
+ li {
margin-left: 1rem;
}
}
}

View File

@ -0,0 +1,61 @@
// scss-lint:disable ImportantRule
.bd-masthead {
position: relative;
padding: 3rem ($grid-gutter-width / 2);
// background-image: linear-gradient(45deg, #fafafa, #f5f5f5);
h1 {
line-height: 1;
}
.btn {
width: 100%;
padding: .8rem 2rem;
font-size: 1.25rem;
font-weight: 500;
}
.carbonad {
margin-top: 0 !important;
margin-bottom: -3rem !important;
}
@include media-breakpoint-up(sm) {
padding-top: 5rem;
padding-bottom: 5rem;
.carbonad {
margin-bottom: 0 !important;
}
}
@include media-breakpoint-up(md) {
h1 {
font-size: 4rem;
}
.carbonad {
margin-top: 3rem !important;
}
}
}
.bd-pretext {
overflow: hidden;
resize: none;
}
.half-rule {
width: 6rem;
margin: 2.5rem 0;
}
.masthead-followup {
.bd-clipboard { display: none; }
.highlight {
padding: .5rem 0;
background-color: transparent;
}
}

View File

@ -0,0 +1,76 @@
//
// Main navbar
//
.bd-navbar {
min-height: 4rem;
background-color: $bd-purple;
box-shadow: 0 .5rem 1rem rgba(0,0,0,.05), inset 0 -1px 0 rgba(0,0,0,.1);
@include media-breakpoint-down(md) {
padding-right: .5rem;
padding-left: .5rem;
.navbar-nav-scroll {
max-width: 100%;
height: 2.5rem;
margin-top: .25rem;
overflow: hidden;
font-size: .875rem;
.navbar-nav {
padding-bottom: 2rem;
overflow-x: auto;
white-space: nowrap;
-webkit-overflow-scrolling: touch;
}
}
}
@include media-breakpoint-up(md) {
@supports (position: sticky) {
position: sticky;
top: 0;
z-index: 1071; // over everything in bootstrap
}
}
.navbar-nav {
.nav-link {
padding-right: .5rem;
padding-left: .5rem;
color: $bd-purple-light;
&.active,
&:hover {
color: #fff;
background-color: transparent;
}
&.active {
font-weight: 500;
}
}
}
.navbar-nav-svg {
display: inline-block;
width: 1rem;
height: 1rem;
vertical-align: text-top;
}
.dropdown-menu {
font-size: .875rem;
}
.dropdown-item.active {
font-weight: 500;
color: $gray-900;
background-color: transparent;
background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23292b2c' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: .4rem .6rem;
background-size: .75rem .75rem;
}
}

View File

@ -0,0 +1,60 @@
// scss-lint:disable ImportantRule
.bd-pageheader {
padding: 2rem ($grid-gutter-width / 2);
margin-bottom: 1.5rem;
color: $bd-purple-light;
text-align: center;
background-color: $bd-purple;
.container {
position: relative;
}
h1 {
font-size: 3rem;
font-weight: normal;
color: #fff;
}
p {
margin-bottom: 0;
font-size: 1.25rem;
font-weight: 300;
}
@include media-breakpoint-up(sm) {
padding-top: 4rem;
padding-bottom: 4rem;
margin-bottom: 3rem;
text-align: left;
.carbonad {
margin: 2rem 0 0 !important;
}
}
@include media-breakpoint-up(md) {
h1 {
font-size: 4rem;
}
p {
font-size: 1.5rem;
}
}
@include media-breakpoint-up(lg) {
h1,
p {
margin-right: 380px;
}
.carbonad {
position: absolute;
top: 0;
right: .75rem; // offset from the .container's padding
margin: 0 !important;
}
}
}

View File

@ -0,0 +1,17 @@
// scss-lint:disable ImportantRule
//
// Responsive tests
//
// Responsive (scrollable) doc tables
.table-responsive .highlight pre {
white-space: normal;
}
// Utility classes table
.bd-table th small {
display: block;
font-weight: normal;
color: #999;
}

View File

@ -0,0 +1,166 @@
// scss-lint:disable VendorPrefix
//
// Right side table of contents
//
.bd-toc {
@supports (position: sticky) {
position: sticky;
top: 4rem;
max-height: calc(100vh - 4rem);
overflow-y: auto;
}
order: 2;
padding-top: 1.5rem;
padding-bottom: 1.5rem;
font-size: .875rem;
}
.section-nav {
padding-left: 0;
border-left: 1px solid #eee;
ul {
padding-left: 1rem;
ul {
display: none;
}
}
}
.toc-entry {
display: block;
a {
display: block;
padding: .125rem 1.5rem;
color: #99979c;
&:hover {
color: $blue;
text-decoration: none;
}
}
}
//
// Left side navigation
//
.bd-sidebar {
order: 0;
// background-color: #f5f2f9;
border-bottom: 1px solid rgba(0,0,0,.1);
@include media-breakpoint-up(md) {
@supports (position: sticky) {
position: sticky;
top: 4rem;
z-index: 1000;
max-height: calc(100vh - 4rem);
}
border-right: 1px solid rgba(0,0,0,.1);
}
@include media-breakpoint-up(xl) {
max-width: 320px;
}
}
.bd-links {
padding-top: 1rem;
padding-bottom: 1rem;
margin-right: -15px;
margin-left: -15px;
@include media-breakpoint-up(md) {
@supports (position: sticky) {
max-height: calc(100vh - 9rem);
overflow-y: auto;
}
}
// Override collapse behaviors
@include media-breakpoint-up(md) {
display: block !important;
}
}
.bd-search {
position: relative; // To contain the Algolia search
padding: 1rem 15px;
margin-right: -15px;
margin-left: -15px;
border-bottom: 1px solid rgba(0,0,0,.05);
.form-control:focus {
border-color: $bd-purple-bright;
box-shadow: 0 0 0 3px rgba($bd-purple-bright, .25);
}
}
.bd-search-docs-toggle {
line-height: 1;
color: $gray-900;
}
.bd-sidenav {
display: none;
}
.bd-toc-link {
display: block;
padding: .25rem 1.5rem;
font-weight: 500;
color: rgba(0,0,0,.65);
&:hover {
color: rgba(0,0,0,.85);
text-decoration: none;
}
}
.bd-toc-item {
&.active {
margin-bottom: 1rem;
&:not(:first-child) {
margin-top: 1rem;
}
> .bd-toc-link {
color: rgba(0,0,0,.85);
&:hover {
background-color: transparent;
}
}
> .bd-sidenav {
display: block;
}
}
}
// All levels of nav
.bd-sidebar .nav > li > a {
display: block;
padding: .25rem 1.5rem;
font-size: 90%;
color: rgba(0,0,0,.65);
}
.bd-sidebar .nav > li > a:hover {
color: rgba(0,0,0,.85);
text-decoration: none;
background-color: transparent;
}
.bd-sidebar .nav > .active > a,
.bd-sidebar .nav > .active:hover > a {
font-weight: 500;
color: rgba(0,0,0,.85);
background-color: transparent;
}

View File

@ -0,0 +1,14 @@
// scss-lint:disable IdSelector
#skippy {
display: block;
padding: 1em;
color: #fff;
background-color: $bd-purple;
outline: 0;
.skiplink-text {
padding: .5em;
outline: 1px dotted;
}
}

View File

@ -0,0 +1,66 @@
.hll { background-color: #ffc; }
.c { color: #999; }
.k { color: #069; }
.o { color: #555; }
.cm { color: #999; }
.cp { color: #099; }
.c1 { color: #999; }
.cs { color: #999; }
.gd { background-color: #fcc; border: 1px solid #c00; }
.ge { font-style: italic; }
.gr { color: #f00; }
.gh { color: #030; }
.gi { background-color: #cfc; border: 1px solid #0c0; }
.go { color: #aaa; }
.gp { color: #009; }
.gu { color: #030; }
.gt { color: #9c6; }
.kc { color: #069; }
.kd { color: #069; }
.kn { color: #069; }
.kp { color: #069; }
.kr { color: #069; }
.kt { color: #078; }
.m { color: #f60; }
.s { color: #d44950; }
.na { color: #4f9fcf; }
.nb { color: #366; }
.nc { color: #0a8; }
.no { color: #360; }
.nd { color: #99f; }
.ni { color: #999; }
.ne { color: #c00; }
.nf { color: #c0f; }
.nl { color: #99f; }
.nn { color: #0cf; }
.nt { color: #2f6f9f; }
.nv { color: #033; }
.ow { color: #000; }
.w { color: #bbb; }
.mf { color: #f60; }
.mh { color: #f60; }
.mi { color: #f60; }
.mo { color: #f60; }
.sb { color: #c30; }
.sc { color: #c30; }
.sd { font-style: italic; color: #c30; }
.s2 { color: #c30; }
.se { color: #c30; }
.sh { color: #c30; }
.si { color: #a00; }
.sx { color: #c30; }
.sr { color: #3aa; }
.s1 { color: #c30; }
.ss { color: #fc3; }
.bp { color: #366; }
.vc { color: #033; }
.vg { color: #033; }
.vi { color: #033; }
.il { color: #f60; }
.css .o,
.css .o + .nt,
.css .nt + .nt { color: #999; }
.language-bash::before { color: #009; content: "$ "; user-select: none; }
.language-powershell::before { color: #009; content: "PM> "; user-select: none; }

View File

@ -0,0 +1,32 @@
.bd-team {
margin-bottom: 1.5rem;
.team-member {
line-height: 2rem;
color: #555;
}
.team-member:hover,
.team-member:focus {
color: #333;
}
.team-member:hover {
text-decoration: none;
}
.github-btn {
float: right;
width: 180px;
height: 1.25rem;
margin-top: .25rem;
border: 0;
}
img {
float: left;
width: 2rem;
margin-right: .5rem;
border-radius: .25rem;
}
}

View File

@ -0,0 +1,11 @@
// Local docs variables
$bd-purple: #563d7c;
$bd-purple-bright: lighten(saturate($bd-purple, 5%), 15%);
$bd-purple-light: #cdbfe3;
$bd-purple-lightest: #f5f2f9;
$bd-graphite: #2a2730;
$bd-graphite-light: lighten($bd-graphite, 40%);
$bd-yellow: #ffe484;
$bd-danger: #d9534f;
$bd-warning: #f0ad4e;
$bd-info: #5bc0de;

View File

@ -0,0 +1,56 @@
/*!
* Bootstrap Docs (https://getbootstrap.com)
* Copyright 2011-2017 The Bootstrap Authors
* Copyright 2011-2017 Twitter, Inc.
* Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see https://creativecommons.org/licenses/by/3.0/.
*/
// Dev notes
//
// Background information on nomenclature and architecture decisions here.
//
// - Bootstrap functions, variables, and mixins are included for easy reuse.
// Doing so gives us access to the same core utilities provided by Bootstrap.
// For example, consistent media queries through those mixins.
//
// - Bootstrap's **docs variables** are prefixed with `$bd-`.
// These custom colors avoid collision with the components Bootstrap provides.
//
// - Classes are prefixed with `.bd-`.
// These classes indicate custom-built or modified components for the design
// and layout of the Bootstrap docs. They are not included in our builds.
//
// Happy Bootstrapping!
// Load Bootstrap variables and mixins
@import "../../scss/functions";
@import "../../scss/variables";
@import "../../scss/mixins";
// Load docs components
@import "variables";
@import "nav";
@import "masthead";
@import "featured-sites";
@import "ads";
@import "content";
@import "page-header";
@import "skiplink";
@import "sidebar";
@import "footer";
@import "component-examples";
@import "responsive-tests";
@import "buttons";
@import "callouts";
@import "examples";
@import "team";
@import "browser-bugs";
@import "brand";
@import "colors";
@import "clipboard-js";
// Load docs dependencies
@import "syntax";
@import "anchor";
@import "algolia";

7
docs/custom/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

6
docs/custom/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

4
docs/custom/font-awesome.min.css vendored Normal file

File diff suppressed because one or more lines are too long

26
docs/custom/footer.html Normal file
View File

@ -0,0 +1,26 @@
<!-- HTML footer for doxygen 1.8.8-->
<!-- start footer part -->
<!--BEGIN GENERATE_TREEVIEW-->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
$navpath
<li class="footer">$generatedby
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/></a> $doxygenversion </li>
</ul>
</div>
<!--END GENERATE_TREEVIEW-->
</div>
</div>
</div>
</div>
</div>
<!--BEGIN !GENERATE_TREEVIEW-->
<hr class="footer"/><address class="footer"><small>
$generatedby &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="$relpath^doxygen.png" alt="doxygen"/>
</a> $doxygenversion
</small></address>
<!--END !GENERATE_TREEVIEW-->
</body>
</html>

83
docs/custom/header.html Normal file
View File

@ -0,0 +1,83 @@
<!-- HTML header for doxygen 1.8.8-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- For Mobile Devices -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta name="generator" content="Doxygen $doxygenversion"/
<script type="text/javascript" src="$relpathd^jquery-3.2.1.js"></script>
<script type="text/javascript" src="$relpath^dynsections.js"></script>
$treeview
$search
$mathjax
<link href="$relpath^$stylesheet" rel="stylesheet" type="text/css" />
$extrastylesheet
<link rel="stylesheet" href="$relpath^bootstrap.min.css">
<script src="$relpath^bootstrap.min.js"></script>
<script type="text/javascript" src="$relpath^doxy-boot.js"></script>
<style type="text/css">
body {
padding-top: 60px;
padding-bottom: 40px;
}
.sidebar-nav {
padding: 9px 0;
}
@media (max-width: 980px) {
/* Enable use of floated navbar text */
.navbar-text.pull-right {
float: none;
padding-left: 5px;
padding-right: 5px;
}
}
</style>
<!-- <link href="$relpath^assets/css/bootstrap-responsive.css" rel="stylesheet"> -->
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="../assets/js/html5shiv.js"></script>
<![endif]-->
<!-- Fav and touch icons -->
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="$relpath^assets/ico/apple-touch-icon-144-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href=" $relpath^assets/ico/apple-touch-icon-114-precomposed.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="$relpath^assets/ico/apple-touch-icon-72-precomposed.png">
<link rel="apple-touch-icon-precomposed" href="$relpath^assets/ico/apple-touch-icon-57-precomposed.png">
<link rel="shortcut icon" href="$relpath^assets/ico/favicon.png">
</head>
<body>
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container-fluid">
<button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="brand" href="#">Project name</a>
<div class="nav-collapse collapse">
<p class="navbar-text pull-right">
Logged in as <a href="#" class="navbar-link">Username</a>
</p>
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="container-fluid">
<div class="row-fluid"> <div class="col-sm-12 panel panel-default" style="padding-bottom: 15px;">
<div style="margin-bottom: 15px;">
<!-- end header part -->

4
docs/custom/jquery-3.2.1.min.js vendored Normal file

File diff suppressed because one or more lines are too long

59
docs/custom/offcanvas.css Normal file
View File

@ -0,0 +1,59 @@
/*
* Style tweaks
* --------------------------------------------------
*/
html,
body {
overflow-x: hidden; /* Prevent scroll on narrow devices */
}
body {
padding-top: 70px;
}
footer {
padding: 30px 0;
}
/*
* Off Canvas
* --------------------------------------------------
*/
@media screen and (max-width: 767px) {
.row-offcanvas {
position: relative;
-webkit-transition: all .25s ease-out;
-o-transition: all .25s ease-out;
transition: all .25s ease-out;
}
.row-offcanvas-right {
right: 0;
}
.row-offcanvas-left {
left: 0;
}
.row-offcanvas-right
.sidebar-offcanvas {
right: -50%; /* 6 columns */
}
.row-offcanvas-left
.sidebar-offcanvas {
left: -50%; /* 6 columns */
}
.row-offcanvas-right.active {
right: 50%; /* 6 columns */
}
.row-offcanvas-left.active {
left: 50%; /* 6 columns */
}
.sidebar-offcanvas {
position: absolute;
top: 0;
width: 50%; /* 6 columns */
}
}

5
docs/custom/offcanvas.js Normal file
View File

@ -0,0 +1,5 @@
$(document).ready(function () {
$('[data-toggle="offcanvas"]').click(function () {
$('.row-offcanvas').toggleClass('active')
});
});

18
docs/custom/theme.css Normal file
View File

@ -0,0 +1,18 @@
body {
padding-top: 70px;
padding-bottom: 30px;
}
.theme-dropdown .dropdown-menu {
position: static;
display: block;
margin-bottom: 20px;
}
.theme-showcase > p > .btn {
margin: 5px 0;
}
.theme-showcase .navbar .container {
width: auto;
}

9
docs/custom/yap.css Normal file
View File

@ -0,0 +1,9 @@
body { padding-top: 100px; }
/* set a max-width for horizontal fluid layout and make it centered */
.container-fluid {
margin-right: auto;
margin-left: auto;
max-width: 1600px; /* or 950px */
}

View File

@ -0,0 +1,238 @@
import os.path
import sys
import keyword
# debugging support.
# import pdb
from collections import namedtuple
from yap import *
class Engine( YAPEngine ):
def __init__(self, args=None,**kwargs):
# type: (object) -> object
if not args:
args = EngineArgs(**kwargs)
yap_lib_path = os.path.dirname(__file__)
args.setYapShareDir(os.path.join(yap_lib_path,"prolog"))
args.setYapLibDir(yap_lib_path)
args.setSavedState(os.path.join(yap_lib_path,"startup.yss"))
YAPEngine.__init__(self,args)
self.goal( set_prolog_flag('verbose', 'silent' ) )
self.goal( use_module(library('yapi') ) )
self.goal( set_prolog_flag('verbose', 'normal' ) )
def run(self, g, m=None):
if m:
self.mgoal(g, m)
else:
self.goal(g)
def f(self, g):
self.E.fun(g)
class EngineArgs( YAPEngineArgs ):
""" Interface to Engine Options class"""
def __init__(self, args=None,**kwargs):
super().__init__()
class Predicate( YAPPredicate ):
""" Interface to Generic Predicate"""
class Predicate:
"""Goal is a predicate instantiated under a specific environment """
def __init__( self, name, args, module=None, engine = None):
self = namedtuple( name, args )
if module:
self.p = YAPPredicate( name, len(self), module )
else:
self.p = YAPPredicate( name, len(self) )
self.e = engine
def goals( self, engine):
self.e = engine
def __iter__(self):
return PrologTableIter(self.e, self.p)
def holds(self):
return self.e.run(self._make_())
class PrologTableIter:
def __init__(self, e, goal):
try:
self.e = e
self.q = e.YAPQuery(goal)
except:
print('Error')
def __iter__(self):
# Iterators are iterables too.
# Adding this functions to make them so.
return self
def next(self):
if self.q.next():
return goal
else:
self.q.close()
self.q = None
raise StopIteration()
f2p = []
for i in range(16):
f2p += [{}]
def named( name, arity):
if arity > 0 and name.isidentifier() and not keyword.iskeyword(name):
s = []
for i in range(arity):
s += ["A" + str(i)]
f2p[arity][name] = namedtuple(name, s)
class PrologPredicate( YAPPrologPredicate ):
""" Interface to Prolog Predicate"""
global engine, handler
yap_lib_path = os.path.dirname(__file__)
use_module = namedtuple('use_module', 'file')
bindvars = namedtuple('bindvars', 'list')
library = namedtuple('library', 'list')
v = namedtuple( 'v', 'slot')
yap_query = namedtuple( 'yap_query', 'query owner')
jupyter_query = namedtuple( 'jupyter_query', 'vars dict')
python_query = namedtuple( 'python_query', 'vars dict')
yapi_query = namedtuple( 'yapi_query', 'vars dict')
show_answer = namedtuple( 'show_answer', 'vars dict')
set_prolog_flag = namedtuple('set_prolog_flag', 'flag new_value')
class v(YAPVarTerm):
def __init__(self):
super().__init__()
def binding(self):
return self.term()
def numbervars( q ):
Dict = {}
if True:
engine.goal(show_answer( q.namedVars(), Dict))
return Dict
rc = q.namedVarsVector()
q.r = q.goal().numbervars()
o = []
for i in rc:
if len(i) == 2:
do = str(i[0]) + " = " + str( i[1] ) + "\n"
o += do
else:
do = str(i[0]) + " = " + str( i[1] ) + "\n"
o += do
return o
class YAPShell:
def answer(self, q):
try:
self.bindings = {}
v = q.next()
if v:
print( self.bindings )
return v
except Exception as e:
print(e.args[1])
return False
def query_prolog(self, engine, s):
# import pdb; pdb.set_trace()
#
# construct a query from a one-line string
# q is opaque to Python
#
q = engine.query(python_query(self, s))
#
# # vs is the list of variables
# you can print it out, the left-side is the variable name,
# the right side wraps a handle to a variable
# pdb.set_trace()
# #pdb.set_trace()
# atom match either symbols, or if no symbol exists, sttrings, In this case
# variable names should match strings
#for eq in vs:
# if not isinstance(eq[0],str):
# print( "Error: Variable Name matches a Python Symbol")
# return
do_ask = True
self.port = "call"
# launch the query
while self.answer(q):
if self.port == "exit":
# done
q.close()
return True, True
if do_ask:
s = input("more(;), all(*), no(\\n), python(#) ?").lstrip()
if s.startswith(';') or s.startswith('y'):
continue
elif s.startswith('#'):
try:
exec(s.lstrip('#'))
except:
raise
elif s.startswith('*') or s.startswith('a'):
do_ask = False
continue
else:
break
print("No (more) answers")
q.close()
return
def live(self, engine, **kwargs):
loop = True
while loop:
try:
s = input("?- ")
if not s:
loop = False
else:
self.query_prolog(engine, s)
except SyntaxError as err:
print("Syntax Error error: {0}".format(err))
except EOFError:
return
except RuntimeError as err:
print("YAP Execution Error: {0}".format(err))
except ValueError:
print("Could not convert data to an integer.")
except:
print("Unexpected error:", sys.exc_info()[0])
raise
engine.close()
#
# initialize engine
# engine = yap.YAPEngine();
# engine = yap.YAPEngine(yap.YAPParams());
#
def __init__(self, engine, **kwargs):
self.live(engine)
def main():
engine = Engine()
handler = numbervars
YAPShell(engine)
if __name__ == "__main__":
main()