Merge branch 'feature/code-snippet' into develop
This commit is contained in:
commit
414715fc47
8 changed files with 133 additions and 35 deletions
72
_includes/language-alias.html
Normal file
72
_includes/language-alias.html
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
{% comment %}
|
||||||
|
|
||||||
|
Convert the alias of the syntax language to the official name
|
||||||
|
|
||||||
|
See: <https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers>
|
||||||
|
|
||||||
|
{% endcomment %}
|
||||||
|
|
||||||
|
{% assign _lang = include.language | default: '' %}
|
||||||
|
|
||||||
|
{% case _lang %}
|
||||||
|
{% when 'actionscript', 'as', 'as3' %}
|
||||||
|
{{ 'ActionScript' }}
|
||||||
|
{% when 'applescript' %}
|
||||||
|
{{ 'AppleScript' }}
|
||||||
|
{% when 'brightscript', 'bs', 'brs' %}
|
||||||
|
{{ 'BrightScript' }}
|
||||||
|
{% when 'cfscript', 'cfc' %}
|
||||||
|
{{ 'CFScript' }}
|
||||||
|
{% when 'coffeescript', 'coffee', 'coffee-script' %}
|
||||||
|
{{ 'CoffeeScript' }}
|
||||||
|
{% when 'cs', 'csharp' %}
|
||||||
|
{{ 'C#' }}
|
||||||
|
{% when 'erl' %}
|
||||||
|
{{ 'Erlang' }}
|
||||||
|
{% when 'graphql' %}
|
||||||
|
{{ 'GraphQL' }}
|
||||||
|
{% when 'haskell', 'hs' %}
|
||||||
|
{{ 'Haskell' }}
|
||||||
|
{% when 'javascript', 'js' %}
|
||||||
|
{{ 'JavaScript' }}
|
||||||
|
{% when 'make', 'mf', 'gnumake', 'bsdmake' %}
|
||||||
|
{{ 'Makefile' }}
|
||||||
|
{% when 'md', 'mkd' %}
|
||||||
|
{{ 'Markdown' }}
|
||||||
|
{% when 'm' %}
|
||||||
|
{{ 'Matlab' }}
|
||||||
|
{% when 'objective_c', 'objc', 'obj-c', 'obj_c', 'objectivec' %}
|
||||||
|
{{ 'Objective-C' }}
|
||||||
|
{% when 'perl', 'pl' %}
|
||||||
|
{{ 'Perl' }}
|
||||||
|
{% when 'php','php3','php4','php5' %}
|
||||||
|
{{ 'PHP' }}
|
||||||
|
{% when 'plaintext', 'text' %}
|
||||||
|
{{ 'Text' }}
|
||||||
|
{% when 'py' %}
|
||||||
|
{{ 'Python' }}
|
||||||
|
{% when 'rb' %}
|
||||||
|
{{ 'Ruby' }}
|
||||||
|
{% when 'rs','no_run','ignore','should_panic' %}
|
||||||
|
{{ 'Rust' }}
|
||||||
|
{% when 'bash', 'zsh', 'ksh', 'sh' %}
|
||||||
|
{{ 'Shell' }}
|
||||||
|
{% when 'st', 'squeak' %}
|
||||||
|
{{ 'Smalltalk' }}
|
||||||
|
{% when 'tex'%}
|
||||||
|
{{ 'TeX' }}
|
||||||
|
{% when 'latex' %}
|
||||||
|
{{ 'LaTex' }}
|
||||||
|
{% when 'ts', 'typescript' %}
|
||||||
|
{{ 'TypeScript' }}
|
||||||
|
{% when 'vb', 'visualbasic' %}
|
||||||
|
{{ 'Visual Basic' }}
|
||||||
|
{% when 'vue', 'vuejs' %}
|
||||||
|
{{ 'Vue.js' }}
|
||||||
|
{% when 'yml' %}
|
||||||
|
{{ 'YAML' }}
|
||||||
|
{% when 'css', 'html', 'scss', 'ssh', 'toml', 'xml', 'yaml' %}
|
||||||
|
{{ _lang | upcase }}
|
||||||
|
{% else %}
|
||||||
|
{{ _lang | capitalize }}
|
||||||
|
{% endcase %}
|
|
@ -119,16 +119,23 @@
|
||||||
|
|
||||||
{% if _left contains 'file="' %}
|
{% if _left contains 'file="' %}
|
||||||
{% assign _text = _left | split: 'file="' | last | split: '"' | first %}
|
{% assign _text = _left | split: 'file="' | last | split: '"' | first %}
|
||||||
|
{% assign _label_icon = 'far fa-file-code' %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% assign _text = _left | split: 'language-' | last | split: ' ' | first %}
|
{% assign _lang = _left | split: 'language-' | last | split: ' ' | first %}
|
||||||
|
{% capture _text %}{% include language-alias.html language=_lang %}{% endcapture %}
|
||||||
|
{% assign _label_icon = 'fas fa-code small' %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% capture _label %}
|
||||||
|
<span text-data="{{ _text }}"><i class="fa-fw {{ _label_icon }}"></i></span>
|
||||||
|
{% endcapture %}
|
||||||
|
|
||||||
{% assign _new_content = _new_content | append: _snippet
|
{% assign _new_content = _new_content | append: _snippet
|
||||||
| append: '<div class="code-header" text-data="'
|
| append: '<div class="code-header">'
|
||||||
| append: _text
|
| append: _label
|
||||||
| append: '"><button aria-label="copy" data-original-title="'
|
| append: '<button aria-label="copy" title-succeed="'
|
||||||
| append: site.data.locales[lang].post.button.copy_code.succeed
|
| append: site.data.locales[lang].post.button.copy_code.succeed
|
||||||
| append: '"><i class="far fa-clone"></i></button></div>'
|
| append: '"><i class="far fa-clipboard"></i></button></div>'
|
||||||
| append: '<div class="highlight"><code>'
|
| append: '<div class="highlight"><code>'
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ $(function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
$(btnSelector).tooltip({
|
$(btnSelector).tooltip({
|
||||||
trigger: 'click',
|
trigger: 'hover',
|
||||||
placement: 'left'
|
placement: 'left'
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -53,11 +53,12 @@ $(function() {
|
||||||
const ICON_DEFAULT = getIcon(btnSelector);
|
const ICON_DEFAULT = getIcon(btnSelector);
|
||||||
|
|
||||||
function showTooltip(btn) {
|
function showTooltip(btn) {
|
||||||
$(btn).tooltip('show');
|
const succeedTitle = $(btn).attr('title-succeed');
|
||||||
|
$(btn).attr('data-original-title', succeedTitle).tooltip('show');
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideTooltip(btn) {
|
function hideTooltip(btn) {
|
||||||
$(btn).tooltip('hide');
|
$(btn).tooltip('hide').removeAttr('data-original-title');
|
||||||
}
|
}
|
||||||
|
|
||||||
function setSuccessIcon(btn) {
|
function setSuccessIcon(btn) {
|
||||||
|
|
|
@ -172,24 +172,37 @@ div {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
line-height: 1.85rem;
|
line-height: 1.85rem;
|
||||||
|
|
||||||
// text data
|
// icons
|
||||||
&::before {
|
i {
|
||||||
content: attr(text-data);
|
font-size: 1rem;
|
||||||
color: var(--lang-badge-color);
|
color: var(--lang-badge-muted-color);
|
||||||
padding-left: 1em;
|
|
||||||
|
|
||||||
// language
|
&.small {
|
||||||
font-size: 0.75rem;
|
font-size: 70%;
|
||||||
font-weight: 600;
|
margin-left: 0.25rem;
|
||||||
text-transform: uppercase;
|
|
||||||
|
|
||||||
// file name
|
|
||||||
@at-root [file] #{&} {
|
|
||||||
font-size: 0.85rem;
|
|
||||||
text-transform: none;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// the label block
|
||||||
|
span {
|
||||||
|
padding-left: 0.6rem;
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
content: attr(text-data);
|
||||||
|
margin-left: 0.3rem;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
font-weight: 600;
|
||||||
|
color: var(--lang-badge-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
@at-root [file] #{&} > i { // center the file icon
|
||||||
|
position: relative;
|
||||||
|
top: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// clipboard
|
// clipboard
|
||||||
button {
|
button {
|
||||||
border: 1px solid var(--code-header-bg);
|
border: 1px solid var(--code-header-bg);
|
||||||
|
@ -197,28 +210,31 @@ div {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
width: 1.95rem;
|
width: 1.95rem;
|
||||||
background-color: inherit;
|
background-color: inherit;
|
||||||
color: var(--highlight-lineno-color);
|
|
||||||
|
|
||||||
@extend %cursor-pointer;
|
@extend %cursor-pointer;
|
||||||
|
|
||||||
&[timeout] {
|
&[timeout] {
|
||||||
color: var(--clipboard-checked-color);
|
&:hover {
|
||||||
border-color: var(--clipboard-checked-color);
|
border-color: var(--clipboard-checked-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
i {
|
||||||
|
color: var(--clipboard-checked-color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:not([timeout]):hover {
|
&:not([timeout]):hover {
|
||||||
background-color: gray;
|
background-color: rgba(128, 128, 128, 0.37);
|
||||||
color: white;
|
|
||||||
|
i {
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
&:focus {
|
&:focus {
|
||||||
outline: none;
|
outline: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
i {
|
|
||||||
font-size: 0.9rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,7 +75,8 @@
|
||||||
--highlight-lineno-color: #6c6c6d;
|
--highlight-lineno-color: #6c6c6d;
|
||||||
--inline-code-bg: #272822;
|
--inline-code-bg: #272822;
|
||||||
--code-header-bg: #353535;
|
--code-header-bg: #353535;
|
||||||
--lang-badge-color: #6c6c6d;
|
--lang-badge-color: #858586;
|
||||||
|
--lang-badge-muted-color: #6c6c6d;
|
||||||
--clipboard-checked-color: #2bcc2b;
|
--clipboard-checked-color: #2bcc2b;
|
||||||
|
|
||||||
.highlight {
|
.highlight {
|
||||||
|
|
|
@ -72,7 +72,8 @@
|
||||||
--highlight-lineno-color: #c2c6cc;
|
--highlight-lineno-color: #c2c6cc;
|
||||||
--inline-code-bg: #f3f3f3;
|
--inline-code-bg: #f3f3f3;
|
||||||
--code-header-bg: #eaeaea;
|
--code-header-bg: #eaeaea;
|
||||||
--lang-badge-color: #a4a7ab;
|
--lang-badge-color: rgb(128 128 128 / 87%);
|
||||||
|
--lang-badge-muted-color: rgb(128 128 128 / 36%);
|
||||||
--clipboard-checked-color: #43c743;
|
--clipboard-checked-color: #43c743;
|
||||||
|
|
||||||
} // light-syntax
|
} // light-syntax
|
||||||
|
|
2
assets/js/dist/page.min.js
vendored
2
assets/js/dist/page.min.js
vendored
File diff suppressed because one or more lines are too long
2
assets/js/dist/post.min.js
vendored
2
assets/js/dist/post.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue