rawfeed 0.3.1 → 1.0.1

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.
Files changed (195) hide show
  1. checksums.yaml +4 -4
  2. data/.editorconfig +25 -0
  3. data/.gitignore +19 -0
  4. data/.gitlab/ci/gitlab-pages.yml +51 -0
  5. data/.hidden +6 -0
  6. data/404.html +6 -0
  7. data/Gemfile +51 -0
  8. data/README.md +102 -26
  9. data/_config.yml +77 -0
  10. data/_data/generic.yml +29 -0
  11. data/_data/screen/blog.yml +46 -0
  12. data/_data/screen/contact.yml +31 -0
  13. data/_data/screen/donate.yml +45 -0
  14. data/_data/screen/footer.yml +17 -0
  15. data/_data/screen/head.yml +49 -0
  16. data/_data/screen/home.yml +24 -0
  17. data/_data/screen/maintenance.yml +8 -0
  18. data/_data/screen/navbar.yml +41 -0
  19. data/_data/screen/page.yml +12 -0
  20. data/_data/screen/pixels.yml +7 -0
  21. data/_data/screen/pub.yml +4 -0
  22. data/_data/{resume.yml → screen/resume.yml} +8 -8
  23. data/_data/screen/socials.yml +20 -0
  24. data/_includes/assigned +36 -0
  25. data/_includes/layout/blog_search.html +22 -15
  26. data/_includes/layout/disqus.html +7 -8
  27. data/_includes/layout/footer.html +43 -28
  28. data/_includes/layout/giscus.html +15 -19
  29. data/_includes/layout/head.html +97 -75
  30. data/_includes/layout/maintenance.html +14 -11
  31. data/_includes/layout/navbar.html +253 -0
  32. data/_includes/layout/paginator.html +12 -13
  33. data/_includes/{alert → markdown/alert} +2 -2
  34. data/_includes/{chart → markdown/chart} +3 -3
  35. data/_includes/{image → markdown/image} +4 -4
  36. data/_includes/{socials → markdown/socials} +5 -5
  37. data/_includes/{video → markdown/video} +2 -2
  38. data/_layouts/blog/index.html +53 -0
  39. data/_layouts/{post.html → blog/post.html} +50 -36
  40. data/_layouts/blog/posts_by_tag.html +27 -0
  41. data/_layouts/blog/tags.html +32 -0
  42. data/_layouts/contact.html +156 -114
  43. data/_layouts/default.html +53 -48
  44. data/_layouts/donate.html +112 -0
  45. data/_layouts/error.html +9 -7
  46. data/_layouts/home.html +22 -19
  47. data/_layouts/licenses.html +2 -2
  48. data/_layouts/page.html +18 -17
  49. data/_layouts/pixels/index.html +75 -0
  50. data/_layouts/{pixel.html → pixels/post.html} +5 -5
  51. data/_layouts/pub.html +50 -44
  52. data/_layouts/resume.html +308 -265
  53. data/_pages/any-page.md +336 -0
  54. data/_pages/contact.md +16 -0
  55. data/_pages/donate.md +16 -0
  56. data/_pages/licenses.md +17 -0
  57. data/_pages/resume.md +14 -0
  58. data/_pixels/2025-10-15-first-my-pixel.md +34 -0
  59. data/_posts/2025-09-20-welcome-to-jekyll.md +36 -0
  60. data/_posts/2025-09-25-this-post-demonstrates-post-codeblocks.md +141 -0
  61. data/_posts/2025-09-25-this-post-demonstrates-post-content-styles.md +133 -0
  62. data/_posts/2025-10-04-content-styles-and-codeblocks.md +330 -0
  63. data/_sass/components/_markdown.scss +2 -2
  64. data/_sass/includes/_index.scss +2 -2
  65. data/_sass/includes/{_header.scss → _navbar.scss} +2 -6
  66. data/_sass/includes/_toc.scss +146 -0
  67. data/_sass/layouts/_blog.scss +1 -1
  68. data/_sass/layouts/_index.scss +2 -2
  69. data/_sass/layouts/_page.scss +0 -5
  70. data/_sass/layouts/_post.scss +8 -138
  71. data/_sass/layouts/{_tag-posts.scss → _posts_by_tag.scss} +3 -3
  72. data/_sass/layouts/_resume.scss +1 -1
  73. data/_sass/layouts/{_tag.scss → _tags.scss} +10 -6
  74. data/_sass/main.scss +2 -2
  75. data/_sass/theme/_dark.scss +2 -2
  76. data/_sass/theme/_light.scss +1 -1
  77. data/assets/js/blog.js +52 -18
  78. data/assets/js/contact.js +21 -20
  79. data/assets/js/default.js +67 -50
  80. data/assets/js/discus.js +2 -2
  81. data/assets/js/{donation.js → donate.js} +10 -9
  82. data/assets/js/home.js +18 -16
  83. data/assets/js/page.js +50 -172
  84. data/assets/js/toc.js +133 -0
  85. data/assets/json/blog_search.json +6 -6
  86. data/assets/vendors/fuse.min.js +9 -0
  87. data/blog/index.md +14 -0
  88. data/blog/tags/index.md +12 -0
  89. data/exe/rawfeed +29 -0
  90. data/index.md +15 -0
  91. data/lib/rawfeed/build/cleaner.rb +60 -0
  92. data/lib/rawfeed/build/image_minifier.rb +163 -0
  93. data/lib/rawfeed/build/minifier.rb +89 -0
  94. data/lib/rawfeed/build.rb +9 -0
  95. data/lib/rawfeed/command/backup.rb +124 -0
  96. data/lib/rawfeed/command/cli.rb +118 -0
  97. data/lib/rawfeed/command/installer.rb +156 -0
  98. data/lib/rawfeed/command/tools.rb +138 -0
  99. data/lib/rawfeed/{author.rb → content/author.rb} +7 -7
  100. data/lib/rawfeed/content/contact.rb +51 -0
  101. data/lib/rawfeed/content/donate.rb +48 -0
  102. data/lib/rawfeed/{draft.rb → content/draft.rb} +5 -3
  103. data/lib/rawfeed/content/licenses.rb +46 -0
  104. data/lib/rawfeed/{page.rb → content/page.rb} +4 -3
  105. data/lib/rawfeed/{pixel.rb → content/pixel.rb} +7 -4
  106. data/lib/rawfeed/content/post.rb +107 -0
  107. data/lib/rawfeed/{resume.rb → content/resume.rb} +23 -19
  108. data/lib/rawfeed/{layout.rb → core/layout.rb} +1 -1
  109. data/lib/rawfeed/core/utils.rb +103 -0
  110. data/lib/rawfeed/{version.rb → core/version.rb} +1 -1
  111. data/lib/rawfeed/{datelang.rb → plugin/datelang.rb} +5 -6
  112. data/lib/rawfeed/{pub.rb → plugin/pub.rb} +33 -31
  113. data/lib/rawfeed/{reading_time.rb → plugin/reading_time.rb} +5 -4
  114. data/lib/rawfeed/root.rb +3 -0
  115. data/lib/rawfeed.rb +36 -14
  116. data/pixels/index.md +11 -0
  117. data/robots.txt +26 -0
  118. metadata +167 -119
  119. data/_data/options.yml +0 -329
  120. data/_includes/layout/data.liquid +0 -31
  121. data/_includes/layout/header.html +0 -173
  122. data/_layouts/blog.html +0 -52
  123. data/_layouts/donation.html +0 -113
  124. data/_layouts/pixels.html +0 -71
  125. data/_layouts/tag.html +0 -33
  126. data/_layouts/tag_posts.html +0 -28
  127. data/assets/vendor/simple-jekyll-search.js +0 -433
  128. data/assets/vendor/simple-jekyll-search.min.js +0 -6
  129. data/lib/rawfeed/installer.rb +0 -37
  130. data/lib/rawfeed/post.rb +0 -60
  131. data/lib/rawfeed/utils.rb +0 -75
  132. /data/_includes/{details → markdown/details} +0 -0
  133. /data/_includes/{enddetails → markdown/enddetails} +0 -0
  134. /data/_includes/{endtabs → markdown/endtabs} +0 -0
  135. /data/_includes/{tabs → markdown/tabs} +0 -0
  136. /data/assets/images/{avatar_back.png → avatars/back.png} +0 -0
  137. /data/assets/images/{avatar_dark.png → avatars/dark.png} +0 -0
  138. /data/assets/images/{avatar_light.png → avatars/light.png} +0 -0
  139. /data/assets/images/{icons → donate}/bitcoin.svg +0 -0
  140. /data/assets/images/{icons → donate}/card.svg +0 -0
  141. /data/assets/images/{icons → donate}/donation.svg +0 -0
  142. /data/assets/images/{icons → donate}/lightning_network.svg +0 -0
  143. /data/assets/images/{icons → donate}/paypal.svg +0 -0
  144. /data/assets/images/{icons → donate}/pix.svg +0 -0
  145. /data/assets/images/{qrcode_btc_binance.jpg → donate/qrcode_btc_binance.jpg} +0 -0
  146. /data/assets/images/{qrcode_inter.jpg → donate/qrcode_inter.jpg} +0 -0
  147. /data/assets/images/{qrcode_wos.jpg → donate/qrcode_wos.jpg} +0 -0
  148. /data/assets/images/{icons → donate}/wos.png +0 -0
  149. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-grid.css +0 -0
  150. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-grid.css.map +0 -0
  151. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-grid.min.css +0 -0
  152. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-grid.min.css.map +0 -0
  153. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-grid.rtl.css +0 -0
  154. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-grid.rtl.css.map +0 -0
  155. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-grid.rtl.min.css +0 -0
  156. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-grid.rtl.min.css.map +0 -0
  157. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-reboot.css +0 -0
  158. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-reboot.css.map +0 -0
  159. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-reboot.min.css +0 -0
  160. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-reboot.min.css.map +0 -0
  161. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-reboot.rtl.css +0 -0
  162. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-reboot.rtl.css.map +0 -0
  163. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-reboot.rtl.min.css +0 -0
  164. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-reboot.rtl.min.css.map +0 -0
  165. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-utilities.css +0 -0
  166. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-utilities.css.map +0 -0
  167. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-utilities.min.css +0 -0
  168. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-utilities.min.css.map +0 -0
  169. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-utilities.rtl.css +0 -0
  170. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-utilities.rtl.css.map +0 -0
  171. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-utilities.rtl.min.css +0 -0
  172. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap-utilities.rtl.min.css.map +0 -0
  173. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap.css +0 -0
  174. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap.css.map +0 -0
  175. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap.min.css +0 -0
  176. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap.min.css.map +0 -0
  177. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap.rtl.css +0 -0
  178. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap.rtl.css.map +0 -0
  179. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap.rtl.min.css +0 -0
  180. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/css/bootstrap.rtl.min.css.map +0 -0
  181. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.bundle.js +0 -0
  182. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.bundle.js.map +0 -0
  183. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.bundle.min.js +0 -0
  184. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.bundle.min.js.map +0 -0
  185. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.esm.js +0 -0
  186. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.esm.js.map +0 -0
  187. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.esm.min.js +0 -0
  188. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.esm.min.js.map +0 -0
  189. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.js +0 -0
  190. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.js.map +0 -0
  191. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.min.js +0 -0
  192. /data/assets/{vendor/bootstrap → vendors/bootstrap-5.2.3}/js/bootstrap.min.js.map +0 -0
  193. /data/lib/rawfeed/{csp_filters.rb → plugin/csp_filters.rb} +0 -0
  194. /data/lib/rawfeed/{typescript_liquid.rb → plugin/typescript_liquid.rb} +0 -0
  195. /data/lib/rawfeed/{with_class.rb → plugin/with_class.rb} +0 -0
