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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5b4a5c7ff703bd0049e8713cc0d08a73698657b85a0cccbf687545cb63d5476e
4
- data.tar.gz: 1787cc1fcda221d1aad7fa838abaecb625428c6ea03f81a7b2e08b7d4976eaf1
3
+ metadata.gz: f33a4c25a8f955857a877b15581333c27091a3d045cdf771c8e31703a655f736
4
+ data.tar.gz: b89e3acccc0645e8eb163a1a846474ca4416cae78f7afd60af398a365e4d0b95
5
5
  SHA512:
6
- metadata.gz: eb0bea3dd530c918108078babc853563f0a404801807f56dbcff81694b26812f6e9edb09b49b11e6a00db175ffd84b92efe363260b1d6a5a81ff142c4f2c3ffe
7
- data.tar.gz: '0251043911fc99d55b9b45d0cf991fb350f5ba6f3902bdbfce97f1919c221f86041ac4a46f03284888e74207d73036661da45768ecc924eec0407a052b8d4687'
6
+ metadata.gz: 531654b76bf0eedaa724a6c7714dfcfa0d6d5b847632050ae95cadb20dcc7420b5cf00c8a9c232aaf11e9e05b1a4350294d996575b38e3a34d1a61a88a6709af
7
+ data.tar.gz: 027ac5bb84a4cdd14a2d0f42f5af9a4aca5e33ad44838f579d34840fa100925f0d7ba0d8d4ef0e51fe09bffcb7437b05375432f108de2ff5af3ee4b2962d998b
data/.editorconfig ADDED
@@ -0,0 +1,25 @@
1
+ # EditorConfig is awesome: https://EditorConfig.org
2
+
3
+ # top-most EditorConfig file
4
+ root = true
5
+
6
+ [*]
7
+ charset = utf-8
8
+ end_of_line = lf
9
+ indent_size = 2
10
+ indent_style = space
11
+ insert_final_newline = true
12
+ trim_trailing_whitespace = true
13
+ max_line_length = 80
14
+
15
+ [*.{md,markdown}]
16
+ max_line_length = 100
17
+ insert_final_newline = false
18
+
19
+ [Makefile]
20
+ indent_style = tab
21
+ max_line_length = 100
22
+
23
+ [LICENSE]
24
+ indent_style = tab
25
+ indent_size = 4
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ .rspec_status
2
+ _site/
3
+ .site_build/
4
+ tmp/
5
+ node_modules/
6
+ .bundle-cache/
7
+ .sass-cache/
8
+ .jekyll-cache/
9
+ rawfeed-*/
10
+ .jekyll-metadata/
11
+ pkg/
12
+ !.vscode/
13
+
14
+ ~*
15
+ *.Identifier
16
+ *.bak
17
+ .log
18
+ *.gem
19
+ .envrc
@@ -0,0 +1,51 @@
1
+ # --------------------------------Note-----------------------------------------
2
+
3
+ # 1. This action will be copied to the end-user (production) project. It has no purpose for
4
+ # development.
5
+
6
+ # 2. Usage:
7
+ # To enable this CI, create the .gitlab-ci.yml file in the project root and add the following content:
8
+
9
+ # include:
10
+ # - local: .gitlab/ci/gitlab-pages.yml
11
+
12
+ # ------------------------------------------------------------------------------
13
+
14
+ ### --- Dear user, uncomment this block if you want to publish the site on GitLab Pages.
15
+
16
+ # image: node:20-alpine
17
+
18
+ # cache:
19
+ # paths:
20
+ # - .bundle-cache/
21
+
22
+ # stages:
23
+ # - build
24
+ # - deploy
25
+
26
+ # # A job that installs dependencies and compiles the website
27
+ # build_job:
28
+ # stage: build
29
+ # script:
30
+ # - apk add --no-cache ruby ruby-dev
31
+ # - gem install bundler
32
+ # # - bundle config set --local path '.bundle-cache'
33
+ # - bundle install
34
+ # artifacts:
35
+ # paths:
36
+ # - _site/
37
+ # only:
38
+ # - main
39
+
40
+ # # A job that deploys compiled files to GitLab Pages
41
+ # pages:
42
+ # stage: deploy
43
+ # script:
44
+ # - mv _site/ public/
45
+ # artifacts:
46
+ # paths:
47
+ # - public
48
+ # only:
49
+ # - main
50
+
51
+ ### --- Dear user, uncomment this block if you want to publish the site on GitLab Pages.
data/.hidden ADDED
@@ -0,0 +1,6 @@
1
+ package-lock.json
2
+ Gemfile.lock
3
+ 404.html
4
+ node_modules
5
+ package.json
6
+ Gemfile
data/404.html ADDED
@@ -0,0 +1,6 @@
1
+ ---
2
+ layout: error
3
+ permalink: /404.html
4
+ ---
5
+
6
+ <!-- Nothing needs to be added here. -->
data/Gemfile ADDED
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "https://rubygems.org"
4
+
5
+ ## [ rawfeed ] Do not modify this block unless you know what you are doing.
6
+ if ENV["RAWFEED_DEV_PATH"] && File.directory?(ENV["RAWFEED_DEV_PATH"])
7
+ gem "rawfeed", path: ENV["RAWFEED_DEV_PATH"]
8
+ else
9
+ ## --- To update rawfeed-jekyll, simply update the version here ---
10
+ gem "rawfeed", "~> 1.0.0"
11
+ end
12
+
13
+ # Core
14
+ gem "jekyll", ">= 4.0", "< 5.0"
15
+ gem "rake", "~> 13.0"
16
+
17
+ # Jekyll plugins
18
+ group :jekyll_plugins do
19
+ gem "jekyll-sitemap", "~> 1.4"
20
+ gem "jekyll-feed", "~> 0.17.0"
21
+ gem "jekyll-archives", "~> 2.3.0"
22
+ gem "jekyll-paginate-v2", "~> 3.0.0"
23
+ end
24
+
25
+ # Utilities
26
+ gem "colorize", "~> 1.1.0"
27
+ gem "logger", "~> 1.4"
28
+ gem "rubyzip", "~> 2.3"
29
+
30
+ # Build and minification
31
+ gem "uglifier", "~> 4.2.0"
32
+
33
+ # Windows and JRuby
34
+ platforms :windows, :jruby do
35
+ gem "tzinfo", "~> 1.2"
36
+ gem "tzinfo-data"
37
+ end
38
+
39
+ # Windows file watcher
40
+ gem "wdm", "~> 0.1.1", platforms: [:windows]
41
+
42
+ # Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
43
+ # do not have a Java counterpart.
44
+ gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
45
+
46
+ # Development dependencies
47
+ group :development, :test do
48
+ gem "rspec", "~> 3.12"
49
+ gem "github_changelog_generator", "~> 1.8"
50
+ gem "faraday-retry", "~> 1.0"
51
+ end
data/README.md CHANGED
@@ -1,65 +1,141 @@
1
1
  <p align="center">
