mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Added more documentation
Updated CSS for light and dark modes
This commit is contained in:
parent
ccfd59ae26
commit
a05e870abf
@ -9,6 +9,7 @@ toc: false
|
||||
---
|
||||
|
||||
The ETL is free for you or your company to use, including in commercial applications.
|
||||
|
||||
*However, it is not free for me to create or maintain.*
|
||||
|
||||
## Why Open Source Needs Support
|
||||
|
||||
@ -9,7 +9,7 @@ title: "Embedded Template Library"
|
||||
{{< /callout >}}
|
||||
|
||||
{{< callout emoji="❓">}}
|
||||
### [Is the ETL free?]({{< ref "Is the ETL free.md" >}})
|
||||
[***Is the ETL free?***]({{< ref "Is the ETL free.md" >}})
|
||||
{{< /callout >}}
|
||||
|
||||
## Motivation
|
||||
@ -19,7 +19,7 @@ C++ is a powerful language for embedded systems development, with templates offe
|
||||
|
||||
In many embedded applications, dynamic memory allocation is discouraged or outright prohibited, making standard STL containers and many other components impractical or unusable.
|
||||
|
||||
What’s needed is a template library specifically designed for embedded systems — one that allows developers to define fixed or maximum sizes for containers and other objects at compile time. Additionally, since many embedded toolchains still lack full support for standards beyond C++03, it's valuable to have access to a library that backports select features from later versions of the C++ Standard Library.
|
||||
What’s needed is a template library specifically designed for embedded systems — one that allows developers to define fixed or maximum sizes for containers and other objects at compile time. Additionally, since many older (but still in use) embedded toolchains lack full support for standards beyond C++03, it's valuable to have access to a library that backports select features from later versions of the C++ Standard Library.
|
||||
|
||||
## About the ETL
|
||||
|
||||
@ -77,11 +77,13 @@ Continuous integration via GitHub Actions.
|
||||
- Archived: A snapshot of the ETL is preserved in the Arctic Code Vault for long-term digital preservation.
|
||||
|
||||
## Support the ETL
|
||||
### Is the ETL free?
|
||||
Maintaining the ETL can take a lot of man-hours of work, but unfortunately it doesn't pay the bills. When I have to take on paying work, the ETL gets a lot less attention. So if you have found the library is an important component in your work and you would like to help out, then please consider by supporting the project.
|
||||
Many thanks.
|
||||
John.
|
||||
|
||||
[**Is the ETL free?**]({{< relref "is the ETL free.md" >}})
|
||||
|
||||
Any help porting the library to work under different platforms and compilers would be gratefully received.
|
||||
I am especially interested in people who are using Keil, IAR, Green Hills, TI Code Composer etc, bare metal
|
||||
or RTOS, and DSPs.
|
||||
or RTOS, and DSPs.
|
||||
|
||||
Many thanks.
|
||||
John.
|
||||
|
||||
278
docs/containers/buffer_descriptors.md
Normal file
278
docs/containers/buffer_descriptors.md
Normal file
@ -0,0 +1,278 @@
|
||||
---
|
||||
title: "buffer_descriptors"
|
||||
|
||||
---
|
||||
|
||||
{{< callout >}}
|
||||
Header: `buffer_descriptors.h`
|
||||
Supported: All versions
|
||||
{{< /callout >}}
|
||||
|
||||
A set of descriptors to a collection of buffers.
|
||||
|
||||
```C++
|
||||
template <typename TBuffer, // The type to store in the buffer.
|
||||
TSize BUFFER_SIZE, // The size of each buffer.
|
||||
size_t N_BUFFERS, // The total number of buffers.
|
||||
typename TFlag = bool> // The 'in use' flag type.
|
||||
class buffer_descriptors
|
||||
```
|
||||
|
||||
The type used for the 'in use' flag depends on how the buffer descriptors class is used.
|
||||
For interrupts and multi-threaded code, either the flag type must force a fence (by using an atomic type) or the calls to allocate and release must ensure that they are not re-ordered by the compiler or processor.
|
||||
|
||||
## Member types
|
||||
| Type | |
|
||||
| ------------- | -------------------------------------------------------------------- |
|
||||
| value_type | The type that is stored in the buffers |
|
||||
| size_type | An unsigned integral type |
|
||||
| flag_type | |
|
||||
| pointer | |
|
||||
| descriptor | A nested class that encapsulates the details of an individual buffer |
|
||||
| notification | A nested class that is sent to the user defined callback function |
|
||||
| callback_type | `etl::delegate<void(notification)>` |
|
||||
|
||||
## Static Constants
|
||||
| Value | |
|
||||
| ----------- | --------------------------------------------------------- |
|
||||
| N_BUFFERS | The number of buffers that the buffer descriptor controls |
|
||||
| BUFFER_SIZE | The number of elements in each buffer |
|
||||
|
||||
## Constructors
|
||||
```C++
|
||||
buffer_descriptors(pointer pbuffers)
|
||||
```
|
||||
**Description**
|
||||
Construct with a pointer to the start of the buffers to control.
|
||||
This storage should be contiguous and large enough to hold `N_BUFFERS`.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
buffer_descriptors(pointer pbuffers, const callback_type& callback)
|
||||
```
|
||||
**Description**
|
||||
Construct with a pointer to the start of the buffers to control and the callback.
|
||||
|
||||
## Member functions
|
||||
|
||||
```C++
|
||||
void set_callback(const callback_type& callback)
|
||||
```
|
||||
**Description**
|
||||
Set the callback for notification.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
bool is_valid() const
|
||||
```
|
||||
**Description**
|
||||
Returns true if class contains valid buffers.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
void notify(notification n)
|
||||
```
|
||||
**Description**
|
||||
Calls the user defined callback with the descriptor and buffer size.
|
||||
Used when the buffer has been filled and is ready for processing via the callback.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
descriptor allocate()
|
||||
```
|
||||
**Description**
|
||||
Returns a new descriptor.
|
||||
If all descriptors are in use then the descriptor will be invalid.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
descriptor allocate(value_type fill)
|
||||
```
|
||||
**Description**
|
||||
Returns a new descriptor and fills the buffer with fill.
|
||||
If all descriptors are in use then the descriptor will be invalid.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
void clear()
|
||||
```
|
||||
**Description**
|
||||
Clears by releasing all allocated descriptors.
|
||||
|
||||
```C++
|
||||
descriptor
|
||||
```
|
||||
**Description**
|
||||
A nested class that encapsulates the details of an individual buffer.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
const size_type MAX_SIZE
|
||||
```
|
||||
**Description**
|
||||
The maximum size of the buffer.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
descriptor()
|
||||
```
|
||||
**Description**
|
||||
Default constructor.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
ETL_CONSTEXPR pointer data() const
|
||||
```
|
||||
**Description**
|
||||
Returns a pointer to the start of the buffer.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
ETL_CONSTEXPR size_type max_size() const
|
||||
```
|
||||
**Description**
|
||||
Returns the maximum size of the buffer.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
bool is_valid() const
|
||||
```
|
||||
**Description**
|
||||
Returns true if the descriptor points to a valid buffer.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
bool is_allocated() const
|
||||
```
|
||||
**Description**
|
||||
Returns true if the descriptor has been allocated.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
bool is_released() const
|
||||
```
|
||||
**Description**
|
||||
Returns true if the descriptor has been released.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
void release()
|
||||
```
|
||||
**Description**
|
||||
Releases the descriptor.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
notification
|
||||
```
|
||||
**Description**
|
||||
A nested class that is sent to the user defined callback function.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
notification()
|
||||
```
|
||||
**Description**
|
||||
Default contructor.
|
||||
Initialises to a default constructed descriptor and a count of zero.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
notification(descriptor desc, size_t count)
|
||||
```
|
||||
**Description**
|
||||
Construct with the supplied parameters.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
descriptor get_descriptor() const
|
||||
```
|
||||
**Description**
|
||||
Gets the descriptor.
|
||||
|
||||
---
|
||||
|
||||
```C++
|
||||
size_t get_count() const
|
||||
```
|
||||
**Description**
|
||||
Gets the count.
|
||||
|
||||
## Example
|
||||
*Very simplified.*
|
||||
Assumes that there is a DMA driver class called DMA.
|
||||
In the real world the descriptor would be queued in the callback and handled in a foreground thread.
|
||||
The handler in the thread would release the descriptor.
|
||||
|
||||
```C++
|
||||
constexpr size_t BUFFER_SIZE = 256U;
|
||||
constexpr size_t N_BUFFERS = 8U;
|
||||
|
||||
// Define the buffer descriptors type.
|
||||
using BD = etl::buffer_descriptors<char, BUFFER_SIZE, N_BUFFERS, std::atomic_char>;
|
||||
|
||||
// The buffers to use with it.
|
||||
char buffers[N_BUFFERS][BUFFER_SIZE];
|
||||
|
||||
// The function to call when a buffer is ready.
|
||||
void Callback(BD::notification notification)
|
||||
{
|
||||
// Process the buffer in the descriptor here.
|
||||
ProcessData(notification.get_descriptor().data(), notification.get_count());
|
||||
|
||||
// Finished with the descriptor now, so release it back.
|
||||
notification.get_descriptor().release();
|
||||
}
|
||||
|
||||
// Create the buffer_descriptors.
|
||||
BD bd(&buffers[0][0], BD::callback_type::create<Callback>());
|
||||
|
||||
// The current dma descriptor.
|
||||
BD::descriptor dma_descriptor;
|
||||
|
||||
// An object that controls the DMA.
|
||||
DMA dma;
|
||||
|
||||
// Call to start the DMA.
|
||||
void DMAStart()
|
||||
{
|
||||
// Get a new descriptor.
|
||||
dma_descriptor = bd.allocate();
|
||||
|
||||
if (dma_descriptor.is_valid())
|
||||
{
|
||||
// Link the buffer to the DMA channel.
|
||||
dma.Start(dma_descriptor.data());
|
||||
}
|
||||
else
|
||||
{
|
||||
// No valid descriptors available.
|
||||
LogError("No Descriptor Available");
|
||||
}
|
||||
}
|
||||
|
||||
// Called when the DMA has completed (usually an interrupt).
|
||||
void DMAComplete()
|
||||
{
|
||||
// DMA is complete. Notify the callback.
|
||||
bd.notify(BD::notification(dma_descriptor, dma.GetTransferredSize()));
|
||||
}
|
||||
```
|
||||
156
docs/containers/const_map.md
Normal file
156
docs/containers/const_map.md
Normal file
@ -0,0 +1,156 @@
|
||||
---
|
||||
title: "const_map / _ext"
|
||||
---
|
||||
|
||||
---
|
||||
|
||||
{{< callout >}}
|
||||
Header: `const_map.h`
|
||||
Supported: TBC
|
||||
Similar to: [std::map](https://en.cppreference.com/w/cpp/container/map.html)
|
||||
{{< /callout >}}
|
||||
|
||||
A fixed capacity read-only map based on a sorted array.
|
||||
The containers are designed to be able to be constexpr for C++14 and up.
|
||||
|
||||
The interface is most similar to std::map.
|
||||
Uses etl::less as the default key comparison method.
|
||||
etl::const_map<typename TKey, typename TMapped, size_t Size, TKeyCompare = etl::less>
|
||||
etl::const_map_ext<typename TKey, typename TMapped, TKeyCompare = etl::less>
|
||||
|
||||
Inherits from etl::iconst_map<TKey, TMapped, TKeyCompare>
|
||||
etl::iconst_map may be used as a Size independent pointer or reference type for any etl::const_map instance.
|
||||
Both the key type and mapped type must be default constructible.
|
||||
|
||||
---
|
||||
|
||||
Template deduction guides
|
||||
C++17 and above
|
||||
|
||||
template <typename... TPairs>
|
||||
etl::const_map(TPairs...)
|
||||
|
||||
Example
|
||||
constexpr etl::const_map data{ etl::pair{0, 1}, etl::pair{2, 3},
|
||||
etl::pair{4, 5}, etl::pair{6, 7} };
|
||||
Defines data as an const_map of int/int pairs, of length 4, containing the supplied data.
|
||||
---
|
||||
template <typename... TPairs>
|
||||
etl::const_map_ext(TPairs...)
|
||||
|
||||
Example
|
||||
constexpr etl::pair<int, int> values[]{ etl::pair{0, 1}, etl::pair{2, 3},
|
||||
etl::pair{4, 5}, etl::pair{6, 7} };
|
||||
constexpr etl::const_map_ext data{ values };
|
||||
Defines data as an const_map of int/int pairs, of length 4, containing the supplied data.
|
||||
|
||||
constexpr values[]{ etl::pair{0, 1}, etl::pair{2, 3},
|
||||
etl::pair{4, 5}, etl::pair{6, 7} };
|
||||
constexpr etl::span<const etl::pair<int, int>, 4> span{ values };
|
||||
constexpr etl::const_map_ext data{ span };
|
||||
Defines data as an const_map of int/int pairs, of length 4, containing the supplied data.
|
||||
---
|
||||
Member types
|
||||
|
||||
key_type TKey Must be default constructible.
|
||||
mapped_type TMapped Must be default constructible.
|
||||
value_type pair<const key_type, mapped_type>
|
||||
The type is either std::pair (default) or etl::pair (ETL_NO_STL)
|
||||
size_type std::size_t
|
||||
difference_type std::ptrdiff_t
|
||||
const_reference const T&
|
||||
const_pointer const T*
|
||||
const_iterator Constant random access iterator
|
||||
---
|
||||
Constructor
|
||||
|
||||
template <typename... TElements>
|
||||
ETL_CONSTEXPR14 explicit const_map(TElements&&... elements) ETL_NOEXCEPT
|
||||
Construct a const_map from a variadic list of elements.
|
||||
Static asserts if the elements are not of type value_type.
|
||||
Static asserts if the number of elements is greater than the capacity of the const_map.
|
||||
---
|
||||
Element access
|
||||
|
||||
ETL_CONSTEXPR14 const TMapped& at(key_parameter_t key) const ETL_NOEXCEPT
|
||||
Returns a const reference to the indexed element.
|
||||
---
|
||||
ETL_CONSTEXPR14 const TMapped& operator[](key_parameter_t key) const ETL_NOEXCEPT
|
||||
Returns a const reference to the indexed element.
|
||||
---
|
||||
Iterators
|
||||
|
||||
const_iterator begin() const ETL_NOEXCEPT
|
||||
const_iterator cbegin() const ETL_NOEXCEPT
|
||||
Returns an iterator to the beginning of the map.
|
||||
---
|
||||
const_iterator end() const ETL_NOEXCEPT
|
||||
const_iterator cend() const ETL_NOEXCEPT
|
||||
Returns an iterator to the end of the map.
|
||||
---
|
||||
Capacity
|
||||
|
||||
ETL_CONSTEXPR14 bool empty() const ETL_NOEXCEPT
|
||||
Returns true if the size of the map is zero, otherwise false.
|
||||
---
|
||||
ETL_CONSTEXPR14 bool full() const ETL_NOEXCEPT
|
||||
Returns true if the size of the lookup is size, otherwise false.
|
||||
---
|
||||
ETL_CONSTEXPR14 size_t size() const ETL_NOEXCEPT
|
||||
Returns the size of the lookup.
|
||||
---
|
||||
ETL_CONSTEXPR14 size_t max_size() const ETL_NOEXCEPT
|
||||
Returns the maximum possible Size of the map.
|
||||
---
|
||||
Status
|
||||
|
||||
ETL_CONSTEXPR14 bool is_valid() const ETL_NOEXCEPT
|
||||
Check that the elements are valid for a map.
|
||||
The elements must be sorted and contain no duplicates.
|
||||
---
|
||||
Search
|
||||
|
||||
ETL_CONSTEXPR14 const_iterator find(const key_type& key) const ETL_NOEXCEPT
|
||||
|
||||
ETL_CONSTEXPR14 const_iterator lower_bound(const key_type& key) const ETL_NOEXCEPT
|
||||
|
||||
ETL_CONSTEXPR14 const_iterator upper_bound(const key_type& key) const ETL_NOEXCEPT
|
||||
|
||||
ETL_CONSTEXPR14 pair<const_iterator, const_iterator> equal_range(const key_type& key) const ETL_NOEXCEPT
|
||||
The return type is either std::pair (default) or etl::pair (ETL_NO_STL)
|
||||
|
||||
ETL_CONSTEXPR14 bool contains(const key_type& k) const ETL_NOEXCEPT
|
||||
Check if the container contains the key.
|
||||
---
|
||||
For comparators that define is_transparent.
|
||||
|
||||
template <typename K>
|
||||
ETL_CONSTEXPR14 const_iterator find(const K& key) const ETL_NOEXCEPT
|
||||
|
||||
template <typename K>
|
||||
ETL_CONSTEXPR14 const_iterator lower_bound(const K& key) const ETL_NOEXCEPT
|
||||
|
||||
template <typename K>
|
||||
ETL_CONSTEXPR14 const_iterator upper_bound(const K& key) const ETL_NOEXCEPT
|
||||
|
||||
template <typename K>
|
||||
ETL_CONSTEXPR14 pair<const_iterator, const_iterator> equal_range(const K& key) const ETL_NOEXCEPT
|
||||
|
||||
template <typename K>
|
||||
ETL_CONSTEXPR14 bool contains(const K& k) const ETL_NOEXCEPT
|
||||
Check if the container contains the key.
|
||||
---
|
||||
Non-member functions
|
||||
|
||||
Lexicographically comparisons
|
||||
== true if the contents of the maps are equal, otherwise false.
|
||||
!= true if the contents of the maps are not equal, otherwise false.
|
||||
< true if the contents of the lhs is less-than the rhs, otherwise false.
|
||||
<= true if the contents of the lhs is less-than-equal the rhs, otherwise false.
|
||||
> true if the contents of the lhs is greater-than the rhs, otherwise false.
|
||||
>= true if the contents of the lhs is greater-than-equal the rhs, otherwise false.
|
||||
___________________________________________________________________________________________________
|
||||
Technical stuff
|
||||
|
||||
The const map is implemented as a sorted array key/value pairs.
|
||||
|
||||
@ -1,3 +1,20 @@
|
||||
.highlight .chroma .k,
|
||||
.highlight .chroma .kc,
|
||||
.highlight .chroma .kd,
|
||||
.highlight .chroma .kn,
|
||||
.highlight .chroma .kp,
|
||||
.highlight .chroma .kr,
|
||||
.highlight .chroma .kt,
|
||||
.highlight .chroma .nc,
|
||||
.highlight .chroma .cp {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
html.dark .hextra-code-block .highlight .chroma .cs,
|
||||
html.dark .hextra-code-block .highlight .chroma .cp,
|
||||
html.dark .hextra-code-block .highlight .chroma .cpf {
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Definitions for light mode */
|
||||
html:not(.dark) h1 {
|
||||
@ -46,7 +63,7 @@ html:not(.dark) .hx\:font-extrabold {
|
||||
|
||||
/* inactive */
|
||||
html:not(.dark) .hx\:text-gray-500 {
|
||||
color: rgb(30, 30, 30) !important;
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
/* active */
|
||||
@ -58,13 +75,30 @@ html:not(.dark) .content p.red-text {
|
||||
color: red !important;
|
||||
}
|
||||
|
||||
/* Definitions for dark mode */
|
||||
/* Regular item hover */
|
||||
html:not(.dark) .hextra-sidebar-item a:hover,
|
||||
html:not(.dark) .hextra-sidebar-item a:hover span {
|
||||
background-color: rgb(250, 195, 175) !important;
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
/* Active item default + hover - must come AFTER regular hover */
|
||||
html:not(.dark) .hextra-sidebar-item[data-active="true"] a,
|
||||
html:not(.dark) .hextra-sidebar-item[data-active="true"] a span,
|
||||
html:not(.dark) .hextra-sidebar-item[data-active="true"] a:hover,
|
||||
html:not(.dark) .hextra-sidebar-item[data-active="true"] a:hover span {
|
||||
background-color: coral !important;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
|
||||
|
||||
html.dark body {
|
||||
background-color: #1e1e1e !important;
|
||||
}
|
||||
|
||||
html.dark main {
|
||||
background-color: #1e1e1e !important;
|
||||
background-color: #252525 !important;
|
||||
}
|
||||
|
||||
html.dark .hx\:dark\:shadow-\[0_-12px_16px_\#111\] {
|
||||
@ -73,14 +107,7 @@ html.dark .hx\:dark\:shadow-\[0_-12px_16px_\#111\] {
|
||||
|
||||
html.dark .hx\:dark\:bg-dark {
|
||||
background-color: #1e1e1e !important;
|
||||
}
|
||||
|
||||
html.dark #backToTop {
|
||||
color: #e0e0e0 !important;
|
||||
}
|
||||
|
||||
html.dark #backToTop:hover {
|
||||
color: white !important;
|
||||
border-color: grey !important;
|
||||
}
|
||||
|
||||
html.dark h1
|
||||
@ -100,20 +127,24 @@ html.dark h4 {
|
||||
}
|
||||
|
||||
html.dark p {
|
||||
color: #f0f0f0 !important;
|
||||
color: #c0c0c0 !important;
|
||||
}
|
||||
|
||||
html.dark p strong {
|
||||
color: #c4c3a6;
|
||||
}
|
||||
|
||||
html.dark dl,
|
||||
html.dark dl dt code,
|
||||
html.dark dl dd {
|
||||
color: white !important;
|
||||
color: #c0c0c0 !important;
|
||||
background-color: #444444 !important;
|
||||
}
|
||||
|
||||
html.dark code,
|
||||
html.dark pre,
|
||||
html.dark pre code {
|
||||
color: lightyellow !important;
|
||||
color: #c0c0c0 !important;
|
||||
background-color: #444444 !important;
|
||||
}
|
||||
|
||||
@ -129,19 +160,37 @@ html.dark .hx\:font-extrabold {
|
||||
|
||||
/* inactive */
|
||||
html.dark .hx\:text-gray-500 {
|
||||
color: lightgrey !important;
|
||||
color: #c0c0c0 !important;
|
||||
}
|
||||
|
||||
/* active */
|
||||
html.dark .hextra-sidebar-active-item {
|
||||
color: white !important;
|
||||
color: #c0c0c0 !important;
|
||||
}
|
||||
|
||||
html.dark .hextra-code-block .highlight .chroma span.p {
|
||||
color: #c0c0c0;
|
||||
}
|
||||
|
||||
html.dark .content p.red-text {
|
||||
color: salmon !important;
|
||||
}
|
||||
|
||||
/* Regular item hover */
|
||||
html.dark .hextra-sidebar-item a:hover,
|
||||
html.dark .hextra-sidebar-item a:hover span {
|
||||
background-color: rgb(250, 195, 175) !important;
|
||||
color: black !important;
|
||||
}
|
||||
|
||||
/* Active item default + hover - must come AFTER regular hover */
|
||||
html.dark .hextra-sidebar-item[data-active="true"] a,
|
||||
html.dark .hextra-sidebar-item[data-active="true"] a span,
|
||||
html.dark .hextra-sidebar-item[data-active="true"] a:hover,
|
||||
html.dark .hextra-sidebar-item[data-active="true"] a:hover span {
|
||||
background-color: rgb(177, 87, 54) !important;
|
||||
color: #e0e0e0 !important;
|
||||
}
|
||||
|
||||
/* Common definitions */
|
||||
|
||||
@ -160,20 +209,20 @@ html.dark .content p.red-text {
|
||||
}
|
||||
|
||||
/* Regular item hover */
|
||||
.hextra-sidebar-item a:hover,
|
||||
/* .hextra-sidebar-item a:hover,
|
||||
.hextra-sidebar-item a:hover span {
|
||||
background-color: rgb(250, 195, 175) !important;
|
||||
color: black !important;
|
||||
}
|
||||
} */
|
||||
|
||||
/* Active item default + hover - must come AFTER regular hover */
|
||||
.hextra-sidebar-item[data-active="true"] a,
|
||||
/* .hextra-sidebar-item[data-active="true"] a,
|
||||
.hextra-sidebar-item[data-active="true"] a span,
|
||||
.hextra-sidebar-item[data-active="true"] a:hover,
|
||||
.hextra-sidebar-item[data-active="true"] a:hover span {
|
||||
background-color: coral !important;
|
||||
color: #ffffff !important;
|
||||
}
|
||||
background-color: rgb(177, 87, 54) !important;
|
||||
color: #e0e0e0 !important;
|
||||
} */
|
||||
|
||||
.content ul li {
|
||||
font-family: Roboto, sans-serif !important;
|
||||
|
||||
@ -1,79 +0,0 @@
|
||||
/* Generated using: hugo gen chromastyles --style=github-dark */
|
||||
|
||||
/* Background */ .bg { color:#e6edf3;background-color:#0d1117; }
|
||||
/* PreWrapper */ .chroma { color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none; }
|
||||
/* Error */ .chroma .err { color:#f85149 }
|
||||
/* LineLink */ .chroma .lnlinks { outline:none;text-decoration:none;color:inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color:#6e7681 }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679 }
|
||||
/* LineNumbers */ .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6e7681 }
|
||||
/* Line */ .chroma .line { display:flex; }
|
||||
/* Keyword */ .chroma .k { color:#ff7b72 }
|
||||
/* KeywordConstant */ .chroma .kc { color:#79c0ff }
|
||||
/* KeywordDeclaration */ .chroma .kd { color:#ff7b72 }
|
||||
/* KeywordNamespace */ .chroma .kn { color:#ff7b72 }
|
||||
/* KeywordPseudo */ .chroma .kp { color:#79c0ff }
|
||||
/* KeywordReserved */ .chroma .kr { color:#ff7b72 }
|
||||
/* KeywordType */ .chroma .kt { color:#ff7b72 }
|
||||
/* NameClass */ .chroma .nc { color:#f0883e;font-weight:bold }
|
||||
/* NameConstant */ .chroma .no { color:#79c0ff;font-weight:bold }
|
||||
/* NameDecorator */ .chroma .nd { color:#d2a8ff;font-weight:bold }
|
||||
/* NameEntity */ .chroma .ni { color:#ffa657 }
|
||||
/* NameException */ .chroma .ne { color:#f0883e;font-weight:bold }
|
||||
/* NameLabel */ .chroma .nl { color:#79c0ff;font-weight:bold }
|
||||
/* NameNamespace */ .chroma .nn { color:#ff7b72 }
|
||||
/* NameProperty */ .chroma .py { color:#79c0ff }
|
||||
/* NameTag */ .chroma .nt { color:#7ee787 }
|
||||
/* NameVariable */ .chroma .nv { color:#79c0ff }
|
||||
/* NameVariableClass */ .chroma .vc { color:#79c0ff }
|
||||
/* NameVariableGlobal */ .chroma .vg { color:#79c0ff }
|
||||
/* NameVariableInstance */ .chroma .vi { color:#79c0ff }
|
||||
/* NameVariableMagic */ .chroma .vm { color:#79c0ff }
|
||||
/* NameFunction */ .chroma .nf { color:#d2a8ff;font-weight:bold }
|
||||
/* NameFunctionMagic */ .chroma .fm { color:#d2a8ff;font-weight:bold }
|
||||
/* Literal */ .chroma .l { color:#a5d6ff }
|
||||
/* LiteralDate */ .chroma .ld { color:#79c0ff }
|
||||
/* LiteralString */ .chroma .s { color:#a5d6ff }
|
||||
/* LiteralStringAffix */ .chroma .sa { color:#79c0ff }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color:#a5d6ff }
|
||||
/* LiteralStringChar */ .chroma .sc { color:#a5d6ff }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color:#79c0ff }
|
||||
/* LiteralStringDoc */ .chroma .sd { color:#a5d6ff }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color:#a5d6ff }
|
||||
/* LiteralStringEscape */ .chroma .se { color:#79c0ff }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color:#79c0ff }
|
||||
/* LiteralStringInterpol */ .chroma .si { color:#a5d6ff }
|
||||
/* LiteralStringOther */ .chroma .sx { color:#a5d6ff }
|
||||
/* LiteralStringRegex */ .chroma .sr { color:#79c0ff }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color:#a5d6ff }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color:#a5d6ff }
|
||||
/* LiteralNumber */ .chroma .m { color:#a5d6ff }
|
||||
/* LiteralNumberBin */ .chroma .mb { color:#a5d6ff }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color:#a5d6ff }
|
||||
/* LiteralNumberHex */ .chroma .mh { color:#a5d6ff }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color:#a5d6ff }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color:#a5d6ff }
|
||||
/* LiteralNumberOct */ .chroma .mo { color:#a5d6ff }
|
||||
/* Operator */ .chroma .o { color:#ff7b72;font-weight:bold }
|
||||
/* OperatorWord */ .chroma .ow { color:#ff7b72;font-weight:bold }
|
||||
/* Comment */ .chroma .c { color:#8b949e;font-style:italic }
|
||||
/* CommentHashbang */ .chroma .ch { color:#8b949e;font-style:italic }
|
||||
/* CommentMultiline */ .chroma .cm { color:#8b949e;font-style:italic }
|
||||
/* CommentSingle */ .chroma .c1 { color:#8b949e;font-style:italic }
|
||||
/* CommentSpecial */ .chroma .cs { color:#8b949e;font-weight:bold;font-style:italic }
|
||||
/* CommentPreproc */ .chroma .cp { color:#8b949e;font-weight:bold;font-style:italic }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color:#8b949e;font-weight:bold;font-style:italic }
|
||||
/* GenericDeleted */ .chroma .gd { color:#ffa198;background-color:#490202 }
|
||||
/* GenericEmph */ .chroma .ge { font-style:italic }
|
||||
/* GenericError */ .chroma .gr { color:#ffa198 }
|
||||
/* GenericHeading */ .chroma .gh { color:#79c0ff;font-weight:bold }
|
||||
/* GenericInserted */ .chroma .gi { color:#56d364;background-color:#0f5323 }
|
||||
/* GenericOutput */ .chroma .go { color:#8b949e }
|
||||
/* GenericPrompt */ .chroma .gp { color:#8b949e }
|
||||
/* GenericStrong */ .chroma .gs { font-weight:bold }
|
||||
/* GenericSubheading */ .chroma .gu { color:#79c0ff }
|
||||
/* GenericTraceback */ .chroma .gt { color:#ff7b72 }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration:underline }
|
||||
/* TextWhitespace */ .chroma .w { color:#6e7681 }
|
||||
@ -1,74 +0,0 @@
|
||||
/* Generated using: hugo gen chromastyles --style=github */
|
||||
|
||||
/* Background */ .bg { background-color:#f7f7f7; }
|
||||
/* PreWrapper */ .chroma { background-color:#f7f7f7;-webkit-text-size-adjust:none; }
|
||||
/* Error */ .chroma .err { color:#f6f8fa;background-color:#82071e }
|
||||
/* LineLink */ .chroma .lnlinks { outline:none;text-decoration:none;color:inherit }
|
||||
/* LineTableTD */ .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; }
|
||||
/* LineTable */ .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; }
|
||||
/* LineHighlight */ .chroma .hl { background-color:#dedede }
|
||||
/* LineNumbersTable */ .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f }
|
||||
/* LineNumbers */ .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f }
|
||||
/* Line */ .chroma .line { display:flex; }
|
||||
/* Keyword */ .chroma .k { color:#cf222e }
|
||||
/* KeywordConstant */ .chroma .kc { color:#cf222e }
|
||||
/* KeywordDeclaration */ .chroma .kd { color:#cf222e }
|
||||
/* KeywordNamespace */ .chroma .kn { color:#cf222e }
|
||||
/* KeywordPseudo */ .chroma .kp { color:#cf222e }
|
||||
/* KeywordReserved */ .chroma .kr { color:#cf222e }
|
||||
/* KeywordType */ .chroma .kt { color:#cf222e }
|
||||
/* NameAttribute */ .chroma .na { color:#1f2328 }
|
||||
/* NameClass */ .chroma .nc { color:#1f2328 }
|
||||
/* NameConstant */ .chroma .no { color:#0550ae }
|
||||
/* NameDecorator */ .chroma .nd { color:#0550ae }
|
||||
/* NameEntity */ .chroma .ni { color:#6639ba }
|
||||
/* NameLabel */ .chroma .nl { color:#900;font-weight:bold }
|
||||
/* NameNamespace */ .chroma .nn { color:#24292e }
|
||||
/* NameOther */ .chroma .nx { color:#1f2328 }
|
||||
/* NameTag */ .chroma .nt { color:#0550ae }
|
||||
/* NameBuiltin */ .chroma .nb { color:#6639ba }
|
||||
/* NameBuiltinPseudo */ .chroma .bp { color:#6a737d }
|
||||
/* NameVariable */ .chroma .nv { color:#953800 }
|
||||
/* NameVariableClass */ .chroma .vc { color:#953800 }
|
||||
/* NameVariableGlobal */ .chroma .vg { color:#953800 }
|
||||
/* NameVariableInstance */ .chroma .vi { color:#953800 }
|
||||
/* NameVariableMagic */ .chroma .vm { color:#953800 }
|
||||
/* NameFunction */ .chroma .nf { color:#6639ba }
|
||||
/* NameFunctionMagic */ .chroma .fm { color:#6639ba }
|
||||
/* LiteralString */ .chroma .s { color:#0a3069 }
|
||||
/* LiteralStringAffix */ .chroma .sa { color:#0a3069 }
|
||||
/* LiteralStringBacktick */ .chroma .sb { color:#0a3069 }
|
||||
/* LiteralStringChar */ .chroma .sc { color:#0a3069 }
|
||||
/* LiteralStringDelimiter */ .chroma .dl { color:#0a3069 }
|
||||
/* LiteralStringDoc */ .chroma .sd { color:#0a3069 }
|
||||
/* LiteralStringDouble */ .chroma .s2 { color:#0a3069 }
|
||||
/* LiteralStringEscape */ .chroma .se { color:#0a3069 }
|
||||
/* LiteralStringHeredoc */ .chroma .sh { color:#0a3069 }
|
||||
/* LiteralStringInterpol */ .chroma .si { color:#0a3069 }
|
||||
/* LiteralStringOther */ .chroma .sx { color:#0a3069 }
|
||||
/* LiteralStringRegex */ .chroma .sr { color:#0a3069 }
|
||||
/* LiteralStringSingle */ .chroma .s1 { color:#0a3069 }
|
||||
/* LiteralStringSymbol */ .chroma .ss { color:#032f62 }
|
||||
/* LiteralNumber */ .chroma .m { color:#0550ae }
|
||||
/* LiteralNumberBin */ .chroma .mb { color:#0550ae }
|
||||
/* LiteralNumberFloat */ .chroma .mf { color:#0550ae }
|
||||
/* LiteralNumberHex */ .chroma .mh { color:#0550ae }
|
||||
/* LiteralNumberInteger */ .chroma .mi { color:#0550ae }
|
||||
/* LiteralNumberIntegerLong */ .chroma .il { color:#0550ae }
|
||||
/* LiteralNumberOct */ .chroma .mo { color:#0550ae }
|
||||
/* Operator */ .chroma .o { color:#0550ae }
|
||||
/* OperatorWord */ .chroma .ow { color:#0550ae }
|
||||
/* Punctuation */ .chroma .p { color:#1f2328 }
|
||||
/* Comment */ .chroma .c { color:#57606a }
|
||||
/* CommentHashbang */ .chroma .ch { color:#57606a }
|
||||
/* CommentMultiline */ .chroma .cm { color:#57606a }
|
||||
/* CommentSingle */ .chroma .c1 { color:#57606a }
|
||||
/* CommentSpecial */ .chroma .cs { color:#57606a }
|
||||
/* CommentPreproc */ .chroma .cp { color:#57606a }
|
||||
/* CommentPreprocFile */ .chroma .cpf { color:#57606a }
|
||||
/* GenericDeleted */ .chroma .gd { color:#82071e;background-color:#ffebe9 }
|
||||
/* GenericEmph */ .chroma .ge { color:#1f2328 }
|
||||
/* GenericInserted */ .chroma .gi { color:#116329;background-color:#dafbe1 }
|
||||
/* GenericOutput */ .chroma .go { color:#1f2328 }
|
||||
/* GenericUnderline */ .chroma .gl { text-decoration:underline }
|
||||
/* TextWhitespace */ .chroma .w { color:#fff }
|
||||
@ -6,9 +6,8 @@ theme = 'hextra'
|
||||
|
||||
[markup]
|
||||
[markup.highlight]
|
||||
noClasses = false
|
||||
style = "plaintext"
|
||||
codeFences = false
|
||||
noClasses = false # Must be false to use external CSS
|
||||
style = "github"
|
||||
|
||||
[markup.goldmark.renderer]
|
||||
unsafe = true
|
||||
|
||||
84
hugo/layouts/_partials/head.html
Normal file
84
hugo/layouts/_partials/head.html
Normal file
@ -0,0 +1,84 @@
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
{{- $noindex := .Params.noindex | default false -}}
|
||||
{{ if and (hugo.IsProduction) (not $noindex) -}}
|
||||
<meta name="robots" content="index, follow" />
|
||||
{{ else -}}
|
||||
<meta name="robots" content="noindex, nofollow" />
|
||||
{{ end -}}
|
||||
{{ partialCached "favicons.html" . -}}
|
||||
<title>
|
||||
{{- if .IsHome -}}
|
||||
{{ .Site.Title -}}
|
||||
{{ else -}}
|
||||
{{ with .Title }}{{ . }} – {{ end -}}
|
||||
{{ .Site.Title -}}
|
||||
{{ end -}}
|
||||
</title>
|
||||
<meta name="description" content="{{ partial "utils/page-description.html" . }}" />
|
||||
|
||||
{{- with .Params.canonical -}}
|
||||
<link rel="canonical" href="{{ . }}" itemprop="url" />
|
||||
{{- else -}}
|
||||
<link rel="canonical" href="{{ .Permalink }}" itemprop="url" />
|
||||
{{- end -}}
|
||||
|
||||
{{- partial "opengraph.html" . -}}
|
||||
{{- partial "schema.html" . -}}
|
||||
{{- partial "twitter_cards.html" . -}}
|
||||
|
||||
{{- $mainCss := resources.Get "css/compiled/main.css" -}}
|
||||
{{- $customCss := resources.Get "css/custom.css" -}}
|
||||
{{- $variablesCss := resources.Get "css/variables.css" | resources.ExecuteAsTemplate "css/variables.css" . -}}
|
||||
|
||||
{{- /* Production build */ -}}
|
||||
{{- if hugo.IsProduction }}
|
||||
{{- $styles := slice $variablesCss $mainCss $customCss | resources.Concat "css/compiled/main.css" | minify | fingerprint }}
|
||||
<link rel="preload" href="{{ $styles.RelPermalink }}" as="style" integrity="{{ $styles.Data.Integrity }}" />
|
||||
<link href="{{ $styles.RelPermalink }}" rel="stylesheet" integrity="{{ $styles.Data.Integrity }}" />
|
||||
|
||||
{{- /* Theme development mode (non-production + theme environment) */ -}}
|
||||
{{- else if eq hugo.Environment "theme" }}
|
||||
{{- $devStyles := resources.Get "css/styles.css" | postCSS (dict "inlineImports" true) }}
|
||||
<link href="{{ $devStyles.RelPermalink }}" rel="stylesheet" />
|
||||
<link href="{{ $variablesCss.RelPermalink }}" rel="stylesheet" />
|
||||
<link href="{{ $customCss.RelPermalink }}" rel="stylesheet" />
|
||||
|
||||
{{- /* User local development */ -}}
|
||||
{{- else }}
|
||||
{{- $styles := resources.Get "css/compiled/main.css" -}}
|
||||
<link href="{{ $styles.RelPermalink }}" rel="stylesheet" />
|
||||
<link href="{{ $variablesCss.RelPermalink }}" rel="stylesheet" />
|
||||
<link href="{{ $customCss.RelPermalink }}" rel="stylesheet" />
|
||||
{{- end }}
|
||||
|
||||
{{ partial "components/analytics/analytics.html" . }}
|
||||
|
||||
{{- $scriptsHead := slice -}}
|
||||
{{- range resources.Match "js/head/*.js" -}}
|
||||
{{ $scriptsHead = $scriptsHead | append (resources.ExecuteAsTemplate .Name $ .) }}
|
||||
{{- end -}}
|
||||
|
||||
{{- $scripts := $scriptsHead | resources.Concat "js/main-head.js" -}}
|
||||
|
||||
{{- if hugo.IsProduction -}}
|
||||
{{- $scripts = $scripts | minify | fingerprint -}}
|
||||
{{- end -}}
|
||||
<script src="{{ $scripts.RelPermalink }}" integrity="{{ $scripts.Data.Integrity }}"></script>
|
||||
|
||||
<!-- Math engine -->
|
||||
{{ $noop := .WordCount -}}
|
||||
{{- $engine := site.Params.math.engine | default "katex" -}}
|
||||
{{ if and (.Page.Store.Get "hasMath") (eq $engine "katex") -}}
|
||||
{{ partialCached "scripts/katex.html" . -}}
|
||||
{{ else if and (.Page.Store.Get "hasMath") (eq $engine "mathjax") -}}
|
||||
{{ partialCached "scripts/mathjax.html" . -}}
|
||||
{{ end -}}
|
||||
|
||||
{{ partial "utils/page-width-override.html" . }}
|
||||
{{ partial "custom/head-end.html" . -}}
|
||||
|
||||
<link rel="stylesheet" href="/css/syntax-light.css" media="(prefers-color-scheme: light)">
|
||||
<link rel="stylesheet" href="/css/syntax-dark.css" media="(prefers-color-scheme: dark)">
|
||||
</head>
|
||||
@ -1,10 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="refresh" content="0; url={{ .Site.BaseURL }}docs/">
|
||||
<link rel="canonical" href="{{ .Site.BaseURL }}docs/">
|
||||
<script>window.location.replace("{{ .Site.BaseURL }}docs/");</script>
|
||||
</head>
|
||||
<body>
|
||||
<a href="{{ .Site.BaseURL }}docs/">Click here</a>
|
||||
<a href="{{ .Site.BaseURL }}docs/">Redirecting…</a>
|
||||
</body>
|
||||
</html>
|
||||
79
hugo/static/css/syntax-dark.css
Normal file
79
hugo/static/css/syntax-dark.css
Normal file
@ -0,0 +1,79 @@
|
||||
/* Generated using: hugo gen chromastyles --style=github-dark */
|
||||
|
||||
/* Background */ .bg { color:#e6edf3;background-color:#0d1117; }
|
||||
/* PreWrapper */ .highlight .chroma { color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none; }
|
||||
/* Error */ .highlight .chroma .err { color:#f85149 }
|
||||
/* LineLink */ .highlight .chroma .lnlinks { outline:none;text-decoration:none;color:inherit }
|
||||
/* LineTableTD */ .highlight .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; }
|
||||
/* LineTable */ .highlight .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; }
|
||||
/* LineHighlight */ .highlight .chroma .hl { background-color:#6e7681 }
|
||||
/* LineNumbersTable */ .highlight .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679 }
|
||||
/* LineNumbers */ .highlight .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6e7681 }
|
||||
/* Line */ .highlight .chroma .line { display:flex; }
|
||||
/* Keyword */ .highlight .chroma .k { color:#ff7b72; font-weight: normal; }
|
||||
/* KeywordConstant */ .highlight .chroma .kc { color:#79c0ff; font-weight: normal; }
|
||||
/* KeywordDeclaration */ .highlight .chroma .kd { color:#ff7b72; font-weight: normal; }
|
||||
/* KeywordNamespace */ .highlight .chroma .kn { color:#ff7b72; font-weight: normal; }
|
||||
/* KeywordPseudo */ .highlight .chroma .kp { color:#79c0ff; font-weight: normal; }
|
||||
/* KeywordReserved */ .highlight .chroma .kr { color:#ff7b72; font-weight: normal; }
|
||||
/* KeywordType */ .highlight .chroma .kt { color:#ff7b72; font-weight: normal; }
|
||||
/* NameClass */ .highlight .chroma .nc { color:#f0883e }
|
||||
/* NameConstant */ .highlight .chroma .no { color:#79c0ff }
|
||||
/* NameDecorator */ .highlight .chroma .nd { color:#d2a8ff }
|
||||
/* NameEntity */ .highlight .chroma .ni { color:#ffa657 }
|
||||
/* NameException */ .highlight .chroma .ne { color:#f0883e }
|
||||
/* NameLabel */ .highlight .chroma .nl { color:#79c0ff }
|
||||
/* NameNamespace */ .highlight .chroma .nn { color:#ff7b72 }
|
||||
/* NameProperty */ .highlight .chroma .py { color:#79c0ff }
|
||||
/* NameTag */ .highlight .chroma .nt { color:#7ee787 }
|
||||
/* NameVariable */ .highlight .chroma .nv { color:#79c0ff }
|
||||
/* NameVariableClass */ .highlight .chroma .vc { color:#79c0ff }
|
||||
/* NameVariableGlobal */ .highlight .chroma .vg { color:#79c0ff }
|
||||
/* NameVariableInstance */ .highlight .chroma .vi { color:#79c0ff }
|
||||
/* NameVariableMagic */ .highlight .chroma .vm { color:#79c0ff }
|
||||
/* NameFunction */ .highlight .chroma .nf { color:#d2a8ff }
|
||||
/* NameFunctionMagic */ .highlight .chroma .fm { color:#d2a8ff }
|
||||
/* Literal */ .highlight .chroma .l { color:#a5d6ff }
|
||||
/* LiteralDate */ .highlight .chroma .ld { color:#79c0ff }
|
||||
/* LiteralString */ .highlight .chroma .s { color:#a5d6ff }
|
||||
/* LiteralStringAffix */ .highlight .chroma .sa { color:#79c0ff }
|
||||
/* LiteralStringBacktick */ .highlight .chroma .sb { color:#a5d6ff }
|
||||
/* LiteralStringChar */ .highlight .chroma .sc { color:#a5d6ff }
|
||||
/* LiteralStringDelimiter */ .highlight .chroma .dl { color:#79c0ff }
|
||||
/* LiteralStringDoc */ .highlight .chroma .sd { color:#a5d6ff }
|
||||
/* LiteralStringDouble */ .highlight .chroma .s2 { color:#a5d6ff }
|
||||
/* LiteralStringEscape */ .highlight .chroma .se { color:#79c0ff }
|
||||
/* LiteralStringHeredoc */ .highlight .chroma .sh { color:#79c0ff }
|
||||
/* LiteralStringInterpol */ .highlight .chroma .si { color:#a5d6ff }
|
||||
/* LiteralStringOther */ .highlight .chroma .sx { color:#a5d6ff }
|
||||
/* LiteralStringRegex */ .highlight .chroma .sr { color:#79c0ff }
|
||||
/* LiteralStringSingle */ .highlight .chroma .s1 { color:#a5d6ff }
|
||||
/* LiteralStringSymbol */ .highlight .chroma .ss { color:#a5d6ff }
|
||||
/* LiteralNumber */ .highlight .chroma .m { color:#a5d6ff }
|
||||
/* LiteralNumberBin */ .highlight .chroma .mb { color:#a5d6ff }
|
||||
/* LiteralNumberFloat */ .highlight .chroma .mf { color:#a5d6ff }
|
||||
/* LiteralNumberHex */ .highlight .chroma .mh { color:#a5d6ff }
|
||||
/* LiteralNumberInteger */ .highlight .chroma .mi { color:#a5d6ff }
|
||||
/* LiteralNumberIntegerLong */ .highlight .chroma .il { color:#a5d6ff }
|
||||
/* LiteralNumberOct */ .highlight .chroma .mo { color:#a5d6ff }
|
||||
/* Operator */ .highlight .chroma .o { color:#ff7b72 }
|
||||
/* OperatorWord */ .highlight .chroma .ow { color:#ff7b72 }
|
||||
/* Comment */ .highlight .chroma .c { color:#8b949e;font-style:italic }
|
||||
/* CommentHashbang */ .highlight .chroma .ch { color:#8b949e;font-style:italic }
|
||||
/* CommentMultiline */ .highlight .chroma .cm { color:#8b949e;font-style:italic }
|
||||
/* CommentSingle */ .highlight .chroma .c1 { color:#8b949e;font-style:italic }
|
||||
/* CommentSpecial */ .highlight .chroma .cs { color:#8b949e;font-style:italic }
|
||||
/* CommentPreproc */ .highlight .chroma .cp { color:#8b949e;font-style:italic }
|
||||
/* CommentPreprocFile */ .highlight .chroma .cpf { color:#8b949e;font-style:italic }
|
||||
/* GenericDeleted */ .highlight .chroma .gd { color:#ffa198;background-color:#490202 }
|
||||
/* GenericEmph */ .highlight .chroma .ge { font-style:italic }
|
||||
/* GenericError */ .highlight .chroma .gr { color:#ffa198 }
|
||||
/* GenericHeading */ .highlight .chroma .gh { color:#79c0ff }
|
||||
/* GenericInserted */ .highlight .chroma .gi { color:#56d364;background-color:#0f5323 }
|
||||
/* GenericOutput */ .highlight .chroma .go { color:#8b949e }
|
||||
/* GenericPrompt */ .highlight .chroma .gp { color:#8b949e }
|
||||
/* GenericStrong */ .highlight .chroma .gs { font-weight:bold }
|
||||
/* GenericSubheading */ .highlight .chroma .gu { color:#79c0ff }
|
||||
/* GenericTraceback */ .highlight .chroma .gt { color:#ff7b72 }
|
||||
/* GenericUnderline */ .highlight .chroma .gl { text-decoration:underline }
|
||||
/* TextWhitespace */ .highlight .chroma .w { color:#6e7681 }
|
||||
74
hugo/static/css/syntax-light.css
Normal file
74
hugo/static/css/syntax-light.css
Normal file
@ -0,0 +1,74 @@
|
||||
/* Generated using: hugo gen chromastyles --style=github */
|
||||
|
||||
/* Background */ .bg { background-color:#f7f7f7; }
|
||||
/* PreWrapper */ .highlight .chroma { background-color:#f7f7f7;-webkit-text-size-adjust:none; }
|
||||
/* Error */ .highlight .chroma .err { color:#f6f8fa;background-color:#82071e }
|
||||
/* LineLink */ .highlight .chroma .lnlinks { outline:none;text-decoration:none;color:inherit }
|
||||
/* LineTableTD */ .highlight .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; }
|
||||
/* LineTable */ .highlight .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; }
|
||||
/* LineHighlight */ .highlight .chroma .hl { background-color:#dedede }
|
||||
/* LineNumbersTable */ .highlight .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f }
|
||||
/* LineNumbers */ .highlight .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f }
|
||||
/* Line */ .highlight .chroma .line { display:flex; }
|
||||
/* Keyword */ .highlight .chroma .k { color:#cf222e }
|
||||
/* KeywordConstant */ .highlight .chroma .kc { color:#cf222e }
|
||||
/* KeywordDefont-weightaration */ .highlight .chroma .kd { color:#cf222e }
|
||||
/* KeywordNamespace */ .highlight .chroma .kn { color:#cf222e }
|
||||
/* KeywordPseudo */ .highlight .chroma .kp { color:#cf222e }
|
||||
/* KeywordReserved */ .highlight .chroma .kr { color:#cf222e }
|
||||
/* KeywordType */ .highlight .chroma .kt { color:#cf222e }
|
||||
/* NameAttribute */ .highlight .chroma .na { color:#1f2328 }
|
||||
/* Namefont-weightass */ .highlight .chroma .nc { color:#1663c0 }
|
||||
/* NameConstant */ .highlight .chroma .no { color:#0550ae }
|
||||
/* NameDecorator */ .highlight .chroma .nd { color:#0550ae }
|
||||
/* NameEntity */ .highlight .chroma .ni { color:#6639ba }
|
||||
/* NameLabel */ .highlight .chroma .nl { color:#900 }
|
||||
/* NameNamespace */ .highlight .chroma .nn { color:#24292e }
|
||||
/* NameOther */ .highlight .chroma .nx { color:#1f2328 }
|
||||
/* NameTag */ .highlight .chroma .nt { color:#0550ae }
|
||||
/* NameBuiltin */ .highlight .chroma .nb { color:#6639ba }
|
||||
/* NameBuiltinPseudo */ .highlight .chroma .bp { color:#6a737d }
|
||||
/* NameVariable */ .highlight .chroma .nv { color:#953800 }
|
||||
/* NameVariablefont-weightass */ .highlight .chroma .vc { color:#953800 }
|
||||
/* NameVariableGlobal */ .highlight .chroma .vg { color:#953800 }
|
||||
/* NameVariableInstance */ .highlight .chroma .vi { color:#953800 }
|
||||
/* NameVariableMagic */ .highlight .chroma .vm { color:#953800 }
|
||||
/* NameFunction */ .highlight .chroma .nf { color:#6639ba }
|
||||
/* NameFunctionMagic */ .highlight .chroma .fm { color:#6639ba }
|
||||
/* LiteralString */ .highlight .chroma .s { color:#0a3069 }
|
||||
/* LiteralStringAffix */ .highlight .chroma .sa { color:#0a3069 }
|
||||
/* LiteralStringBacktick */ .highlight .chroma .sb { color:#0a3069 }
|
||||
/* LiteralStringChar */ .highlight .chroma .sc { color:#0a3069 }
|
||||
/* LiteralStringDelimiter */ .highlight .chroma .dl { color:#0a3069 }
|
||||
/* LiteralStringDoc */ .highlight .chroma .sd { color:#0a3069 }
|
||||
/* LiteralStringDouble */ .highlight .chroma .s2 { color:#0a3069 }
|
||||
/* LiteralStringEscape */ .highlight .chroma .se { color:#0a3069 }
|
||||
/* LiteralStringHeredoc */ .highlight .chroma .sh { color:#0a3069 }
|
||||
/* LiteralStringInterpol */ .highlight .chroma .si { color:#0a3069 }
|
||||
/* LiteralStringOther */ .highlight .chroma .sx { color:#0a3069 }
|
||||
/* LiteralStringRegex */ .highlight .chroma .sr { color:#0a3069 }
|
||||
/* LiteralStringSingle */ .highlight .chroma .s1 { color:#0a3069 }
|
||||
/* LiteralStringSymbol */ .highlight .chroma .ss { color:#032f62 }
|
||||
/* LiteralNumber */ .highlight .chroma .m { color:#0550ae }
|
||||
/* LiteralNumberBin */ .highlight .chroma .mb { color:#0550ae }
|
||||
/* LiteralNumberFloat */ .highlight .chroma .mf { color:#0550ae }
|
||||
/* LiteralNumberHex */ .highlight .chroma .mh { color:#0550ae }
|
||||
/* LiteralNumberInteger */ .highlight .chroma .mi { color:#0550ae }
|
||||
/* LiteralNumberIntegerLong */ .highlight .chroma .il { color:#0550ae }
|
||||
/* LiteralNumberOct */ .highlight .chroma .mo { color:#0550ae }
|
||||
/* Operator */ .highlight .chroma .o { color:#0550ae }
|
||||
/* OperatorWord */ .highlight .chroma .ow { color:#0550ae }
|
||||
/* Punctuation */ .highlight .chroma .p { color:#1f2328 }
|
||||
/* Comment */ .highlight .chroma .c { color:#57606a }
|
||||
/* CommentHashbang */ .highlight .chroma .ch { color:#57606a }
|
||||
/* CommentMultiline */ .highlight .chroma .cm { color:#57606a }
|
||||
/* CommentSingle */ .highlight .chroma .c1 { color:#57606a }
|
||||
/* CommentSpecial */ .highlight .chroma .cs { color:#57606a }
|
||||
/* CommentPreproc */ .highlight .chroma .cp { color:#57606a }
|
||||
/* CommentPreprocFile */ .highlight .chroma .cpf { color:#57606a }
|
||||
/* GenericDeleted */ .highlight .chroma .gd { color:#82071e;background-color:#ffebe9 }
|
||||
/* GenericEmph */ .highlight .chroma .ge { color:#1f2328 }
|
||||
/* GenericInserted */ .highlight .chroma .gi { color:#116329;background-color:#dafbe1 }
|
||||
/* GenericOutput */ .highlight .chroma .go { color:#1f2328 }
|
||||
/* GenericUnderline */ .highlight .chroma .gl { text-decoration:underline }
|
||||
/* TextWhitespace */ .highlight .chroma .w { color:#fff }
|
||||
Loading…
x
Reference in New Issue
Block a user