data/_layouts/resume.html CHANGED
@@ -1,289 +1,332 @@
1
- {%- include layout/data.liquid -%}
1
+ {%- include assigned -%}
2
2
 
3
- {%- assign resume = site.data.resume -%}
3
+ {%- if maintenance.enable != true -%}
4
+ <!doctype html>
5
+ <html
6
+ id="top"
7
+ lang="{{ default.lang | default: 'en-US' }}"
8
+ data-theme="light">
9
+ <!-- head -->
10
+ {%- include layout/head.html -%}
11
+ <!-- head -->
12
+ <body>
13
+ <div class="container-fluid">
14
+ <!-- header -->
15
+ {%- include layout/navbar.html -%}
16
+ <!-- header -->
4
17
 
5
- {%- if maintenance_.enable != true -%}
6
- <!DOCTYPE html>
7
- <html id="top" lang="{{ default_.lang | default: 'en-US' }}" data-theme="light">
8
- <!-- head -->
9
- {%- include layout/head.html -%}
10
- <!-- head -->
11
- <body>
12
-
13
- <div class="container-fluid">
14
- <!-- header -->
15
- {%- include layout/header.html -%}
16
- <!-- header -->
17
-
18
- {%- if resume.full_name == "John A. Doe" -%}
19
- <div class="row">
20
- <p style="text-align: center;
21
- background-color: yellow;
22
- color: black;
23
- padding: 10px;
24
- max-width: 860px;
25
- margin: 0 auto;
26
- margin-bottom: 20px">
27
- WARNING: This is sample data. Edit the <strong>_data/resume.yml</strong> file with your information.
28
- </p>
29
- </div>
30
- {%- endif -%}
31
-
32
- <main class="resume{% if default_.background_focus %} background_focus{% endif %} {% if default_.rounding %} rounding{% endif %}" style="max-width: {{ default_.width | default: '860' }}px !important;">
33
-
34
- <!-- button print -->
35
- {%- if resume.buttons.print.enable -%}
36
- <div class="resume-header">
37
- <div class="row d-flex justify-content-end">
38
- <button id="btn-print" class="resume-header__btn-print">{{ resume.buttons.print.text }}</button>
39
- </div>
18
+ {%- if resume.full_name == 'John A. Doe' -%}
19
+ <div class="row">
20
+ <p style="
21
+ text-align: center;
22
+ background-color: yellow;
23
+ color: black;
24
+ padding: 10px;
25
+ max-width: 860px;
26
+ margin: 0 auto;
27
+ margin-bottom: 20px
28
+ ">
29
+ WARNING: This is sample data. Edit the
30
+ <strong>_data/resume.yml</strong>
31
+ file with your information.
32
+ </p>
40
33
  </div>
41
34
  {%- endif -%}
42
- <!-- button print -->
43
35
 
44
- <!-- resume content -->
45
- <div id="print-this" class="resume-content">
46
- <div class="row resume-content__name-wrap">
47
- <div class="col-sm"><h1 class="resume-content__name">{{ resume.full_name }}</h1></div>
48
- </div>
49
- <div class="row">
50
- <div class="col-sm-4 resume-content__sidebar">
51
- {%- if resume.photo.space -%}
52
- <div class="photo"></div>
53
- {%- endif -%}
54
- {%- if resume.sidebar.contact.enable -%}
55
- <section class="section contact">
56
- <h2 class="section-title">{{ resume.sidebar.contact.caption }}</h2>
57
- {%- for item in resume.sidebar.contact.items -%}
58
- <div class="section-item">
59
- {%- if item.key -%}<span class="section-item__title">{{ item.key }}:&nbsp;</span>{%- endif -%}
60
- {%- if item.link -%}
61
- <a href="{{ item.link }}" target="_blank">{{ item.value }}</a>
62
- {%- else -%}
63
- {{ item.value }}
64
- {%- endif -%}
65
- </div>
66
- {%- endfor -%}
67
- </section>
68
- {%- endif -%}
69
- {%- if resume.sidebar.personal_details.enable -%}
70
- <section class="section personal_details">
71
- <h2 class="section-title">{{ resume.sidebar.personal_details.caption }}</h2>
72
- {%- for item in resume.sidebar.personal_details.items -%}
73
- <div class="section-item">
74
- {%- if item.title -%}<span class="section-item__title">{{ item.title }}:&nbsp;</span>{%- endif -%}
75
- {{ item.value }}
76
- </div>
77
- {%- endfor -%}
78
- </section>
79
- {%- endif -%}
80
- {%- if resume.sidebar.languages.enable -%}
81
- <section class="section languages">
82
- <h2 class="section-title">{{ resume.sidebar.languages.caption }}</h2>
83
- {%- for lang in resume.sidebar.languages.names -%}
84
- <div class="section-item">-&nbsp;{{ lang.value }}</div>
85
- {%- endfor -%}
86
- </section>
87
- {%- endif -%}
88
- {%- if resume.sidebar.education.enable -%}
89
- <section class="section education">
90
- <h2 class="section-title">{{ resume.sidebar.education.caption }}</h2>
91
- {%- for education in resume.sidebar.education.section -%}
92
- <div class="section-item">
93
- <div class="item degree"><span class="marker">•&nbsp;</span>{{ education.degree }}</div>
94
- {%- if education.link -%}
95
- <div class="item link">-&nbsp;<a href="{{ education.link }}" target="_blank">{{ education.university }}</a></div>
96
- {%- else -%}
97
- <div class="item university">-&nbsp;{{ education.university }}</div>
98
- {%- endif -%}
99
- <span class="item time">-&nbsp;{{ education.time }}</span>
100
- </div>
101
- {%- endfor -%}
102
- </section>
103
- {%- endif -%}
104
- {%- if resume.sidebar.skills.enable -%}
105
- <section class="section skills">
106
- <h2 class="section-title">{{ resume.sidebar.skills.caption }}</h2>
107
- {%- for item in resume.sidebar.skills.section -%}
108
- <div class="section-item">
109
- <div class="group"><span class="marker">•&nbsp;</span>{{ item.group }}:</div>
110
- <div class="tools">
111
- {%- for tool in item.tools -%}
112
- <span class="tool">{{ tool }}{% unless forloop.last %},{% endunless %}</span>
113
- {%- endfor -%}
114
- </div>
115
- </div>
116
- {%- endfor -%}
117
- </section>
118
- {%- endif -%}
36
+ <main class="resume{% if default.background_focus %} background_focus{% endif %} {% if default.rounding %} rounding{% endif %}" style="max-width: {{ default.width | default: '860' }}px !important;">
37
+ <!-- button print -->
38
+ {%- if resume.buttons.print.enable -%}
39
+ <div class="resume-header">
40
+ <div class="row d-flex justify-content-end">
41
+ <button id="btn-print" class="resume-header__btn-print">{{ resume.buttons.print.text }}</button>
42
+ </div>
119
43
  </div>
