rawfeed 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +5 -9
- data/_data/resume.yml +34 -0
- data/_includes/layout/data.liquid +7 -1
- data/_includes/layout/head.html +1 -1
- data/_includes/layout/header.html +6 -6
- data/_includes/toc +1 -1
- data/_includes/video +2 -3
- data/_layouts/blog.html +7 -2
- data/_layouts/default.html +111 -8
- data/_layouts/page.html +31 -0
- data/_layouts/post.html +25 -8
- data/_layouts/resume.html +42 -20
- data/_layouts/tag_posts.html +3 -2
- data/_sass/base/_reset.scss +33 -4
- data/_sass/components/_markdown.scss +6 -1
- data/_sass/layouts/_blog.scss +1 -1
- data/_sass/layouts/_page.scss +12 -0
- data/_sass/layouts/_post.scss +17 -23
- data/_sass/layouts/_resume.scss +32 -1
- data/assets/js/terminal.js +4 -1
- data/assets/js/toc.js +2 -0
- data/assets/json/blog_search.json +2 -2
- data/assets/json/datelang.json +290 -0
- data/lib/rawfeed/datelang.rb +101 -0
- data/lib/rawfeed/draft.rb +1 -1
- data/lib/rawfeed/page.rb +2 -1
- data/lib/rawfeed/reading_time.rb +17 -0
- data/lib/rawfeed/version.rb +1 -1
- data/lib/rawfeed.rb +5 -0
- metadata +4 -2
- data/assets/js/blog_search.js +0 -102
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 8592ae30b0051b09cbb61aef70b5d6af2ebc46b5b3b2dba0e21c17b6c1aac881
         | 
| 4 | 
            +
              data.tar.gz: 1d1f85c4ded6ed5742be960c4a84c55c7cdf3a5138a80179b18b2a0745a96258
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 1ce3dd3f7a45c1fcd1b9825f52df2ed0c5d3eb0300dd9d868fa6420bf3ccdcf107f3deca58261d73e7b045baf810cbd67934fcd6da700730152bd9a253559199
         | 
| 7 | 
            +
              data.tar.gz: 4051a9375c9f6c885d6f1645cf398e478778ee00d13622ca1de5bd789b176efcc16c9d06a796d321f5510af06b93b6bbb95158598482f4c4567324ed45e8d771
         | 
    
        data/README.md
    CHANGED
    
    | @@ -3,6 +3,8 @@ | |
| 3 3 | 
             
              <br>
         | 
| 4 4 | 
             
              <small>Rawfeed — A raw Jekyll theme for minimalists</small>
         | 
| 5 5 | 
             
              <br>
         | 
| 6 | 
            +
              <a href="https://badge.fury.io/rb/rawfeed"><img src="https://badge.fury.io/rb/rawfeed.svg" alt="Gem Version" height="18"></a>
         | 
| 7 | 
            +
              <br>
         | 
| 6 8 | 
             
              <a href="https://williamcanin.github.io/rawfeed" target="_blank">Theme Preview</a>
         | 
| 7 9 | 
             
            </p>
         | 
| 8 10 |  | 
| @@ -47,24 +49,18 @@ In the terminal/Command Prompt, run the commands below according to the OS. | |
| 47 49 | 
             
            **Unix:**
         | 
| 48 50 |  | 
| 49 51 | 
             
            ```shell
         | 
| 50 | 
            -
            curl -fsSL https:// | 
| 52 | 
            +
            curl -fsSL https://raw.githubusercontent.com/williamcanin/rawfeed/refs/heads/main/tools/installer/unix/install.sh | sh
         | 
| 51 53 | 
             
            ```
         | 
| 52 54 |  | 
| 53 55 | 
             
            **Windows:**
         | 
| 54 56 |  | 
| 55 57 | 
             
            ```shell
         | 
| 56 | 
            -
            iwr -useb https:// | 
| 58 | 
            +
            iwr -useb https://raw.githubusercontent.com/williamcanin/rawfeed/refs/heads/main/tools/installer/win/install.ps1 | iex
         | 
| 57 59 | 
             
            ```
         | 
| 58 60 |  | 
| 59 61 | 
             
            # Usage
         | 
| 60 62 |  | 
| 61 | 
            -
            ** | 
| 62 | 
            -
             | 
| 63 | 
            -
            ```shell
         | 
| 64 | 
            -
            npm install
         | 
| 65 | 
            -
            ```
         | 
| 66 | 
            -
             | 
| 67 | 
            -
            **(2)** - For **rawfeed** manipulation commands, use:
         | 
| 63 | 
            +
            After installation, run the command below to see the **rawfeed** command menu:
         | 
