Skip to content

Implementasi

Chetabahana edited this page Aug 15, 2020 · 1079 revisions

Table of Contents

Arsitektur

Mekanisme

Githooks

#!/bin/sh
# (replace "find ." with "find ./<path>" below, to work with only specific paths)

# (these lines are really all one line, on multiple lines for clarity)
# ...find symlinks which do not dereference to directories...
find . -type l -exec test '!' -d {} ';' -print -exec sh -c \
# ...remove the symlink blob, and add the content diff, to the index/cache
    'git rm --cached "$1"; diff -au /dev/null "$1" | git apply --cached -p1 -' \
# ...and call out to "sh".
    "process_links_to_nondir" {} ';'

# the end
Dalam pemrograman Hooks dapat Anda tempatkan di direktori hooks untuk memicu tindakan pada titik tertentu dalam eksekusi git. Kait yang tidak memiliki set bit yang dapat dieksekusi diabaikan.


Tehnik ini sering sekali digunakan dalam pembuatan plugin,component dalam suatu aplikasi baik cms,ecommerce,intranet aplikasi.

Secara default direktori hooks adalah $ GIT_DIR / hooks, tetapi itu dapat diubah melalui variabel konfigurasi core.hooksPath (lihat git-config (1)).

Sebelum Git memanggil sebuah hook, ia mengubah direktori kerjanya menjadi $ GIT_DIR dalam repositori kosong atau root dari pohon yang berfungsi dalam repositori non-telanjang.

Pengecualian adalah kait yang dipicu selama push (pra-terima, perbarui, pasca-terima, pasca-pembaruan, push-to-checkout) yang selalu dijalankan dalam $ GIT_DIR.

Hooks bisa mendapatkan argumen mereka melalui lingkungan, argumen command-line, dan stdin. Lihat dokumentasi untuk setiap kait di bawah ini untuk detailnya.

git init dapat menyalin kait ke repositori baru, tergantung pada konfigurasinya. Lihat bagian "TEMPLATE DIRECTORY" di git-init (1) untuk detailnya. Ketika sisa dokumen ini mengacu pada "kait default", itu berbicara tentang templat default yang dikirimkan bersama Git.

Struktur

directory _assets  
   directory a  
     file a1 <- weight: 1    
     file a2 <- weight: 2       
   directory b    
     file b1 <- weight: 1    
     file b2 <- weight: 2        
     directory c    
        file c1 <- weight: 1    
        file c2 <- weight: 2  

Metoda Saring

https://jekyllrb.com/docs/templates/
sort: 'weight'

{% assign assets = site.assets | sort: 'weight' %}
{% for asset in assets %} 
{ 
    "title": {{ asset.title }}
} 
{% unless forloop.last %},{% endunless %}
{% endfor %}

Hasil Saring

{  
    "title": file a1     <- weight: 1 
}, 
{  
    "title": file b1     <- weight: 1
}, 
{  
    "title": file c1     <- weight: 1
}, 
{  
    "title": file a2     <- weight: 2
}, 
{  
    "title": file b2     <- weight: 2
}, 
{  
    "title": file c2     <- weight: 2
}

Target Saring

{   
   "title": directory a,   
   "files": [               
      {   
         "title": file a1     <-- weight: 1 
      },                       
      {   
         "title": file a2     <-- weight: 2
      }                       
   ]                       
}, 
{   
   "title": directory b,
   "files": [             
      {   
         "title": file b1     <-- weight: 1
      },                        
      {   
         "title": file b2     <-- weight: 2   
      },                        
      {   
         "title": directory c,
         "files": [            
            {   
               "title": file c1      <-- weight: 1 
            },                        
            {   
               "title": file c2      <-- weight: 2  
            }                                         
         ]           
      }                                         
   ]                                                       
}   

Pemetaan

{{ asset.title }} => Capital

Titik Awal

{% assign assets = site.assets | sort: 'weight' %}
{% for asset in assets %} 
{ 
    "title": {{ asset.title }}
} 
{% unless forloop.last %},{% endunless %}
{% endfor %}

Konversi Awal