120
- <div class="col-sm-8 resume-content__body">
121
- {%- if resume.body.sumary.enable -%}
122
- <section class="row section sumary">
123
- <h2 class="section-title">{{ resume.body.sumary.caption }}</h2>
124
- <div class="section-content">{{ resume.body.sumary.content | markdownify }}</div>
125
- </section>
126
- {%- endif -%}
127
- {%- if resume.body.experience.enable -%}
128
- <section class="row section experience">
129
- <h2 class="section-title">{{ resume.body.experience.caption }}</h2>
130
- {%- for exp in resume.body.experience.section -%}
131
- <div class="section-item">
132
- <div class="row">
133
- <div class="role-company">
134
- <span class="marker">•&nbsp;</span><span class="role">{{ exp.role }}</span>&nbsp;—&nbsp;
135
- {%- if exp.link -%}
136
- <a class="company" href="{{ exp.link }}" target="_blank">{{ exp.company }}</a>&nbsp;
137
- {%- else -%}
138
- <span class="company">{{ exp.company }}</span>&nbsp;
139
- {%- endif -%}
140
- |&nbsp;<span class="time">{{ exp.time }}</span>
141
- {%- if exp.description -%}<div class="description">{{ exp.description }}</div>{%- endif -%}
142
- </div>
143
- </div>
144
- <div class="row">
145
- <div class="details">{{ exp.details | markdownify }}</div>
146
- </div>
147
- </div>
148
- {%- endfor -%}
149
- </section>
150
- {%- endif -%}
151
- {%- if resume.body.certificates.enable -%}
152
- <section class="row section certificate">
153
- <h2 class="section-title">{{ resume.body.certificates.caption }}</h2>
154
- {%- for cert in resume.body.certificates.section -%}
155
- <div class="section-item">
156
- <div class="row">
157
- <div class="title"><span class="marker">•&nbsp;</span>
158
- {%- if cert.certificate -%}
159
- <a href="{{ cert.certificate }}" target="_blank">{{ cert.course }}
160
- <small>{{ cert.certificate }}</small>
161
- </a>
162
- {%- else -%}
163
- <strong>{{ cert.course }}</strong>
164
- {%- endif -%}
44
+ {%- endif -%}
45
+ <!-- button print -->
46
+
47
+ <!-- resume content -->
48
+ <div id="print-this" class="resume-content">
49
+ <div class="row resume-content__name-wrap">
50
+ <div class="col-sm">
51
+ <h1 class="resume-content__name">{{ resume.full_name }}</h1>
52
+ </div>
53
+ </div>
54
+ <div class="row">
55
+ <div class="col-sm-4 resume-content__sidebar">
56
+ {%- if resume.photo.space -%}
57
+ <div class="photo"></div>
58
+ {%- endif -%}
59
+ {%- if resume.sidebar.contact.enable -%}
60
+ <section class="section contact">
61
+ <h2 class="section-title">{{ resume.sidebar.contact.caption }}</h2>
62
+ {%- for item in resume.sidebar.contact.items -%}
63
+ <div class="section-item">
64
+ {%- if item.key -%}
65
+ <span class="section-item__title">{{ item.key }}:&nbsp;</span>
66
+ {%- endif -%}
67
+ {%- if item.link -%}
68
+ <a href="{{ item.link }}" target="_blank">{{ item.value }}</a>
69
+ {%- else -%}
70
+ {{ item.value }}
71
+ {%- endif -%}
165
72
  </div>