| 68 64 |  | 
| 69 65 | 
             
            ```shell
         | 
| 70 66 | 
             
            npm run help
         | 
    
        data/_data/resume.yml
    CHANGED
    
    | @@ -141,6 +141,31 @@ body: | |
| 141 141 | 
             
                      - I collaborated with engineering teams to deploy **Keras** and **Matlab** models in production
         | 
| 142 142 | 
             
                      environments, impacting **millions of platform** users.
         | 
| 143 143 |  | 
| 144 | 
            +
              # section: [Certificates]
         | 
| 145 | 
            +
              # Full links will only appear in print mode. Online and PDF modes are clickable.
         | 
| 146 | 
            +
              certificates:
         | 
| 147 | 
            +
                enable: true
         | 
| 148 | 
            +
                caption: Certificates
         | 
| 149 | 
            +
                section:
         | 
| 150 | 
            +
                  - course: LPIC-2
         | 
| 151 | 
            +
                    certificate: https://github.com/williamcanin/rawfeed
         | 
| 152 | 
            +
                    period:
         | 
| 153 | 
            +
                      year: 2020
         | 
| 154 | 
            +
                      hours: 20 hours
         | 
| 155 | 
            +
                    company:
         | 
| 156 | 
            +
                      name: Linux Professional Institute
         | 
| 157 | 
            +
                      site: https://www.lpi.org
         | 
| 158 | 
            +
             | 
| 159 | 
            +
                  - course: LPIC-1
         | 
| 160 | 
            +
                    certificate: https://github.com/williamcanin/rawfeed
         | 
| 161 | 
            +
                    period:
         | 
| 162 | 
            +
                      year: 2018
         | 
| 163 | 
            +
                      hours: 19 hours
         | 
| 164 | 
            +
                    company:
         | 
| 165 | 
            +
                      caption:
         | 
| 166 | 
            +
                      name: Linux Professional Institute
         | 
| 167 | 
            +
                      site: https://www.lpi.org
         | 
| 168 | 
            +
             | 
| 144 169 | 
             
              # section: [Publications]
         | 
| 145 170 | 
             
              # Full links will only appear in print mode. Online and PDF modes are clickable.
         | 
| 146 171 | 
             
              publications:
         | 
| @@ -182,3 +207,12 @@ body: | |
| 182 207 | 
             
                    details: |
         | 
| 183 208 | 
             
                      - I led a class of **Computer Engineering** students in the modern **AI course**.
         | 
| 184 209 | 
             
                      It was over **170 hours** of classes.
         | 
| 210 | 
            +
             | 
| 211 | 
            +
              # section: [Markdown]
         | 
| 212 | 
            +
              # Here you can put text in markdown formatting
         | 
| 213 | 
            +
              markdown:
         | 
| 214 | 
            +
                enable: true
         | 
| 215 | 
            +
                caption: Notes
         | 
| 216 | 
            +
                content: |
         | 
| 217 | 
            +
                  - I led a class of **Computer Engineering** students in the modern **AI course**.
         | 
| 218 | 
            +
                  It was over **170 hours** of classes.
         | 
| @@ -1,3 +1,9 @@ | |
| 1 1 | 
             
            {%- assign project_url = "https://github.com/williamcanin/rawfeed" -%}
         | 
| 2 2 | 
             
            {%- assign theme_name = "rawfeed" -%}
         | 
| 3 | 
            -
            { | 
| 3 | 
            +
            {%- assign data_cv = site.data.cv -%}
         | 
| 4 | 
            +
            {%- assign home_url = "/" | relative_url -%}
         | 
| 5 | 
            +
            {%- assign blog_url = "/blog/" | relative_url -%}
         | 
| 6 | 
            +
            {%- assign search_url = "/blog/?search=open" | relative_url -%}
         | 
| 7 | 
            +
            {%- assign tags_url = "/blog/tags/" | relative_url -%}
         | 
| 8 | 
            +
            {%- assign feed_url = "/feed.xml" | relative_url -%}
         | 
| 9 | 
            +
            {%- assign date_format = site.datelang.format -%}
         | 
    
        data/_includes/layout/head.html
    CHANGED
    
    | @@ -4,7 +4,7 @@ | |
| 4 4 | 
             
              <meta name="viewport" content="width=device-width, initial-scale=1">
         | 
| 5 5 | 
             
              <meta charset="utf-8">
         | 
| 6 6 | 
             
              {%- if page.url == "/" -%}
         | 
| 7 | 
            -
                <title>{{ site.title | default: theme_name }} | {{ site. | 
| 7 | 
            +
                <title>{{ site.title | default: theme_name }} | {{ site.baseurl | prepend: site.url }}</title>
         | 
| 8 8 | 
             
              {%- else -%}
         | 
| 9 9 | 
             
                <title>{{ page.title }} | {{ site.title | default: theme_name }}</title>
         | 
| 10 10 | 
             
              {%- endif -%}
         | 
| @@ -25,9 +25,9 @@ | |
| 25 25 | 
             
                    <div class="container">
         | 
| 26 26 | 
             
                      <div class="row">
         | 
| 27 27 | 
             
                        {%- if index.layout == "blog" -%}
         | 
| 28 | 
            -
                          <span>[ <a class="{% if page.url == "/" or page.url == "/index.html" %}menu-active{% endif %}" href=" | 
| 28 | 
            +
                          <span>[ <a class="{% if page.url == "/" or page.url == "/index.html" %}menu-active{% endif %}" href="{{home_url}}">{{ site.text.menu.blog | default: "blog" | downcase }}</a> ]</span>
         | 
| 29 29 | 
             
                        {%- else -%}
         | 
| 30 | 
            -
                          <span>[ <a class="{% if page.url == "/" or page.url == "/index.html" %}menu-active{% endif %}" href=" | 
| 30 | 
            +
                          <span>[ <a class="{% if page.url == "/" or page.url == "/index.html" %}menu-active{% endif %}" href="{{home_url}}">{{ site.text.menu.home | default: "home" | downcase }}</a> ]</span>
         | 
| 31 31 | 
             
                        {%- endif -%}
         | 
| 32 32 | 
             
                      </div>
         | 
| 33 33 | 
             
                    </div>
         | 
| @@ -86,7 +86,7 @@ | |
| 86 86 | 
             
                  <div class="col-sm d-flex justify-content-center column-bottom">
         | 
| 87 87 | 
             
                  {%- if index.layout == "blog" -%}
         | 
| 88 88 | 
             
                    <span class="blog-menu">menu »
         | 
| 89 | 
            -
                       {%- if site.blog.search.enable -%}<a id="blog-search__btn" class="blog-menu__link" href=" | 
| 89 | 
            +
                       {%- if site.blog.search.enable -%}<a id="blog-search__btn" class="blog-menu__link" href="{{search_url}}">{{ site.text.menu.search | default: "search" }}</a><strong> . </strong>{%- endif -%}<a class="blog-menu__link{% if page.url == "/blog/tags/" or page.url == "/blog/tags/index.html" %} menu-active{% endif %}" href="{{tags_url}}">{{ site.text.menu.tags | default: "tags" }}</a><strong> . </strong>
         | 
| 90 90 | 
             
                    </span>
         | 
| 91 91 | 
             
                    {% assign sorted_pages = site.pages | sort: 'order' %}
         | 
| 92 92 | 
             
                      {%- for item in sorted_pages -%}
         | 
| @@ -96,11 +96,11 @@ | |
| 96 96 | 
             
                          {%- endunless -%}
         | 
| 97 97 | 
             
                        {%- endif -%}
         | 
| 98 98 | 
             
                      {%- endfor -%}
         | 
| 99 | 
            -
                      <a class="blog-menu__link" href=" | 
| 99 | 
            +
                      <a class="blog-menu__link" href="{{feed_url}}">{{ site.text.menu.feed | default: "feed" }}</a><strong> . </strong>
         | 
| 100 100 | 
             
                  {%- else index.layout == "home" -%}
         | 
| 101 101 | 
             
                    {%- if page.url contains "/blog/" -%}
         | 
| 102 102 | 
             
                      <span class="blog-menu">{{ site.text.menu.blog }} »
         | 
| 103 | 
            -
                        <a class="blog-menu__link{% if page.url == "/blog/" or page.url == "/blog/index.html" or page.url contains "/blog/page/" %} menu-active{% endif %}" href=" | 
| 103 | 
            +
                        <a class="blog-menu__link{% if page.url == "/blog/" or page.url == "/blog/index.html" or page.url contains "/blog/page/" %} menu-active{% endif %}" href="{{blog_url}}">posts</a><strong> . </strong>{%- if site.blog.search.enable -%}<a id="blog-search__btn" class="blog-menu__link" href="{{search_url}}">{{ site.text.menu.search | default: "search" }}</a><strong> . </strong>{%- endif -%}<a class="blog-menu__link{% if page.url == "/blog/tags/" or page.url == "/blog/tags/index.html" %} menu-active{% endif %}" href="{{tags_url}}">{{ site.text.menu.tags | default: "tags" }}</a><strong> . </strong><a class="blog-menu__link" href="{{feed_url}}">{{ site.text.menu.feed | default: "feed" }}</a><strong> . </strong>
         | 
| 104 104 | 
             
                      </span>
         | 
| 105 105 | 
             
                    {%- else -%}
         | 
| 106 106 | 
             
                      {%- assign published_pages = site.pages | where_exp:"p","p.path contains '_pages/' and p.published" -%}
         | 
| @@ -109,7 +109,7 @@ | |
| 109 109 | 
             
                      {%- endif -%}
         | 
| 110 110 | 
             
                      {%- if site.pagination.enabled == true -%}
         | 
| 111 111 | 
             
                        {%- if blog_page -%}
         | 
| 112 | 
            -
                          <a href=" | 
| 112 | 
            +
                          <a href="{{blog_url}}">{{ site.text.menu.blog }}</a><strong> . </strong>
         | 
| 113 113 | 
             
                        {%- endif -%}
         | 
| 114 114 | 
             
                        {% assign sorted_pages = site.pages | sort: 'order' %}
         | 
| 115 115 | 
             
                        {%- for item in sorted_pages -%}
         | 
    
        data/_includes/toc
    CHANGED
    
    | @@ -21,7 +21,7 @@ | |
| 21 21 | 
             
              }
         | 
| 22 22 |  | 
| 23 23 | 
             
              function buildTOC(tocEl) {
         | 
| 24 | 
            -
                const selector = tocEl.dataset.tocSelector || '.post-content';
         | 
| 24 | 
            +
                const selector = tocEl.dataset.tocSelector || '.post-content' || '.page-content';
         | 
| 25 25 | 
             
                const maxLevel = parseInt(tocEl.dataset.tocMaxLevel || '3', 10);
         | 
| 26 26 | 
             
                const offset = parseInt(tocEl.dataset.tocScrollOffset || '20', 10);
         | 
| 27 27 | 
             
                const root = document.querySelector(selector);
         | 
    
        data/_includes/video
    CHANGED
    
    | @@ -1,7 +1,6 @@ | |
| 1 | 
            -
            {% assign video_id = include.url | split: "v=" | last | split: "&" | first %}
         | 
| 2 1 | 
             
            <div class="video-wrapper">
         | 
| 3 | 
            -
              <iframe src=" | 
| 4 | 
            -
                frameborder="0" allowfullscreen>
         | 
| 2 | 
            +
              <iframe src="{{ include.url }}" title="{{ include.title | default: 'Video' }}"
         | 
| 3 | 
            +
                frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen>
         | 
| 5 4 | 
             
              </iframe>
         | 
| 6 5 | 
             
              <noscript>
         | 
| 7 6 | 
             
                <p>The video is not available for embedding. Watch it on <a href="{{ include.url }}" target="_blank">YouTube</a>.
         | 
    
        data/_layouts/blog.html
    CHANGED
    
    | @@ -2,6 +2,8 @@ | |
| 2 2 | 
             
            layout: default
         | 
| 3 3 | 
             
            ---
         | 
| 4 4 |  | 
| 5 | 
            +
            {%- include layout/data.liquid -%}
         | 
| 6 | 
            +
             | 
| 5 7 | 
             
            {%- if page.pagination.enabled == true and site.pagination.enabled == true -%}
         | 
| 6 8 | 
             
              {%- assign count_posts = paginator.total_posts -%}
         | 
| 7 9 | 
             
            {%- else -%}
         | 
| @@ -28,8 +30,11 @@ layout: default | |
| 28 30 |  | 
| 29 31 | 
             
                    {%- for post in posts -%}
         | 
| 30 32 | 
             
                    <li class="blog-list__item">
         | 
| 31 | 
            -
                      {%-  | 
| 32 | 
            -
             | 
| 33 | 
            +
                      {%- if site.datelang -%}
         | 
| 34 | 
            +
                        <span class="blog-list__meta">{% datelang post.date format:date_format %}</span> » 
         | 
| 35 | 
            +
                      {%- else -%}
         | 
| 36 | 
            +
                        <span class="blog-list__meta">{{ post.date | date: "%b %-d, %Y" }}</span> » 
         | 
| 37 | 
            +
                      {%- endif -%}
         | 
| 33 38 | 
             
                      <a class="blog-list__link" href="{{ post.url | relative_url }}">
         | 
| 34 39 | 
             
                        {{ post.title | escape }}
         | 
| 35 40 | 
             
                      </a>
         | 
    
        data/_layouts/default.html
    CHANGED
    
    | @@ -3,6 +3,8 @@ | |
| 3 3 | 
             
              {%- include layout/maintenance.html -%}
         | 
| 4 4 | 
             
            {%- else -%}
         | 
| 5 5 |  | 
| 6 | 
            +
            {%- include layout/data.liquid -%}
         | 
| 7 | 
            +
             | 
| 6 8 | 
             
            {%- assign index = site.pages | where: "path", "index.md" | first -%}
         | 
| 7 9 |  | 
| 8 10 | 
             
            <!DOCTYPE html>
         | 
| @@ -50,15 +52,116 @@ | |
| 50 52 | 
             
              {%- if site.blog.search.enable -%}
         | 
| 51 53 | 
             
                {%- if page.url == '/blog/' or page.url == '/blog/index.html' -%}
         | 
| 52 54 | 
             
                  <script src="{{ '/assets/vendor/simple-jekyll-search.min.js' | relative_url }}"></script>
         | 
| 53 | 
            -
             | 
| 55 | 
            +
             | 
| 56 | 
            +
             | 
| 57 | 
            +
             | 
| 54 58 | 
             
                  <script>
         | 
| 55 | 
            -
                     | 
| 56 | 
            -
                       | 
| 57 | 
            -
                       | 
| 58 | 
            -
                       | 
| 59 | 
            -
                       | 
| 60 | 
            -
                       | 
| 61 | 
            -
             | 
| 59 | 
            +
                    document.addEventListener("DOMContentLoaded", () => {
         | 
| 60 | 
            +
                      const btn = document.getElementById('blog-search__btn');
         | 
| 61 | 
            +
                      const box = document.querySelector('.blog-search');
         | 
| 62 | 
            +
                      const searchInput = document.getElementById('blog-search__input');
         | 
| 63 | 
            +
                      const blogPosts = document.getElementById('posts');
         | 
| 64 | 
            +
                      const searchResults = document.getElementById('blog-search__results');
         | 
| 65 | 
            +
                      const searchResultsWrapper = document.getElementById('blog-search__results-wrapper');
         | 
| 66 | 
            +
                      const btnSearchClean = document.getElementById('blog-search__btn-clean');
         | 
| 67 | 
            +
                      const blogSeachInput = document.getElementById('blog-search__input');
         | 
| 68 | 
            +
             | 
| 69 | 
            +
             | 
| 70 | 
            +
                      if (!btn || !box) return;
         | 
| 71 | 
            +
             | 
| 72 | 
            +
                      const openSearch = () => {
         | 
| 73 | 
            +
                        box.classList.add('is-open');
         | 
| 74 | 
            +
                        box.style.maxHeight = box.scrollHeight + 'px';
         | 
| 75 | 
            +
                        box.style.opacity = '1';
         | 
| 76 | 
            +
                        box.addEventListener('transitionend', function onOpened(e) {
         | 
| 77 | 
            +
                          if (e.propertyName === 'max-height') {
         | 
| 78 | 
            +
                            box.style.maxHeight = 'none';
         | 
| 79 | 
            +
                            box.removeEventListener('transitionend', onOpened);
         | 
| 80 | 
            +
                          }
         | 
| 81 | 
            +
                        });
         | 
| 82 | 
            +
                        blogSeachInput.focus();
         | 
| 83 | 
            +
                      };
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                      const closeSearch = () => {
         | 
| 86 | 
            +
                        box.style.maxHeight = box.scrollHeight + 'px';
         | 
| 87 | 
            +
                        void box.offsetHeight; // reflow force
         | 
| 88 | 
            +
                        requestAnimationFrame(() => {
         | 
| 89 | 
            +
                          box.style.maxHeight = '0';
         | 
| 90 | 
            +
                          box.style.opacity = '0';
         | 
| 91 | 
            +
                        });
         | 
| 92 | 
            +
                        box.classList.remove('is-open');
         | 
| 93 | 
            +
                      };
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                      btn.addEventListener('click', (e) => {
         | 
| 96 | 
            +
                        e.preventDefault();
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                        // if are already in /blog/, toggle
         | 
| 99 | 
            +
                        const pathname = location.pathname.replace(/\/$/, '');
         | 
| 100 | 
            +
                        const isBlog = pathname === '/blog' || pathname === '/blog/index.html';
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                        if (!isBlog) {
         | 
| 103 | 
            +
                          // if are on another page, go to /blog/ and open it
         | 
| 104 | 
            +
                          window.location.href = "{{ search_url }}";
         | 
| 105 | 
            +
                          return;
         | 
| 106 | 
            +
                        }
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                        // toggle
         | 
| 109 | 
            +
                        if (box.classList.contains('is-open')) {
         | 
| 110 | 
            +
                          closeSearch();
         | 
| 111 | 
            +
                          searchInput.value = '';
         | 
| 112 | 
            +
                          blogPosts.classList.remove('disabled');
         | 
| 113 | 
            +
                          searchResultsWrapper.classList.add('disabled');
         | 
| 114 | 
            +
                        } else {
         | 
| 115 | 
            +
                          openSearch();
         | 
| 116 | 
            +
                        }
         | 
| 117 | 
            +
                      });
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                      // opens automatically if arrived from another link with ?search=open
         | 
| 120 | 
            +
                      const params = new URLSearchParams(location.search);
         | 
| 121 | 
            +
                      if (params.get('search') === 'open') {
         | 
| 122 | 
            +
                        setTimeout(openSearch, 30);
         | 
| 123 | 
            +
                      }
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                      /* clean button input blog search
         | 
| 126 | 
            +
                      --------------------------------------------------------------------------------------------------
         | 
| 127 | 
            +
                      */
         | 
| 128 | 
            +
                      function clearSearch() {
         | 
| 129 | 
            +
                        blogSeachInput.value = '';
         | 
| 130 | 
            +
                        blogPosts.classList.remove('disabled');
         | 
| 131 | 
            +
                        searchResults.classList.add('disabled');
         | 
| 132 | 
            +
                        searchResultsWrapper.classList.add('disabled');
         | 
| 133 | 
            +
                        blogSeachInput.focus();
         | 
| 134 | 
            +
                      }
         | 
| 135 | 
            +
                      btnSearchClean.addEventListener('click', clearSearch);
         | 
| 136 | 
            +
                      document.addEventListener('keydown', (e) => {
         | 
| 137 | 
            +
                        if (e.key === 'Escape') {
         | 
| 138 | 
            +
                          clearSearch();
         | 
| 139 | 
            +
                          closeSearch();
         | 
| 140 | 
            +
                        }
         | 
| 141 | 
            +
                      });
         | 
| 142 | 
            +
             | 
| 143 | 
            +
                      /* open results and close posts in search (toggle)
         | 
| 144 | 
            +
                      --------------------------------------------------------------------------------------------------
         | 
| 145 | 
            +
                      */
         | 
| 146 | 
            +
                      searchInput.addEventListener('input', () => {
         | 
| 147 | 
            +
                        if (searchInput.value.trim().length > 0) {
         | 
| 148 | 
            +
                          blogPosts.classList.add('disabled');
         | 
| 149 | 
            +
                          searchResults.classList.remove('disabled');
         | 
| 150 | 
            +
                          searchResultsWrapper.classList.remove('disabled');
         | 
| 151 | 
            +
                        } else {
         | 
| 152 | 
            +
                          blogPosts.classList.remove('disabled');
         | 
| 153 | 
            +
                          searchResults.classList.add('disabled');
         | 
| 154 | 
            +
                          searchResultsWrapper.classList.add('disabled');
         | 
| 155 | 
            +
                        }
         | 
| 156 | 
            +
                      });
         | 
| 157 | 
            +
                      var sjs = SimpleJekyllSearch({
         | 
| 158 | 
            +
                        searchInput: document.getElementById('blog-search__input'),
         | 
| 159 | 
            +
                        resultsContainer: document.getElementById('blog-search__results'),
         | 
| 160 | 
            +
                        searchResultTemplate: '<li><span class="blog-list__meta"><time datetime="{date}">{date}</time></span> »  <a class="blog-list__link" href="{{ site.url }}{url}">{title}</a></li>',
         | 
| 161 | 
            +
                        noResultsText: '<p>{{ site.text.blog.no_results | default: "No results found" }}</p>',
         | 
| 162 | 
            +
                        json: "{{ '/assets/json/blog_search.json' | relative_url }}"
         | 
| 163 | 
            +
                      })
         | 
| 164 | 
            +
                    });
         | 
| 62 165 | 
             
                  </script>
         | 
| 63 166 | 
             
                {%- endif -%}
         | 
| 64 167 | 
             
              {%- endif -%}
         | 
    
        data/_layouts/page.html
    CHANGED
    
    | @@ -2,8 +2,39 @@ | |
| 2 2 | 
             
            layout: default
         | 
| 3 3 | 
             
            ---
         | 
| 4 4 |  | 
| 5 | 
            +
            {%- include layout/data.liquid -%}
         | 
| 6 | 
            +
             | 
| 5 7 | 
             
            <div class="container page">
         | 
| 8 | 
            +
              {%- if page.date or page.reading_time -%}
         | 
| 9 | 
            +
                <div class="row">
         | 
| 10 | 
            +
                  {%- if page.date -%}
         | 
| 11 | 
            +
                  <time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
         | 
| 12 | 
            +
                    {%- if site.datelang -%}
         | 
| 13 | 
            +
                      {% datelang page.date format:date_format %}
         | 
| 14 | 
            +
                    {%- else -%}
         | 
| 15 | 
            +
                      {{ page.date | date: "%b %-d, %Y" }}
         | 
| 16 | 
            +
                    {%- endif -%}
         | 
| 17 | 
            +
                  </time>
         | 
| 18 | 
            +
                  {%- endif -%}
         | 
| 19 | 
            +
                  {%- if page.reading_time -%}
         | 
| 20 | 
            +
                    <div class="page-reading_time">
         | 
| 21 | 
            +
                      <p>[ {{ page.content | reading_time }} ]</p>
         | 
| 22 | 
            +
                    </div>
         | 
| 23 | 
            +
                  {%- endif -%}
         | 
| 24 | 
            +
                </div>
         | 
| 25 | 
            +
              {%- endif -%}
         | 
| 26 | 
            +
             | 
| 6 27 | 
             
              <div class="row">
         | 
| 7 28 | 
             
                <div class="page-content">{{ content }}</div>
         | 
| 8 29 | 
             
              </div>
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              {%- if page.update_date -%}
         | 
| 32 | 
            +
                <div class="row page-modified">
         | 
| 33 | 
            +
                  <time class="dt-modified" datetime="{{ page.date | date_to_xmlschema }}" itemprop="dateModified">
         | 
| 34 | 
            +
                    <strong>{{ site.text.page.updated_on | default: "Page updated on" }}:</strong> {% datelang page.update_date format:date_format %}
         | 
| 35 | 
            +
                  </time>
         | 
| 36 | 
            +
                </div>
         | 
| 37 | 
            +
              {%- endif -%}
         | 
| 9 38 | 
             
            </div>
         | 
| 39 | 
            +
             | 
| 40 | 
            +
            <script src="{{ '/assets/js/toc.js' | relative_url }}"></script>
         | 
    
        data/_layouts/post.html
    CHANGED
    
    | @@ -2,6 +2,8 @@ | |
| 2 2 | 
             
            layout: default
         | 
| 3 3 | 
             
            ---
         | 
| 4 4 |  | 
| 5 | 
            +
            {%- include layout/data.liquid -%}
         | 
| 6 | 
            +
             | 
| 5 7 | 
             
            <article class="container post" itemscope itemtype="http://schema.org/BlogPosting">
         | 
| 6 8 | 
             
              <div class="row">
         | 
| 7 9 |  | 
| @@ -11,7 +13,11 @@ layout: default | |
| 11 13 | 
             
                  <div class="row post-meta">
         | 
| 12 14 | 
             
                    <div class="col-sm d-flex justify-content-start">
         | 
| 13 15 | 
             
                      <time class="dt-published" datetime="{{ page.date | date_to_xmlschema }}" itemprop="datePublished">
         | 
| 14 | 
            -
                      { | 
| 16 | 
            +
                      {%- if site.datelang -%}
         | 
| 17 | 
            +
                        {% datelang page.date format:date_format %}
         | 
| 18 | 
            +
                      {%- else -%}
         | 
| 19 | 
            +
                        {{ page.date | date: "%b %-d, %Y" }}
         | 
| 20 | 
            +
                      {%- endif -%}
         | 
| 15 21 | 
             
                      </time>
         | 
| 16 22 | 
             
                    </div>
         | 
| 17 23 | 
             
                    <div class="col-sm d-flex justify-content-end">
         | 
| @@ -23,6 +29,11 @@ layout: default | |
| 23 29 | 
             
                      </span>
         | 
| 24 30 | 
             
                      {%- endif -%}
         | 
| 25 31 | 
             
                    </div>
         | 
| 32 | 
            +
                    {%- if site.reading_time.enable -%}
         | 
| 33 | 
            +
                    <div class="post-reading_time">
         | 
| 34 | 
            +
                      [ {{ page.content | reading_time }} ]
         | 
| 35 | 
            +
                    </div>
         | 
| 36 | 
            +
                    {%- endif -%}
         | 
| 26 37 | 
             
                  </div>
         | 
| 27 38 |  | 
| 28 39 | 
             
                </header>
         | 
| @@ -33,11 +44,14 @@ layout: default | |
| 33 44 |  | 
| 34 45 | 
             
                {%- if page.update_date -%}
         | 
| 35 46 | 
             
                <div class="row post-modified">
         | 
| 36 | 
            -
                  < | 
| 37 | 
            -
                    < | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 47 | 
            +
                  <time class="dt-modified" datetime="{{ page.date | date_to_xmlschema }}" itemprop="dateModified">
         | 
| 48 | 
            +
                    <strong>{{ site.text.post.updated_on | default: "Post updated on" }}:</strong> 
         | 
| 49 | 
            +
                    {%- if site.datelang -%}
         | 
| 50 | 
            +
                      {% datelang page.update_date format:date_format %}
         | 
| 51 | 
            +
                    {%- else -%}
         | 
| 52 | 
            +
                      {{ page.date | date: "%b %-d, %Y" }}
         | 
| 53 | 
            +
                    {%- endif -%}
         | 
| 54 | 
            +
                  </time>
         | 
| 41 55 | 
             
                </div>
         | 
| 42 56 | 
             
                {%- endif -%}
         | 
| 43 57 |  | 
| @@ -85,8 +99,11 @@ layout: default | |
| 85 99 | 
             
                    <ul class="related-posts-list">
         | 
| 86 100 | 
             
                      {%- for post in related_posts limit:5 -%}
         | 
| 87 101 | 
             
                        <li class="related-posts-list__item">
         | 
| 88 | 
            -
                          {%-  | 
| 89 | 
            -
             | 
| 102 | 
            +
                          {%- if site.datelang -%}
         | 
| 103 | 
            +
                            <span class="related-posts-list__meta">{% datelang post.date format:date_format %}</span> » 
         | 
| 104 | 
            +
                          {%- else -%}
         | 
| 105 | 
            +
                            <span class="related-posts-list__meta">{{ post.date | date: "%b %-d, %Y" }}</span> » 
         | 
| 106 | 
            +
                          {%- endif -%}
         | 
| 90 107 | 
             
                          <a class="related-posts-list__link" href="{{ post.url | relative_url }}">{{ post.title }}</a>
         | 
| 91 108 | 
             
                          {%- if post.draft -%}
         | 
| 92 109 | 
             
                            <span class="draft-badge">[ this is a draft ]</span>
         | 
    
        data/_layouts/resume.html
    CHANGED
    
    | @@ -139,6 +139,43 @@ | |
| 139 139 | 
             
                            {%- endfor -%}
         | 
| 140 140 | 
             
                          </section>
         | 
| 141 141 | 
             
                          {%- endif -%}
         | 
| 142 | 
            +
                          {%- if resume.body.certificates.enable -%}
         | 
| 143 | 
            +
                          <section class="row section certificate">
         | 
| 144 | 
            +
                            <h2 class="section-title">{{ resume.body.certificates.caption }}</h2>
         | 
| 145 | 
            +
                            {%- for cert in resume.body.certificates.section -%}
         | 
| 146 | 
            +
                              <div class="section-item">
         | 
| 147 | 
            +
                                <div class="row">
         | 
| 148 | 
            +
                                  <div class="title"><span class="marker">• </span>
         | 
| 149 | 
            +
                                  {%- if cert.certificate -%}
         | 
| 150 | 
            +
                                    <a href="{{ cert.certificate }}" target="_blank">{{ cert.course }}
         | 
| 151 | 
            +
                                      <small>{{ cert.certificate }}</small>
         | 
| 152 | 
            +
                                    </a>
         | 
| 153 | 
            +
                                  {%- else -%}
         | 
| 154 | 
            +
                                    <span>{{ cert.course }}</span>
         | 
| 155 | 
            +
                                  {%- endif -%}
         | 
| 156 | 
            +
                                  </div>
         | 
| 157 | 
            +
                                </div>
         | 
| 158 | 
            +
                                  <div class="row">
         | 
| 159 | 
            +
                                    <div class="period">
         | 
| 160 | 
            +
                                      - 
         | 
| 161 | 
            +
                                      {%- if cert.period.year-%} <span class="time">{{ cert.period.year }}</span>{%- endif-%}
         | 
| 162 | 
            +
                                      {%- if cert.period.hours-%} — <span class="hours">{{ cert.period.hours }}</span>{%- endif-%}
         | 
| 163 | 
            +
                                    </div>
         | 
| 164 | 
            +
                                  </div>
         | 
| 165 | 
            +
                                <div class="row">
         | 
| 166 | 
            +
                                  <div class="company">
         | 
| 167 | 
            +
                                    {%- if cert.company.site -%}
         | 
| 168 | 
            +
                                      -  <a href="{{ cert.company.site }}" target="_blank">{{ cert.company.name }}
         | 
| 169 | 
            +
                                      </a>
         | 
| 170 | 
            +
                                    {%- else -%}
         | 
| 171 | 
            +
                                      - <span>{{ cert.company.name }}</span>
         | 
| 172 | 
            +
                                    {%- endif -%}
         | 
| 173 | 
            +
                                  </div>
         | 
| 174 | 
            +
                                </div>
         | 
| 175 | 
            +
                              </div>
         | 
| 176 | 
            +
                            {%- endfor -%}
         | 
| 177 | 
            +
                          </section>
         | 
| 178 | 
            +
                          {%- endif -%}
         | 
| 142 179 | 
             
                          {%- if resume.body.publications.enable -%}
         | 
| 143 180 | 
             
                          <section class="row section publications">
         | 
| 144 181 | 
             
                            <h2 class="section-title">{{ resume.body.publications.caption }}</h2>
         | 
| @@ -213,27 +250,12 @@ | |
| 213 250 | 
             
                            {%- endfor -%}
         | 
| 214 251 | 
             
                          </section>
         | 
| 215 252 | 
             
                          {%- endif -%}
         | 
| 216 | 
            -
                          { | 
| 217 | 
            -
                          <section class="row section  | 
| 218 | 
            -
                            <h2 class="section-title">{{ resume.body. | 
| 219 | 
            -
                            { | 
| 220 | 
            -
                              <div class="section-item">
         | 
| 221 | 
            -
                                <div class="row">
         | 
| 222 | 
            -
                                  <div class="role"><p><span class="marker">• </span>{{ vol.role }}</p></div>
         | 
| 223 | 
            -
                                </div>
         | 
| 224 | 
            -
                                <div class="row">
         | 
| 225 | 
            -
                                  {%- if vol.link -%}
         | 
| 226 | 
            -
                                    <div class="col-sm link"><p>- <a href="{{ vol.link }}" target="_blank">{{ vol.company }}</a></p></div>
         | 
| 227 | 
            -
                                  {%- else -%}
         | 
| 228 | 
            -
                                    <div class="col-sm company"><p>- {{ vol.company }}</p></div>
         | 
| 229 | 
            -
                                  {%- endif -%}
         | 
| 230 | 
            -
                                  <span class="col-sm d-flex justify-content-end time">{{ vol.time }}</span>
         | 
| 231 | 
            -
                                </div>
         | 
| 232 | 
            -
                                <div class="row details"><p>- {{ vol.details }}</p></div>
         | 
| 233 | 
            -
                              </div>
         | 
| 234 | 
            -
                            {%- endfor -%}
         | 
| 253 | 
            +
                          {%- if resume.body.markdown.enable -%}
         | 
| 254 | 
            +
                          <section class="row section markdown">
         | 
| 255 | 
            +
                            <h2 class="section-title">{{ resume.body.markdown.caption }}</h2>
         | 
| 256 | 
            +
                            <div class="section-content">{{ resume.body.markdown.content | markdownify }}</div>
         | 
| 235 257 | 
             
                          </section>
         | 
| 236 | 
            -
                          {%- endif -%} | 
| 258 | 
            +
                          {%- endif -%}
         | 
| 237 259 | 
             
                        </div>
         | 
| 238 260 | 
             
                      </div>
         | 
| 239 261 | 
             
                    </div>
         | 
    
        data/_layouts/tag_posts.html
    CHANGED
    
    | @@ -2,6 +2,8 @@ | |
| 2 2 | 
             
            layout: default
         | 
| 3 3 | 
             
            ---
         | 
| 4 4 |  | 
| 5 | 
            +
            {%- include layout/data.liquid -%}
         | 
| 6 | 
            +
             | 
| 5 7 | 
             
            <div class="container tag-posts">
         | 
| 6 8 | 
             
              <div class="row">
         | 
| 7 9 | 
             
                <h1 class="tag-posts-title"><span>[ {{ site.text.tags_posts.title }}: </span>{{ page.title }}<span> ]</span></h1>
         | 
| @@ -9,8 +11,7 @@ layout: default | |
| 9 11 | 
             
                <ul class="row tag-posts-list">
         | 
| 10 12 | 
             
                  {%- for post in page.posts -%}
         | 
| 11 13 | 
             
                    <li class="tag-posts-list__item">
         | 
| 12 | 
            -
                      { | 
| 13 | 
            -
                      <span class="tag-posts-list__meta">{{ post.date | date: date_format }}</span> » 
         | 
| 14 | 
            +
                      <span class="tag-posts-list__meta">{% datelang post.date format:date_format %}</span> » 
         | 
| 14 15 | 
             
                      <a class="tag-posts-list__link" href="{{ post.url | relative_url }}">{{ post.title }}</a>
         | 
| 15 16 | 
             
                      {%- if post.draft -%}
         | 
| 16 17 | 
             
                        <span class="draft-badge">[ this is a draft ]</span>
         | 
    
        data/_sass/base/_reset.scss
    CHANGED
    
    | @@ -1,10 +1,39 @@ | |
| 1 | 
            -
            *{
         | 
| 2 | 
            -
             | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 1 | 
            +
            * {
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              input,
         | 
| 4 | 
            +
              a,
         | 
| 5 | 
            +
              button {
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                &:focus,
         | 
| 8 | 
            +
                &:hover,
         | 
| 9 | 
            +
                &:active {
         | 
| 10 | 
            +
                  outline: 0 !important;
         | 
| 5 11 | 
             
                }
         | 
| 6 12 | 
             
              }
         | 
| 13 | 
            +
             | 
| 7 14 | 
             
              li {
         | 
| 8 15 | 
             
                list-style: none;
         | 
| 9 16 | 
             
              }
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              /* reset table values in <pre> */
         | 
| 19 | 
            +
              pre {
         | 
| 20 | 
            +
                code {
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                  table,
         | 
| 23 | 
            +
                  tbody {
         | 
| 24 | 
            +
                    all: unset !important;
         | 
| 25 | 
            +
                  }
         | 
| 26 | 
            +
             | 
| 27 | 
            +
                  table {
         | 
| 28 | 
            +
                    tbody {
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                      td,
         | 
| 31 | 
            +
                      tr {
         | 
| 32 | 
            +
                        border: none !important;
         | 
| 33 | 
            +
                        background-color: transparent !important;
         | 
| 34 | 
            +
                      }
         | 
| 35 | 
            +
                    }
         | 
| 36 | 
            +
                  }
         | 
| 37 | 
            +
                }
         | 
| 38 | 
            +
              }
         | 
| 10 39 | 
             
            }
         | 
| @@ -41,12 +41,16 @@ | |
| 41 41 | 
             
                background-color: var(--blockquote-bg-color);
         | 
| 42 42 | 
             
              }
         | 
| 43 43 |  | 
| 44 | 
            +
              li {
         | 
| 45 | 
            +
                list-style: disc !important;
         | 
| 46 | 
            +
              }
         | 
| 47 | 
            +
             | 
| 44 48 | 
             
              .task-list {
         | 
| 45 49 | 
             
                margin-left: 0;
         | 
| 46 50 | 
             
                padding-left: 18px;
         | 
| 47 51 |  | 
| 48 52 | 
             
                &-item {
         | 
| 49 | 
            -
                  list-style-type: none;
         | 
| 53 | 
            +
                  list-style-type: none !important;
         | 
| 50 54 |  | 
| 51 55 | 
             
                  &-checkbox {
         | 
| 52 56 | 
             
                    position: relative;
         | 
| @@ -306,6 +310,7 @@ | |
| 306 310 | 
             
                  display: flex;
         | 
| 307 311 | 
             
                  flex-direction: column;
         | 
| 308 312 | 
             
                  z-index: 9999;
         | 
| 313 | 
            +
                  min-width: 520px !important;
         | 
| 309 314 | 
             
                  max-width: 780px;
         | 
| 310 315 | 
             
                  width: auto !important;
         | 
| 311 316 | 
             
                  margin: 0 auto;
         | 
    
        data/_sass/layouts/_blog.scss
    CHANGED
    
    
    
        data/_sass/layouts/_page.scss
    CHANGED
    
    | @@ -2,4 +2,16 @@ | |
| 2 2 |  | 
| 3 3 | 
             
            .page {
         | 
| 4 4 | 
             
              @extend %markdown;
         | 
| 5 | 
            +
             | 
| 6 | 
            +
              .dt-published,
         | 
| 7 | 
            +
              .dt-modified {
         | 
| 8 | 
            +
                font-weight: normal !important;
         | 
| 9 | 
            +
                font-family: "SUSE Mono", sans-serif;
         | 
| 10 | 
            +
                color: var(--text-muted-color);
         | 
| 11 | 
            +
              }
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              &-reading_time {
         | 
| 14 | 
            +
                margin-top: 15px;
         | 
| 15 | 
            +
                color: var(--text-muted-color);
         | 
| 16 | 
            +
              }
         | 
| 5 17 | 
             
            }
         |