2
2
  <img src=".github/logo.png" alt="Rawfeed" width="150">
3
3
  <br>
4
- <small>rawfeed-jekyll — A raw Jekyll theme for minimalists</small>
5
- <br>
6
- <a href="https://badge.fury.io/rb/rawfeed" target="_blank"><img src="https://badge.fury.io/rb/rawfeed.svg" alt="Gem Version" height="18"></a>
4
+ <small>rawfeed-jekyll — A batteries-included Jekyll framework and CLI</small>
5
+ <br><br>
6
+ <a href="https://badge.fury.io/rb/rawfeed" target="_blank"><img src="https://badge.fury.io/rb/rawfeed.svg" alt="Gem Version"></a>
7
+ <a href="https://github.com/rawfeed/rawfeed-jekyll/actions/workflows/ci.yml" target="_blank"><img src="https://github.com/rawfeed/rawfeed-jekyll/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
8
+ <a href="https://rubygems.org/gems/rawfeed" target="_blank"><img src="https://img.shields.io/gem/dt/rawfeed?label=downloads" alt="RubyGems Downloads"></a>
9
+ <a href="https://rubygems.org/gems/rawfeed" target="_blank"><img src="https://img.shields.io/badge/ruby-%3E%3D%203.0-ruby" alt="Ruby >= 3.0"></a>
10
+ <a href="LICENSE" target="_blank"><img src="https://img.shields.io/badge/license-MIT-blue" alt="License MIT"></a>
7
11
  <br>