166
- </div>
167
- <div class="row">
168
- <div class="period">
169
- -&nbsp;
170
- {%- if cert.period.year-%}&nbsp;<span class="time">{{ cert.period.year }}</span>{%- endif-%}
171
- {%- if cert.period.hours-%}&nbsp;—&nbsp;<span class="hours">{{ cert.period.hours }}</span>{%- endif-%}
172
- </div>
73
+ {%- endfor -%}
74
+ </section>
75
+ {%- endif -%}
76
+ {%- if resume.sidebar.personal_details.enable -%}
77
+ <section class="section personal_details">
78
+ <h2 class="section-title">{{ resume.sidebar.personal_details.caption }}</h2>
79
+ {%- for item in resume.sidebar.personal_details.items -%}
80
+ <div class="section-item">
81
+ {%- if item.title -%}
82
+ <span class="section-item__title">{{ item.title }}:&nbsp;</span>
83
+ {%- endif -%}
84
+ {{ item.value }}
173
85
  </div>
174
- <div class="row">
175
- <div class="company">
176
- {%- if cert.company.site -%}
177
- -&nbsp;&nbsp;<a href="{{ cert.company.site }}" target="_blank">{{ cert.company.name }}
178
- </a>
86
+ {%- endfor -%}
87
+ </section>
88
+ {%- endif -%}
89
+ {%- if resume.sidebar.languages.enable -%}
90
+ <section class="section languages">
91
+ <h2 class="section-title">{{ resume.sidebar.languages.caption }}</h2>
92
+ {%- for lang in resume.sidebar.languages.names -%}
93
+ <div class="section-item">-&nbsp;{{ lang.value }}</div>
94
+ {%- endfor -%}
95
+ </section>
96
+ {%- endif -%}
97
+ {%- if resume.sidebar.education.enable -%}
98
+ <section class="section education">
99
+ <h2 class="section-title">{{ resume.sidebar.education.caption }}</h2>
100
+ {%- for education in resume.sidebar.education.section -%}
101
+ <div class="section-item">
102
+ <div class="item degree">
103
+ <span class="marker">•&nbsp;</span>
104
+ {{ education.degree }}</div>
105
+ {%- if education.link -%}
106
+ <div class="item link">
107
+ -&nbsp;<a href="{{ education.link }}" target="_blank">{{ education.university }}</a>
108
+ </div>
179
109
  {%- else -%}