_assets/head/head.md
_assets/skema/sequence.md
_assets/skema/sequence/object.md
_assets/head/beranda.md
_assets/skema/flowchart.md
_assets/skema/sequence/method.md
_assets/head/abstrak.md
_assets/skema/railroad.md
_assets/head/skema.md
_assets/head/eksekusi.md
_assets/head/portfolio.md
_assets/head/network.md
_assets/head/publikasi.md
_assets/head/diskusi.md
_assets/head/bottom.md
_assets/head/head.md
_assets/head/beranda.md
_assets/head/abstrak.md
_assets/head/skema.md
_assets/skema/sequence.md
_assets/skema/sequence/object.md
_assets/skema/sequence/method.md
_assets/skema/flowchart.md
_assets/skema/railroad.md
_assets/head/eksekusi.md
_assets/head/portfolio.md
_assets/head/network.md
_assets/head/publikasi.md
_assets/head/diskusi.md
_assets/head/bottom.md

Penyederhanaan

_assets/head/
_assets/head/
_assets/head/
_assets/head/
_assets/skema/sequence/
_assets/skema/sequence/
_assets/skema/
_assets/skema/
_assets/skema/
_assets/head/
_assets/head/
_assets/head/
_assets/head/
_assets/head/
_assets/head/
_assets/head/
_assets/skema/sequence/
_assets/skema/
_assets/skema/sequence/
_assets/head/
_assets/skema/
_assets/skema/sequence/
_assets/skema/sequence/object.md
_assets/skema/sequence/method.md

Konversi Ahir

_assets/skema/sequence/md
_assets/skema/sequence/object.md
_assets/skema/sequence/method.md
_assets/skema/flowchart.md
_assets/skema/railroad.md
_assets/head/skema/md
_assets/skema/sequence/md
_assets/skema/sequence/object.md
_assets/skema/sequence/method.md
_assets/skema/flowchart.md
_assets/skema/railroad.md
_assets/head/md
_assets/head/beranda.md
_assets/head/abstrak.md
_assets/head/skema/md
_assets/skema/sequence/md
_assets/skema/sequence/object.md
_assets/skema/sequence/method.md
_assets/skema/flowchart.md
_assets/skema/railroad.md
_assets/head/eksekusi.md
_assets/head/portfolio.md
_assets/head/network.md
_assets/head/publikasi.md
_assets/head/diskusi.md
_assets/head/bottom.md
_assets/head/md
   _assets/head/beranda.md
   _assets/head/abstrak.md
   _assets/head/skema/md
      _assets/skema/sequence/md
         _assets/skema/sequence/object.md
         _assets/skema/sequence/method.md
      _assets/skema/flowchart.md
      _assets/skema/railroad.md
   _assets/head/eksekusi.md
   _assets/head/portfolio.md
   _assets/head/network.md
   _assets/head/publikasi.md
   _assets/head/diskusi.md
   _assets/head/bottom.md

Struktur Ahir

{   
   "title": "Beranda",
   --> atribut..   
}, 
{   
   "title": "Abstrak",
   --> atribut..   
}, 
{   
   "title": "Skema",
   --> atribut..,     
   "files": [             
      {   
         "title": "Sequence",
          --> atribut..,     
         "files": [            
            {   
               "title": "Object",
               --> atribut..     
            },                        
            {   
               "title": "Method",
                --> atribut..      
            }                                         
         ]           
      },
      {   
         "title": "Flowchart",
         --> atribut..     
      },                        
      {   
         "title": "Railroad",
         --> atribut..     
      },                        
   ]                                                       
}, 
{   
   "title": "Eksekusi",
   --> atribut..        
}, 
{   
   "title": "Portfolio",
   --> atribut..          
}, 
{   
   "title": "Publikasi",
   --> atribut..         
}, 
{   
   "title": "Diskusi",
   --> atribut..        
}, 
{   
   "title": "Bottom",
   --> atribut..       
}

Pemrograman

https://github.com/chetabahana/chetabahana.github.io/blob/master/feed.json https://github.com/chetabahana/chetabahana.github.io/blob/master/_includes/feed/Json

Size

size: https://shopify.github.io/liquid/filters/size/

    [
{% assign my_assets = site.assets | sort: 'weight' %}
{% assign my_size = 0 %}
{% for asset in my_assets %}
   {% assign my_split = asset.path | split: "/" %}
   {% assign size = my_split | size %}
   {% if my_size < size  %}
      {% assign my_size = size %}
   {% endif %}
        { 
            "size": {{ my_size }}
        }{% unless forloop.last %},{% endunless %}
{% endfor %}
    ]

Catatan: Bila dijumpai Error nil:NilClass sbb:

Error: could not read file /srv/jekyll/_assets/docs/Header: undefined method `split' for nil:NilClass
Solusinya adalah safe navigation operator (&.):
nil&.split(",")
    [
        {
            "size": 3
        },
        {
            "size": 3
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        },
        {
            "size": 4
        }
    ]

Reversed

optional

    [
{% assign my_assets = site.assets | sort: 'weight' %}
{% assign my_size = 2 %}
{% assign my_path = "" | split: "," %}
{% for asset in my_assets %}
   {% assign my_split = asset.path | split: "/" %}
   {% assign size = my_split | size %}
   {% if size > my_size %}
      {% assign my_path = my_path | push:size %}
      {% assign my_size = size %}
   {% endif %}
{% endfor %}
{% for my_size in my_path reversed %}
        {
            "size": {{ my_size }}
        }{% unless forloop.last %},{% endunless %}
{% endfor %}
    ]
    [
        {
            "size": 4
        },
        {
            "size": 3
        }
    ]

Path

optional

    [
{% assign my_assets = site.assets | sort: 'weight' %}
{% assign my_size = 2 %}
{% assign my_path = "" | split: "," %}
{% for asset in my_assets %}
   {% assign my_split = asset.path | split: "/" %}
   {% assign size = my_split | size %}
   {% if size > my_size %}
      {% assign my_path = my_path | push:size %}
      {% assign my_size = size %}
   {% endif %}
{% endfor %}
{% for my_size in my_path reversed %}
   {% for asset in my_assets %}
      {% assign my_split = asset.path | split: "/" %}
      {% assign size = my_split | size %}
      {% if size == my_size %}
         {
            "path": {{ asset.path | jsonify }}
         }{% unless forloop.last %},{% endunless %}
      {% endif %}
   {% endfor %}
{% endfor %}
    ]
    [
        {
            "path": "_assets/skema/sequence/object.md"
        },
        {
            "path": "_assets/skema/sequence/method.md"
        },
        {
            "path": "_assets/head/head.md"
        },
        {
            "path": "_assets/skema/sequence.md"
        },
        {
            "path": "_assets/head/beranda.md"
        },
        {
            "path": "_assets/skema/flowchart.md"
        },
        {
            "path": "_assets/head/abstrak.md"
        },
        {
            "path": "_assets/skema/railroad.md"
        },
        {
            "path": "_assets/head/skema.md"
        },
        {
            "path": "_assets/head/eksekusi.md"
        },
        {
            "path": "_assets/head/portfolio.md"
        },
        {
            "path": "_assets/head/network.md"
        },
        {
            "path": "_assets/head/publikasi.md"
        },
        {
            "path": "_assets/head/diskusi.md"
        },
        {
            "path": "_assets/head/bottom.md"
        }
    ] 

Capture

    [
{% assign my_assets = site.assets | sort: 'weight' %}
{% assign my_tab = "    " %}
{% assign my_size = 2 %}
{% assign my_path = "" | split: "," %}
{% for asset in my_assets %}
   {% assign my_split = asset.path | split: "/" %}
   {% assign size = my_split | size %}
   {% if size > my_size %}
      {% assign my_path = my_path | push:size %}
      {% assign my_size = size %}
   {% endif %}
{% endfor %}
{% assign my_paths = "" | split: "," %}
{% for my_size in my_path reversed %}
   {% for asset in my_assets %}
      {% unless asset.path contains "/head/" %}   
         {% assign my_split = asset.path | split: "/" %}
         {% assign size = my_split | size %}
         {% if size == my_size %}
            {% assign my_paths = my_paths | push:asset %}
         {% endif %}
      {% endunless %}
   {% endfor %}
{% endfor %}
{% assign my_captures = "" | split: "::" %}
{% for my_path in my_paths %}
   {% assign my_size = my_path.path | split: "/" | size %}
   {% capture my_capture %}
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"path": {{ my_path.path | jsonify }}
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}}{% unless forloop.last %},{% endunless %}
   {% endcapture %}
   {% assign my_captures =  my_captures | push:my_capture %}
{% endfor %}
{% for my_capture in my_captures %}
   {{ my_capture }}
{% endfor %}
{% assign my_asset = "" | split: "," %}
{% for asset in my_assets %}
   {% if asset.path contains "/head/" %} 
      {% assign my_asset = my_asset | push:asset %}
   {% endif %}
{% endfor %}
{% for asset in my_asset %}
{{ my_tab }}{{ my_tab }}{
{{ my_tab }}{{ my_tab }}{{ my_tab }}"path": {{ asset.path | jsonify }}
{{ my_tab }}{{ my_tab }}}{% unless forloop.last %},{% endunless %}
{% endfor %}
{{ my_tab }}]
    [
                {
                    "path": "_assets/skema/sequence/object.md"
                },
                {
                    "path": "_assets/skema/sequence/method.md"
                },
            {
                "path": "_assets/skema/sequence.md"
            },
            {
                "path": "_assets/skema/flowchart.md"
            },
            {
                "path": "_assets/skema/railroad.md"
            },
        {
            "path": "_assets/head/head.md"
        },
        {
            "path": "_assets/head/beranda.md"
        },
        {
            "path": "_assets/head/abstrak.md"
        },
        {
            "path": "_assets/head/skema.md"
        },
        {
            "path": "_assets/head/eksekusi.md"
        },
        {
            "path": "_assets/head/portfolio.md"
        },
        {
            "path": "_assets/head/network.md"
        },
        {
            "path": "_assets/head/publikasi.md"
        },
        {
            "path": "_assets/head/diskusi.md"
        },
        {
            "path": "_assets/head/bottom.md"
        }
    ]

Index

    [
{% assign my_assets = site.assets | sort: 'weight' %}
{% assign my_tab = "    " %}
{% assign my_size = 2 %}
{% assign my_path = "" | split: "," %}
{% for asset in my_assets %}
   {% assign my_split = asset.path | split: "/" %}
   {% assign size = my_split | size %}
   {% if size > my_size %}
      {% assign my_path = my_path | push:size %}
      {% assign my_size = size %}
   {% endif %}
{% endfor %}
{% assign my_paths = "" | split: "," %}
{% for my_size in my_path reversed %}
   {% for asset in my_assets %}
      {% unless asset.path contains "/head/" %}
         {% assign my_split = asset.path | split: "/" %}
         {% assign size = my_split | size %}
         {% if size == my_size %}
             {% assign my_paths = my_paths | push:asset %}
         {% endif %}
      {% endunless %}
   {% endfor %}
{% endfor %}
{% assign my_captures = "" | split: "," %}
{% for my_path in my_paths %}
   {% assign my_split = my_path.path | split: "/" %}
   {% assign my_part = my_split | size | minus:2 %}
   {% assign my_size = my_split | size | | times: 2 | minus:2 %}
   {% assign my_dir = my_split[my_part] | prepend: "/" | append: "/" %}
   {% assign my_title = my_path.title | downcase | prepend: my_dir | append: "/" %}
   {% assign my_index = "" | split: "," %}
   {% for my_push in my_paths %}
      {% if my_push.path contains my_title %}
         {% assign my_index = my_index | push:forloop.index0 %}
      {% endif %}
   {% endfor %}
   {% capture my_capture %}
        {% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{
        {% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"path": {{ my_path.path | jsonify }}{% assign my_index_size = my_index | size %}{% if my_index_size > 0 %},
        {% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"item": [{% for index in my_index %}{{ my_captures[index] }}{% unless forloop.last %},{% endunless %}{% endfor %}
        {% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}]{% endif %}
        {% for i in (1..my_size) %}{{ my_tab }}{% endfor %}}
   {% endcapture %}
   {% assign my_captures =  my_captures | push:my_capture %}
{% endfor %}
{% assign my_asset = "" | split: "," %}
{% for asset in my_assets %}
   {% if asset.path contains "/head/" %}
      {% assign my_asset = my_asset | push:asset %}
   {% endif %}
{% endfor %}
{% for asset in my_asset %}
   {% assign my_title = asset.title | downcase | prepend: "_assets/" | append: "/" %}
   {% assign my_index = "" | split: "," %}
   {% for my_path in my_paths %}
      {% assign my_size = my_path.path | split: "/" | size %}
      {% if my_size == 3 and my_path.path contains my_title %}
          {% assign my_index = my_index | push:forloop.index0 %}
      {% endif %}
   {% endfor %}
   {{ my_tab }}{{ my_tab }}{
   {{ my_tab }}{{ my_tab }}{{ my_tab }}"path": {{ asset.path | jsonify }}{% assign my_index_size = my_index | size %}{% if my_index_size > 0 %},
   {{ my_tab }}{{ my_tab }}{{ my_tab }}"item": [{% for index in my_index %}{{ my_captures[index] }}{% unless forloop.last %},{% endunless %}{% endfor %}
   {{ my_tab }}{{ my_tab }}{{ my_tab }}]{% endif %}
   {{ my_tab }}{{ my_tab }}}{% unless forloop.last %},{% endunless %}
{% endfor %}
{{ my_tab }}]
    [
        {
            "path": "_assets/head/head.md"
        },
        {
            "path": "_assets/head/beranda.md"
        },
        {
            "path": "_assets/head/abstrak.md"
        },
        {
            "path": "_assets/head/skema.md",
            "item": [
                {
                    "path": "_assets/skema/sequence.md",
                    "item": [
                        {
                            "path": "_assets/skema/sequence/object.md"
                        },
                        {
                            "path": "_assets/skema/sequence/method.md"
                        }
                    ]
                },
                {
                    "path": "_assets/skema/flowchart.md"
                },
                {
                    "path": "_assets/skema/railroad.md"
                }
            ]
        },
        {
            "path": "_assets/head/eksekusi.md"
        },
        {
            "path": "_assets/head/portfolio.md"
        },
        {
            "path": "_assets/head/network.md"
        },
        {
            "path": "_assets/head/publikasi.md"
        },
        {
            "path": "_assets/head/diskusi.md"
        },
        {
            "path": "_assets/head/bottom.md"
        }
    ]

Atribut

Dengan beberapa penyempurnaan didapat code dengan hasil yang cukup stabil sbb:
{
    "version": "https://jsonfeed.org/version/1",
    "title": "{{ site.title | xml_escape }}",
    "description": {{ site.description | jsonify }},
    "home_page_url": "{{ "/" | absolute_url }}",
    "feed_url": "{{ "/feed.json" | absolute_url }}",
    "user_comment": "This feed allows you to read the posts from this site in any feed reader that supports the JSON Feed format.",
    "items": [{% assign assets = site.assets | sort:0 %}{% assign my_tab = "    " %}{% assign my_size = 2 %}{% assign my_path = "" | split: "," %}{% assign atributs = "weight, title, next, content, output, previous, relative_path, id, collection, excerpt, categories, ext, tags, path, url, draft, slug" | split:", " %}{% for asset in assets %}{% assign my_split = asset.path | split: "/" %}{% assign size = my_split | size %}{% if size > my_size %}{% assign my_path = my_path | push:size %}{% assign my_size = size %}{% endif %}{% endfor %}{% assign assets = site.assets | sort: 'weight' %}{% assign my_paths = "" | split: "," %}{% for my_size in my_path reversed %}{% for asset in assets %}{% unless asset.path contains "/head/" %}{% assign my_split = asset.path | split: "/" %}{% assign size = my_split | size %}{% if size == my_size %}{% assign my_paths = my_paths | push:asset %}{% endif %}{% endunless %}{% endfor %}{% endfor %}{% assign my_captures = "" | split: "," %}{% for my_asset in my_paths %}{% assign my_split = my_asset.path | split: "/" %}{% assign my_path_size = my_split | size %}{% assign my_part = my_split | size | minus:2 %}{% assign my_size = my_split | size | times:2 | minus:2 %}{% assign my_dir = my_split[my_part] | prepend: "/" | append: "/" %}{% assign my_title = my_asset.title | downcase | prepend: my_dir | append: "/" %}{% assign my_index = "" | split: "," %}{% for my_push in my_paths %}{% assign my_num = my_push.path | split: "/" | size | minus:my_path_size %}{% if my_num == 1 and my_push.path contains my_title %}{% assign my_index = my_index | push:forloop.index0 %}{% endif %}{% endfor %}{% capture my_capture %}
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"weight": {{ my_asset.weight | jsonify }},
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"title": {{ my_asset.title | jsonify }},{% for item in my_asset %}{% unless atributs contains item %} 
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}{{ item | jsonify }}: {{ my_asset[item] | jsonify }},{% endunless %}{% endfor %}
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"path": {{ my_asset.path | jsonify }},
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"input": {% assign input = "" %}{% for item_hash in site.data.skema %}{% assign item = item_hash[1] %}{% unless item.title == null %}{% if item.title == my_asset.slug %}{% assign input = item.content %}{% endif %}{% endunless %}{% endfor %}{{ input | jsonify }},
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"content": {{ my_asset.content | jsonify }},
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"output": {{ my_asset.output | jsonify }},{% assign my_index_size = my_index | size %}{% if my_index_size > 0 %}
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"items": [{% for index in my_index %}{{ my_captures[index] }}{% unless forloop.last %},{% endunless %}{% endfor %}
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}]{% else %}
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}{{ my_tab }}"items": []{% endif %}
{% for i in (1..my_size) %}{{ my_tab }}{% endfor %}}{% endcapture %}{% assign my_captures =  my_captures | push:my_capture %}{% endfor %}{% assign my_assets = "" | split: "," %}{% for asset in assets %}{% if asset.path contains "/head/" %}{% assign my_assets = my_assets | push:asset %}{% endif %}{% endfor %}{% for my_asset in my_assets %}{% assign my_title = my_asset.title | downcase | prepend: "_assets/" | append: "/" %}{% assign my_index = "" | split: "," %}{% for my_path in my_paths %}{% assign my_size = my_path.path | split: "/" | size %}{% if my_size == 3 and my_path.path contains my_title %}{% assign my_index = my_index | push:forloop.index0 %}{% endif %}{% endfor %}
{{ my_tab }}{{ my_tab }}{
{{ my_tab }}{{ my_tab }}{{ my_tab }}"weight": {{ my_asset.weight | jsonify }},
{{ my_tab }}{{ my_tab }}{{ my_tab }}"title": {{ my_asset.title | jsonify }},{% for item in my_asset %}{% unless atributs contains item %}
{{ my_tab }}{{ my_tab }}{{ my_tab }}{{ item | jsonify }}: {{ my_asset[item] | jsonify }},{% endunless %}{% endfor %}
{{ my_tab }}{{ my_tab }}{{ my_tab }}"path": {{ my_asset.path | jsonify }},
{{ my_tab }}{{ my_tab }}{{ my_tab }}"input": {% assign input = "" %}{% for item_hash in site.data %}{% assign item = item_hash[1] %}{% if item.title == my_asset.slug %}{% assign input = item.content %}{{ input | jsonify }}{% endif %}{% endfor %}{% if input == "" %}{{ input | jsonify }}{% endif %},
{{ my_tab }}{{ my_tab }}{{ my_tab }}"content": {{ my_asset.content | jsonify }},
{{ my_tab }}{{ my_tab }}{{ my_tab }}"output": {{ my_asset.output | jsonify }},{% assign my_index_size = my_index | size %}{% if my_index_size > 0 %}
{{ my_tab }}{{ my_tab }}{{ my_tab }}"items": [{% for index in my_index %}{{ my_captures[index] }}{% unless forloop.last %},{% endunless %}{% endfor %}
{{ my_tab }}{{ my_tab }}{{ my_tab }}]{% else %}
{{ my_tab }}{{ my_tab }}{{ my_tab }}"items": []{% endif %}
{{ my_tab }}{{ my_tab }}}{% unless forloop.last %},{% endunless %}{% endfor %}
{{ my_tab }}]
}

Penyederhanaan Hasil: https://chetabahana.github.io/feed.json

    [
        { 
            "weight": 1,
            "title": "Head",
            "items": []
        },
        { 
            "weight": 2,
            "title": "Beranda",
            "items": []
        },
        { 
            "weight": 3,
            "title": "Abstrak",
            "items": []
        },
        { 
            "weight": 4,
            "title": "Skema",
            "items": [
                { 
                "weight": 1,
                "title": "Sequence",
                    "item": [
                        { 
                        "weight": 1,
                        "title": "Object",
                            "items": []
                        },
                        { 
                        "weight": 2,
                        "title": "Method",
                            "items": []
                        }
                    ]
                },
                { 
                "weight": 2,
                "title": "Flowchart",
                    "items": []
                },
                { 
                "weight": 3,
                "title": "Railroad",
                    "items": []
                }
            ]
        },
        { 
            "weight": 5,
            "title": "Eksekusi",
            "items": []
        },
        { 
            "weight": 6,
            "title": "Portfolio",
            "items": []
        },
        { 
            "weight": 7,
            "title": "Network",
            "items": []
        },
        { 
            "weight": 8,
            "title": "Publikasi",
            "items": []
        },
        { 
            "weight": 9,
            "title": "Diskusi",
            "items": []
        },
        { 
            "weight": 10,
            "title": "Bottom",
            "items": []
        }
    ]

Penerapan Hasil

Referensi

Clone this wiki locally