12
+ <a href="https://github.com/rawfeed/rawfeed-jekyll/issues" target="_blank"><img src="https://img.shields.io/github/issues/rawfeed/rawfeed-jekyll" alt="GitHub Issues"></a>
13
+ <a href="https://github.com/rawfeed/rawfeed-jekyll/pulls" target="_blank"><img src="https://img.shields.io/github/issues-pr/rawfeed/rawfeed-jekyll" alt="GitHub Pull Requests"></a>
14
+ <a href="https://www.rubydoc.info/gems/rawfeed" target="_blank"><img src="https://img.shields.io/badge/docs-rubydoc-blue" alt="RubyDoc"></a>
15
+ <br><br>
8
16
  <a href="https://rawfeed.github.io/rawfeed-jekyll" target="_blank">Documentation</a>
9
17
  </p>
10
18
 
11
- # For developer
19
+ # rawfeed-jekyll
20
+
21
+ **rawfeed-jekyll** is a batteries-included Jekyll framework and CLI for Ruby 3.x. It provides a modern workflow for site creation, theme distribution, content management, and gem-based package delivery.
22
+
23
+ ## Project resources
24
+
25
+ - [CONTRIBUTING.md](CONTRIBUTING.md)
26
+ - [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
27
+ - [CHANGELOG.md](CHANGELOG.md)
28
+ - [RELEASE_CHECKLIST.md](RELEASE_CHECKLIST.md)
29
+ - `.github/ISSUE_TEMPLATE/`
30
+ - `.github/pull_request_template.md`
31
+ - `.github/release_template.md`
12
32
 
13
33
  ## Requirements
14
34
 
15
35
  | Required | Version | How to verify | How to install |
16
36
  | -------- | ------- | ------------- | --------------------------------- |
17
- | Git | >= 2 | `git -v` | [Git](http://git-scm.com/) |
18
37
  | Ruby | >= 3.0 | `ruby -v` | [Ruby](https://www.ruby-lang.org) |
19
- | Gem | >= 3.0 | `gem -v` | **Ruby** contains **Gem** |
38
+ | Gem | >= 3.0 | `gem -v` | Bundled with Ruby |
20
39
  | Bundler | >= 2.0 | `bundler -v` | `gem install bundler` |
21
- | NodeJs | >= 20 | `node -v` | [NodeJS](https://nodejs.org) |
22
- | Npm | >= 9 | `npm -v` | **NodeJS** contains **Npm** |
23
40
 
41
+ ## Install
42
+
43
+ See the full documentation at [https://rawfeed.github.io/rawfeed-jekyll/](https://rawfeed.github.io/rawfeed-jekyll/).
24
44
 
25
- ## Clone
45
+ ## Developer setup
26
46
 
27
47
  ```shell
28
- git clone https://github.com/rawfeed/rawfeed-jekyll.git "rawfeed"; cd rawfeed; npm install
48
+ git clone https://github.com/rawfeed/rawfeed-jekyll.git
49
+ cd rawfeed-jekyll
50
+ export RAWFEED_DEV_PATH="$PWD"
51
+ bundle install
52
+ bundle exec rawfeed serve
29
53
  ```
30
54
 
31
- ## Gem
55
+ > [!TIP]
56
+ >
57
+ > ### Using direnv
58
+ >
59
+ > ```bash
60
+ > echo "export RAWFEED_DEV_PATH=\"\$PWD\"" > .envrc
61
+ > direnv allow
62
+ > ```
63
+
64
+ ## Contribution workflow
65
+
66
+ This repository includes GitHub templates for issues and pull requests.
67
+
68
+ - Bug reports: `.github/ISSUE_TEMPLATE/bug_report.md`
69
+ - Feature requests: `.github/ISSUE_TEMPLATE/feature_request.md`
70
+ - Pull requests: `.github/pull_request_template.md`
71
+
72
+ See [CONTRIBUTING.md](CONTRIBUTING.md) for the complete contributor workflow, release process, and code guidelines.
73
+
74
+ ## Release process
75
+
76
+ The release workflow is documented in [RELEASE_CHECKLIST.md](RELEASE_CHECKLIST.md) and [CHANGELOG.md](CHANGELOG.md).
77
+
78
+ - Version is defined in `lib/rawfeed/core/version.rb`
79
+ - Package metadata is in `rawfeed.gemspec`
80
+ - CI is configured in `.github/workflows/ci.yml`
81
+ - Release notes are captured by `.github/release_template.md`
82
+ - Release branches should follow `release/<version>` and use `RELEASE_CHECKLIST.md` as the release branch base
83
+ - Changelog automation can be done with `github_changelog_generator` in development
32
84
 
33
- **(1)** - Compile the gem:
85
+ ## Continuous integration
86
+
87
+ This repository uses GitHub Actions to run the complete release workflow on pull requests to `main` and on pushes to `main` or `release/**` branches.
88
+
89
+ The CI job performs:
90
+
91
+ - `bundle install` with Bundler cache
92
+ - library loading validation via `bundle exec ruby -Ilib -e 'require "rawfeed"'
93
+ - `bundle exec rspec` for test coverage
94
+ - `bundle exec rawfeed build --destination .site_build` to ensure the theme builds cleanly
95
+ - `gem build rawfeed.gemspec` to verify package creation
96
+
97
+ ## Changelog generation
98
+
99
+ This repository includes a development tool to help generate changelogs from GitHub issues and tags.
100
+ The project is configured in `.github_changelog_generator`, which uses `key=value` pairs (one per line) — **not** the CLI `--flag value` format.
101
+ By default, the tool generates or updates `CHANGELOG.md` in the repository root.
102
+
103
+ Use the following command after installing development dependencies:
34
104
 
35
105
  ```shell
36
- npm run generate:gem
106
+ bundle exec github_changelog_generator
37
107
  ```
38
108
 
39
- **(2)** - Publish the gem:
109
+ If you prefer a manual approach, keep editing `CHANGELOG.md` by hand.
110
+
111
+ ## Build and publish
112
+
113
+ Build the gem package:
40
114
 
41
115
  ```shell
42
- npm run publish:gem
116
+ bundle exec rake build
43
117
  ```
44
118
 
45
- For more tasks, see: `npm run rake:tasks`
119
+ Publish the gem to RubyGems:
120
+
121
+ ```shell
122
+ gem push rawfeed-<VERSION>.gem
123
+ ```
46
124
 
47
- # Changelog
125
+ ## Changelog
48
126
 
49
- See [here](https://rawfeed.github.io/rawfeed-jekyll/changelog/)
127
+ The project changelog is maintained in [CHANGELOG.md](CHANGELOG.md).
50
128
 
51
- # License
129
+ ## License
52
130
 
53
- The theme is available as open source under the terms of [this License](https://rawfeed.github.io/rawfeed-jekyll/license/).
131
+ This project is released under the terms of [this license](https://rawfeed.github.io/rawfeed-jekyll/license/).
54
132
 
55
- # Donation
133
+ ## Donate
56
134
 
57
- Click on the image below to be redirected to the donation forms:
135
+ If you appreciate this project, consider supporting development.
58
136
 
59
- <div class="donation">
137
+ <div class="donate">
60
138
  <a href="https://williamcanin.github.io/donate/" target="_blank">
61
- <img width="160" height="100" src="assets/images/icons/donation.svg" alt="Donate"/>
139
+ <img width="160" height="100" src="https://williamcanin.github.io/assets/images/icons/donate.svg" alt="Donate"/>
62
140
  </a>
63
141
  </div>
64
-
65
- > It is very important that you make a donation to motivate further development of rawfeed-jekyll. :)
data/_config.yml ADDED
@@ -0,0 +1,77 @@
1
+ # [ important!!! ] the base hostname & protocol for your site, e.g. http://example.com
2
+ url: ""
3
+
4
+ # the subpath of your site, e.g. /blog
5
+ baseurl: ""
6
+
7
+ # ---------- CAUTION!!! DO NOT move from here unless you REALLY know what you are doing. -----------
8
+
9
+ theme: rawfeed
10
+ plugins:
11
+ - jekyll-feed
12
+ - jekyll-sitemap
13
+ - jekyll-archives
14
+ - jekyll-paginate-v2
15
+ - rawfeed
16
+ collections:
17
+ pixels:
18
+ output: true
19
+ permalink: /pixels/:title/
20
+ pagination:
21
+ enabled: true
22
+ debug: false
23
+ collection: "posts"
24
+ sort_field: "date"
25
+ sort_reverse: true
26
+ per_page: 50
27
+ permalink: "/page/:num/"
28
+ locale: ""
29
+ title: ":title - Page :num"
30
+ limit: 0
31
+ feed:
32
+ path: /feed.xml
33
+ defaults:
34
+ - scope:
35
+ path: "_posts"
36
+ type: "posts"
37
+ values:
38
+ published: true
39
+ - scope:
40
+ path: "_pixels"
41
+ type: "pixels"
42
+ values:
43
+ published: true
44
+ jekyll-archives:
45
+ enabled:
46
+ - tags
47
+ layouts:
48
+ tag: blog/posts_by_tag
49
+ permalinks:
50
+ tag: "/blog/tags/:name/"
51
+ include: ["_pages"]
52
+ permalink: "/blog/:title/"
53
+ markdown: kramdown
54
+ kramdown:
55
+ input: GFM
56
+ syntax_highlighter: rouge
57
+ # syntax_highlighter_opts:
58
+ # line_numbers: true
59
+ sass:
60
+ sass_dir: _sass
61
+ style: compressed
62
+ exclude:
63
+ - .bundle-cache
64
+ - Gemfile
65
+ - Gemfile.lock
66
+ - README.md
67
+
68
+ # files below: developer mode
69
+ - node_modules
70
+ - docs
71
+ - exe
72
+ - rawfeed.gemspec
73
+ - CODE_OF_CONDUCT.md
74
+ - LICENSE
75
+ - tmp
76
+ - lib
77
+ - pkg
data/_data/generic.yml ADDED
@@ -0,0 +1,29 @@
1
+ # Rawfeed - Technical Configuration
2
+ # This file contains core technical settings for the Jekyll theme
3
+
4
+ title: rawfeed
5
+ author: "William C. Canin"
6
+
7
+ # Here you change the language of the months of the date
8
+ datelang:
9
+ format: "%b %d, %Y"
10
+ lang: "en_US" # en_US | pt_PT | jp_JP | ch_CH | es_ES | fr_FR | it_IT | de_DE | ru_RU
11
+
12
+ default:
13
+ lang: en-US
14
+ # Some compatible separators: ⨟∫⦁;⬨⬖︙︰𐄛🢝
15
+ separator: ⨟
16
+ width: 860 # default: 860
17
+ background_focus: true
18
+ rounding: false
19
+ user_select: none # none | text
20
+ font:
21
+ # Fonts Style Options: [default: monospace]
22
+ # "'Ubuntu', sans-serif"
23
+ # "'Inconsolata', monospace"
24
+ # "'JetBrains Mono', monospace"
25
+ # "'Roboto Mono', monospace"
26
+ # "'Open Sans', sans-serif"
27
+ style: monospace
28
+ size: 16.34px
29
+ spacing: -0.05em
@@ -0,0 +1,46 @@
1
+ # Rawfeed - Blog Page Content & Texts
2
+
3
+ # section: [blog]
4
+ blog:
5
+ subtitle: "posts"
6
+ search:
7
+ enable: true
8
+ placeholder: "type here to search for a post or Esc to exit"
9
+ button_clean:
10
+ text: "clean"
11
+ results: "results"
12
+ no_results: "No results found"
13
+ pagination:
14
+ newer_text: "newer posts"
15
+ counter: ["page", "of"]
16
+ older_text: "older posts"
17
+ post:
18
+ reading_time:
19
+ enable: true
20
+ words_per_minute: 180
21
+ message:
22
+ ["Read this post in approximately", "Read this post in less than"]
23
+ minutes_label: ["minute", "minutes"]
24
+ author: "Posted by"
25
+ related_posts:
26
+ enable: true
27
+ title: "related posts"
28
+ updated_on: "Post updated on"
29
+ comments:
30
+ title: "comments"
31
+ provider: "giscus" # choose between. options: giscus | disqus.
32
+ giscus:
33
+ repo: "" # your repository, e.g: username/repo-name
34
+ repo_id: "" # copied from giscus.app, e.g: R_kgD...
35
+ repo_category: "" # copied category name GitHub
36
+ category_id: "" # copied from giscus.app, e.g: DIC_kwD...
37
+ mapping: "pathname"
38
+ reactions_enabled: 1
39
+ theme: "light" # initial theme. default: light
40
+ theme_light: "noborder_light" # light theme. default: noborder_light
41
+ theme_dark: "noborder_gray" # dark theme. default: noborder_gray
42
+ lang: "en" # en,pt,..
43
+ disqus:
44
+ shortname: "" # your shortname disqus
45
+ posts_by_tags:
46
+ title: "posts by tag"
@@ -0,0 +1,31 @@
1
+ # Rawfeed - Contact Page Content & Texts
2
+
3
+ # section: [contact]
4
+ contact:
5
+ name:
6
+ placeholder: "first and last name"
7
+ email:
8
+ placeholder: "your best email address"
9
+ help: "we'll never share your email with anyone else."
10
+ message:
11
+ placeholder: "write your message here"
12
+ status: "sending...wait"
13
+ characters:
14
+ min: 50
15
+ warning:
16
+ title: "Warning"
17
+ content: "the message must have at least 50 characters."
18
+ success:
19
+ title: "Message sent"
20
+ content: "your message has been sent successfully!"
21
+ error:
22
+ title: "Error"
23
+ content: "something went wrong while sending your message."
24
+ button:
25
+ text: "send!"
26
+ recaptcha:
27
+ warning:
28
+ title: Warning
29
+ content: "Please tick the 'I'm not a robot' box."
30
+ fail: "Verification failed. Please reload the page and try again."
31
+ error: "An error occurred while sending the message. Please try again."
@@ -0,0 +1,45 @@
1
+ # section: [donate]
2
+ # Tip: use svg images for better quality (https://www.iconpacks.net)
3
+ donate:
4
+ title: "Support the Project"
5
+ description: "If this project helps you, consider supporting it"
6
+ input:
7
+ label:
8
+ key: Chave
9
+ address: Address
10
+ copy_button:
11
+ text: Copy
12
+ clicked: Copied!
13
+ services:
14
+ - name: pix
15
+ logo: "/assets/images/donate/pix.svg"
16
+ description: |
17
+ Faça sua doação usando PIX. Use a chave abaixo.
18
+ address: "00b53f61-b009-4f05-8c43-444cce86af1d"
19
+ qrcode: "/assets/images/donate/qrcode_inter.jpg"
20
+
21
+ - name: card
22
+ logo: "/assets/images/donate/card.svg"
23
+ description: |
24
+ Donation using card through the service `Buy Me a Coffee`.
25
+ address: "https://buymeacoffee.com"
26
+
27
+ - name: paypal
28
+ logo: "/assets/images/donate/paypal.svg"
29
+ description: |
30
+ Donate quickly and securely using your PayPal balance or linked card.
31
+ address: "https://www.paypal.com/donate/?cmd=_s-xclick&hosted_button_id=YBK2HEEYG8V5W&source=&ssrt=1775261628264"
32
+
33
+ - name: bitcoin (lightning network)
34
+ logo: "/assets/images/donate/lightning_network.svg"
35
+ description: |
36
+ Make an anonymous Bitcoin donation using a Lightning Address.
37
+ address: "williamcanin@walletofsatoshi.com"
38
+ qrcode: "/assets/images/donate/qrcode_wos.jpg"
39
+
40
+ - name: bitcoin (on-chain)
41
+ logo: "/assets/images/donate/bitcoin.svg"
42
+ description: |
43
+ Make an anonymous Bitcoin donation using a On-Chain address (Binance).
44
+ address: "bc1qluh2mrchmtrwedspwhtta8ccgzsl9jqdr47f2p"
45
+ qrcode: "/assets/images/donate/qrcode_btc_binance.jpg"
@@ -0,0 +1,17 @@
1
+ # Rawfeed - Footer & Donation Content & Texts
2
+
3
+ # section: [footer]
4
+ footer:
5
+ top_button:
6
+ # Some compatible icons: ↑ ⇡ ▴ 🢙
7
+ icon: ⇡
8
+ enable: true
9
+ copyright:
10
+ title: "rawfeed-jekyll"
11
+ since: 2025
12
+ message:
13
+ licenses:
14
+ title: "Licenses"
15
+ page_url: "/licenses/"
16
+ message: |
17
+ Your impactful phrase!
@@ -0,0 +1,49 @@
1
+ # section: [head]
2
+ # (CSP - Content-Security-Policy)
3
+ # IMPORTANT!!! If you use any external script from any website in your posts that is not on this
4
+ # list, you must put it here.
5
+ # --- If you don't use it, don't remove what's already there. ---
6
+ head:
7
+ csp:
8
+ frame-src:
9
+ - https://www.google.com
10
+ - https://www.youtube.com
11
+ - https://giscus.app
12
+ - https://disqus.com
13
+ connect-src:
14
+ - https://www.google.com
15
+ - https://api.github.com
16
+ - https://script.google.com
17
+ - https://script.googleusercontent.com
18
+ img-src:
19
+ - https://www.google.com
20
+ - https://media0.giphy.com
21
+ - https://media4.giphy.com
22
+ - https://media.giphy.com
23
+ - https://github.githubassets.com
24
+ script-src:
25
+ - https://www.google.com
26
+ - https://www.gstatic.com
27
+ - https://script.google.com
28
+ - https://cdn.jsdelivr.net
29
+ - https://cdnjs.cloudflare.com
30
+ - https://giscus.app
31
+ - https://disqus.com
32
+ style-src:
33
+ - https://cdnjs.cloudflare.com
34
+ - https://fonts.googleapis.com
35
+ - https://cdn.jsdelivr.net
36
+ - https://giscus.app
37
+ - https://disqus.com
38
+ font-src:
39
+ - https://fonts.gstatic.com
40
+ - https://cdnjs.cloudflare.com
41
+ google:
42
+ site_verification: ""
43
+ analytics:
44
+ enable: false
45
+ id: "" # tracking id, e.g. "UA-200341029-1"
46
+ apps_script:
47
+ url:
48
+ recaptcha:
49
+ pubkey:
@@ -0,0 +1,24 @@
1
+ # Rawfeed - Home Page Content & Texts
2
+
3
+ # section: [home]
4
+ home:
5
+ terminal:
6
+ enable: true
7
+ user: "rawfeed"
8
+ hostname: "linux"
9
+ signal: "#"
10
+ welcome: " type 'help'"
11
+ error: ": command not found."
12
+ no_socials: "No socials found"
13
+ help:
14
+ description: |
15
+ Use the commands below:
16
+ commands:
17
+ title: "Commands:"
18
+ description: "Description:"
19
+ menu: |
20
+ about ------------- A brief summary about 'rawfeed'
21
+ socials ----------- Links to my active social networks
22
+ clear ------------- Clear the terminal screen (or press Esc)
23
+ date -------------- Print the system date and time
24
+ help -------------- Print this menu