180
- -&nbsp;<span>{{ cert.company.name }}</span>
110
+ <div class="item university">-&nbsp;{{ education.university }}</div>
181
111
  {%- endif -%}
112
+ <span class="item time">-&nbsp;{{ education.time }}</span>
182
113
  </div>
183
- </div>
184
- </div>
185
- {%- endfor -%}
186
- </section>
187
- {%- endif -%}
188
- {%- if resume.body.publications.enable -%}
189
- <section class="row section publications">
190
- <h2 class="section-title">{{ resume.body.publications.caption }}</h2>
191
- {%- for pub in resume.body.publications.section -%}
192
- <div class="section-item">
193
- <div class="row">
194
- <div class="title"><p><span class="marker">•&nbsp;</span>
195
- {%- if pub.link -%}
196
- <a href="{{ pub.link }}" target="_blank">{{ pub.title }}
197
- <small>{{ pub.link }}</small>
198
- </a>
199
- {%- else -%}
200
- <span>{{ pub.title }}</span>
201
- {%- endif -%}</p>
114
+ {%- endfor -%}
115
+ </section>
116
+ {%- endif -%}
117
+ {%- if resume.sidebar.skills.enable -%}
118
+ <section class="section skills">
119
+ <h2 class="section-title">{{ resume.sidebar.skills.caption }}</h2>
120
+ {%- for item in resume.sidebar.skills.section -%}
121
+ <div class="section-item">
122
+ <div class="group">
123
+ <span class="marker">•&nbsp;</span>
124
+ {{ item.group }}:</div>
125
+ <div class="tools">
126
+ {%- for tool in item.tools -%}
127
+ <span class="tool">
128
+ {{- tool -}}
129
+ {%- unless forloop.last %},{% endunless -%}
130
+ </span>
131
+ {%- endfor -%}
132
+ </div>
202
133
  </div>
203
- </div>
204
- <div class="row">
205
- <div class="authors"><p>-&nbsp;{{ pub.authors }}</p></div>
206
- </div>
207
- <div class="row">
208
- <div class="conference"><p>-&nbsp;{{ pub.conference }}</p></div>
209
- </div>
210
- </div>
211
- {%- endfor -%}
212
- </section>
213
- {%- endif -%}
214
- {%- if resume.body.projects.enable -%}
215
- <section class="row section projects">
216
- <h2 class="section-title">{{ resume.body.projects.caption }}</h2>
217
- {%- for proj in resume.body.projects.section -%}
218
- <div class="section-item">
219
- <div class="row">
220
- <div class="title">
221
- <p><span class="marker">•&nbsp;</span>
222
- {%- if proj.link -%}
223
- <a href="{{ proj.link }}" target="_blank">{{ proj.title }}
224
- <small>{{ proj.link }}</small>
225
- </a>
226
- {%- else -%}
227
- <span>{{ proj.title }}</span>
228
- {%- endif -%}
229
- </p>
134
+ {%- endfor -%}
135
+ </section>
136
+ {%- endif -%}
137
+ </div>
138
+ <div class="col-sm-8 resume-content__body">
139
+ {%- if resume.body.summary.enable -%}
140
+ <section class="row section summary">
141
+ <h2 class="section-title">{{ resume.body.summary.caption }}</h2>
142
+ <div class="section-content">{{ resume.body.summary.content | markdownify }}</div>
143
+ </section>
144
+ {%- endif -%}
145
+ {%- if resume.body.experience.enable -%}
146
+ <section class="row section experience">
147
+ <h2 class="section-title">{{ resume.body.experience.caption }}</h2>
148
+ {%- for exp in resume.body.experience.section -%}
149
+ <div class="section-item">
150
+ <div class="row">
151
+ <div class="role-company">
152
+ <span class="marker">•&nbsp;</span>
153
+ <span class="role">{{ exp.role }}</span>&nbsp;—&nbsp;
154
+ {%- if exp.link -%}
155
+ <a
156
+ class="company"
157
+ href="{{ exp.link }}"
158
+ target="_blank">{{ exp.company }}</a>&nbsp;
159
+ {%- else -%}
160
+ <span class="company">{{ exp.company }}</span>&nbsp;
161
+ {%- endif -%}
162
+ |&nbsp;<span class="time">{{ exp.time }}</span>
163
+ {%- if exp.description -%}
164
+ <div class="description">{{ exp.description }}</div>
165
+ {%- endif -%}
166
+ </div>
167
+ </div>
168
+ <div class="row">
169
+ <div class="details">{{ exp.details | markdownify }}</div>
170
+ </div>
171
+ </div>
172
+ {%- endfor -%}
173
+ </section>
174
+ {%- endif -%}
175
+ {%- if resume.body.certificates.enable -%}
176
+ <section class="row section certificate">
177
+ <h2 class="section-title">{{ resume.body.certificates.caption }}</h2>
178
+ {%- for cert in resume.body.certificates.section -%}
179
+ <div class="section-item">
180
+ <div class="row">
181
+ <div class="title">
182
+ <span class="marker">•&nbsp;</span>
183
+ {%- if cert.certificate -%}
184
+ <a href="{{ cert.certificate }}" target="_blank">
185
+ {{- cert.course }}
186
+ <small>{{ cert.certificate }}</small>
187
+ </a>
188
+ {%- else -%}
189
+ <strong>{{ cert.course }}</strong>
190
+ {%- endif -%}
191
+ </div>
192
+ </div>
193
+ <div class="row">
194
+ <div class="period">
195
+ -&nbsp;
196
+ {%- if cert.period.year -%}
197
+ &nbsp;<span class="time">{{ cert.period.year }}</span>
198
+ {%- endif -%}
199
+ {%- if cert.period.hours -%}
200
+ &nbsp;—&nbsp;<span class="hours">{{ cert.period.hours }}</span>
201
+ {%- endif -%}
202
+ </div>
203
+ </div>
204
+ <div class="row">
205
+ <div class="company">
206
+ {%- if cert.company.site -%}
207
+ -&nbsp;&nbsp;<a href="{{ cert.company.site }}" target="_blank">
208
+ {{- cert.company.name }}
209
+ </a>
210
+ {%- else -%}
211
+ -&nbsp;<span>{{ cert.company.name }}</span>
212
+ {%- endif -%}
213
+ </div>
214
+ </div>
215
+ </div>
216
+ {%- endfor -%}
217
+ </section>
218
+ {%- endif -%}
219
+ {%- if resume.body.publications.enable -%}
220
+ <section class="row section publications">
221
+ <h2 class="section-title">{{ resume.body.publications.caption }}</h2>
222
+ {%- for pub in resume.body.publications.section -%}
223
+ <div class="section-item">
224
+ <div class="row">
225
+ <div class="title">
226
+ <p>
227
+ <span class="marker">•&nbsp;</span>
228
+ {%- if pub.link -%}
229
+ <a href="{{ pub.link }}" target="_blank">
230
+ {{- pub.title }}
231
+ <small>{{ pub.link }}</small>
232
+ </a>
233
+ {%- else -%}
234
+ <span>{{ pub.title }}</span>
235
+ {%- endif -%}
236
+ </p>
237
+ </div>
238
+ </div>
239
+ <div class="row">
240
+ <div class="authors">
241
+ <p>-&nbsp;{{ pub.authors }}</p>
242
+ </div>
243
+ </div>
244
+ <div class="row">
245
+ <div class="conference">
246
+ <p>-&nbsp;{{ pub.conference }}</p>
247
+ </div>
248
+ </div>
230
249
  </div>
231
- </div>
232
- <div class="row">
233
- <div class="details">{{ proj.details | markdownify }}</div>
234
- </div>
235
- </div>
236
- {%- endfor -%}
237
- </section>
238
- {%- endif -%}
239
- {%- if resume.body.volunteering.enable -%}
240
- <section class="row section volunteering">
241
- <h2 class="section-title">{{ resume.body.volunteering.caption }}</h2>
242
- {%- for vol in resume.body.volunteering.section -%}
243
- <div class="section-item">
244
- <div class="row">
245
- <div class="role-company">
246
- <span class="marker">•&nbsp;</span><span class="role">{{ vol.role }}</span>&nbsp;—&nbsp;
247
- {%- if vol.link -%}
248
- <a class="company" href="{{ vol.link }}" target="_blank">{{ vol.company }}</a>&nbsp;
249
- {%- else -%}
250
- <span class="company">{{ vol.company }}</span>&nbsp;
251
- {%- endif -%}
252
- |&nbsp;<span class="time">{{ vol.time }}</span>
250
+ {%- endfor -%}
251
+ </section>
252
+ {%- endif -%}
253
+ {%- if resume.body.projects.enable -%}
254
+ <section class="row section projects">
255
+ <h2 class="section-title">{{ resume.body.projects.caption }}</h2>
256
+ {%- for proj in resume.body.projects.section -%}
257
+ <div class="section-item">
258
+ <div class="row">
259
+ <div class="title">
260
+ <p>
261
+ <span class="marker">•&nbsp;</span>
262
+ {%- if proj.link -%}
263
+ <a href="{{ proj.link }}" target="_blank">
264
+ {{- proj.title }}
265
+ <small>{{ proj.link }}</small>
266
+ </a>
267
+ {%- else -%}
268
+ <span>{{ proj.title }}</span>
269
+ {%- endif -%}
270
+ </p>
271
+ </div>
272
+ </div>
273
+ <div class="row">
274
+ <div class="details">{{ proj.details | markdownify }}</div>
275
+ </div>
253
276
  </div>
254
- </div>
255
- <div class="row">
256
- <div class="details">{{ vol.details | markdownify }}</div>
257
- </div>
258
- </div>
259
- {%- endfor -%}
260
- </section>
261
- {%- endif -%}
262
- {%- if resume.body.markdown.enable -%}
263
- <section class="row section markdown">
264
- <h2 class="section-title">{{ resume.body.markdown.caption }}</h2>
265
- <div class="section-content">{{ resume.body.markdown.content | markdownify }}</div>
266
- </section>
267
- {%- endif -%}
277
+ {%- endfor -%}
278
+ </section>
279
+ {%- endif -%}
280
+ {%- if resume.body.volunteering.enable -%}
281
+ <section class="row section volunteering">
282
+ <h2 class="section-title">{{ resume.body.volunteering.caption }}</h2>
283
+ {%- for vol in resume.body.volunteering.section -%}
284
+ <div class="section-item">
285
+ <div class="row">
286
+ <div class="role-company">
287
+ <span class="marker">•&nbsp;</span>
288
+ <span class="role">{{ vol.role }}</span>&nbsp;—&nbsp;
289
+ {%- if vol.link -%}
290
+ <a
291
+ class="company"
292
+ href="{{ vol.link }}"
293
+ target="_blank">{{ vol.company }}</a>&nbsp;
294
+ {%- else -%}
295
+ <span class="company">{{ vol.company }}</span>&nbsp;
296
+ {%- endif -%}
297
+ |&nbsp;<span class="time">{{ vol.time }}</span>
298
+ </div>
299
+ </div>
300
+ <div class="row">
301
+ <div class="details">{{ vol.details | markdownify }}</div>
302
+ </div>
303
+ </div>
304
+ {%- endfor -%}
305
+ </section>
306
+ {%- endif -%}
307
+ {%- if resume.body.markdown.enable -%}
308
+ <section class="row section markdown">
309
+ <h2 class="section-title">{{ resume.body.markdown.caption }}</h2>
310
+ <div class="section-content">{{ resume.body.markdown.content | markdownify }}</div>
311
+ </section>
312
+ {%- endif -%}
313
+ </div>
268
314
  </div>
269
315
  </div>
270
- </div>
271
316
  <!-- resume content -->
272
- </main>
273
- </div>
317
+ </main>
318
+ </div>
274
319
 
275
- {%- include layout/footer.html -%}
276
- </body>
320
+ {%- include layout/footer.html -%}
321
+ </body>
277
322
 
323
+ <!-- Scripts -->
324
+ <script src="{{ '/assets/vendors/bootstrap-5.2.3/js/bootstrap.bundle.min.js' | relative_url }}"></script>
325
+ <script src="{{ '/assets/js/default.js' | relative_url }}"></script>
326
+ <script src="{{ '/assets/js/resume.js' | relative_url }}"></script>
278
327
  <!-- Scripts -->
279
- <script src="{{ '/assets/vendor/bootstrap/js/bootstrap.bundle.min.js' | relative_url }}"></script>
280
- <script src="{{ '/assets/js/default.js' | relative_url }}"></script>
281
- <script src="{{ '/assets/js/resume.js' | relative_url }}"></script>
282
- <!-- Scripts -->
283
-
284
- </html>
328
+ </html>
285
329
 
286
330
  {%- else -%}
287
331
  {%- include layout/maintenance.html -%}
288
332
  {%- endif -%}
289
-