ro 4.2.0 → 5.0.0

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 (252) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +57 -10
  3. data/LICENSE +1 -1
  4. data/MIGRATION.md +320 -0
  5. data/README.md +286 -111
  6. data/Rakefile +2 -2
  7. data/a.yml +60 -0
  8. data/bin/ro +10 -0
  9. data/lib/ro/_lib.rb +18 -6
  10. data/lib/ro/asset.rb +67 -16
  11. data/lib/ro/collection.rb +91 -10
  12. data/lib/ro/config.rb +4 -0
  13. data/lib/ro/error.rb +5 -2
  14. data/lib/ro/html.rb +23 -0
  15. data/lib/ro/html_safe.rb +143 -0
  16. data/lib/ro/methods.rb +95 -38
  17. data/lib/ro/migrator.rb +285 -0
  18. data/lib/ro/node.rb +128 -45
  19. data/lib/ro/path.rb +4 -0
  20. data/lib/ro/root.rb +75 -1
  21. data/lib/ro/script/migrate.rb +204 -0
  22. data/lib/ro/script/server.rb +1 -1
  23. data/lib/ro/template.rb +62 -22
  24. data/lib/ro/text.rb +120 -0
  25. data/lib/ro.rb +5 -0
  26. data/public/api/ro/index-1.json +997 -79
  27. data/public/api/ro/index.json +997 -79
  28. data/public/api/ro/nerd/fastest-possible-embeddings/index.json +90 -0
  29. data/public/api/ro/nerd/ima/index.json +49 -0
  30. data/public/api/ro/nerd/index/index.json +74 -0
  31. data/public/api/ro/nerd/index-1.json +204 -0
  32. data/public/api/ro/nerd/index.json +194 -0
  33. data/public/api/ro/pages/about/index.json +60 -0
  34. data/public/api/ro/pages/contact/index.json +50 -0
  35. data/public/api/ro/pages/cv/index.json +49 -0
  36. data/public/api/ro/pages/disco/index.json +117 -0
  37. data/public/api/ro/pages/index/index.json +30 -0
  38. data/public/api/ro/pages/index-1.json +366 -0
  39. data/public/api/ro/pages/index.json +356 -0
  40. data/public/api/ro/pages/jess/index.json +62 -0
  41. data/public/api/ro/pages/now/index.json +43 -0
  42. data/public/api/ro/posts/almost-died-in-an-ice-cave/index.json +265 -0
  43. data/public/api/ro/posts/facebook-and-global-extremism/index.json +90 -0
  44. data/public/api/ro/posts/index-1.json +461 -79
  45. data/public/api/ro/posts/index.json +461 -79
  46. data/public/api/ro/posts/lemmings-considered-harmful/index.json +49 -0
  47. data/public/api/ro/posts/lost-in-the-desert/index.json +49 -0
  48. data/public/api/ro/posts/mission/index.json +49 -0
  49. data/public/api/ro/posts/return-your-laptop/index.json +61 -0
  50. data/public/ro/nerd/fastest-possible-embeddings/assets/giraffe.jpeg +0 -0
  51. data/public/ro/nerd/fastest-possible-embeddings/assets/let-me-in.jpg +0 -0
  52. data/public/ro/nerd/fastest-possible-embeddings/assets/src/fastembed.js +70 -0
  53. data/public/ro/nerd/fastest-possible-embeddings/assets/src/fastembed.rs +68 -0
  54. data/public/ro/nerd/fastest-possible-embeddings/assets/terminal.jpg +0 -0
  55. data/public/ro/nerd/fastest-possible-embeddings/body.md +266 -0
  56. data/public/ro/nerd/fastest-possible-embeddings.yml +7 -0
  57. data/public/ro/nerd/ima/assets/og.jpeg +0 -0
  58. data/public/ro/nerd/ima/body.md +22 -0
  59. data/public/ro/nerd/ima.yml +8 -0
  60. data/public/ro/nerd/index/assets/giraffe.jpeg +0 -0
  61. data/public/ro/nerd/index/assets/let-me-in.jpg +0 -0
  62. data/public/ro/nerd/index/assets/terminal.jpg +0 -0
  63. data/public/ro/nerd/index/body.md +130 -0
  64. data/public/ro/nerd/index.yml +7 -0
  65. data/public/ro/pages/about/assets/og.jpeg +0 -0
  66. data/public/ro/pages/about/assets/speak-english-pulp-fiction.gif +0 -0
  67. data/public/ro/pages/about/body.md +40 -0
  68. data/public/ro/pages/contact/assets/giraffe.jpeg +0 -0
  69. data/public/ro/pages/contact/body.md +9 -0
  70. data/public/ro/pages/contact.yml +7 -0
  71. data/public/ro/pages/cv/assets/ara.jpg +0 -0
  72. data/public/ro/pages/cv/body.md +122 -0
  73. data/public/ro/pages/cv.yml +6 -0
  74. data/public/ro/pages/disco/assets/disco.jpg +0 -0
  75. data/public/ro/pages/disco/assets/disco.png +0 -0
  76. data/public/ro/pages/disco/assets/speak-english-pulp-fiction.gif +0 -0
  77. data/public/ro/pages/disco/assets/src/environment.md +2354 -0
  78. data/public/ro/pages/disco/assets/src/fortune-500.md +2518 -0
  79. data/public/ro/pages/disco/assets/src/greed.md +2703 -0
  80. data/public/ro/pages/disco/assets/src/up-at-night.md +2337 -0
  81. data/public/ro/pages/disco/body.md +99 -0
  82. data/public/ro/pages/disco/samples/environment.md +2354 -0
  83. data/public/ro/pages/disco/samples/fortune-500.md +2518 -0
  84. data/public/ro/pages/disco/samples/greed.md +2703 -0
  85. data/public/ro/pages/disco/samples/up-at-night.md +2337 -0
  86. data/public/ro/pages/disco.yml +9 -0
  87. data/public/ro/pages/index/body.md +15 -0
  88. data/public/ro/pages/index.yml +1 -0
  89. data/public/ro/pages/jess/assets/og.jpg +0 -0
  90. data/public/ro/pages/jess/assets/speak-english-pulp-fiction.gif +0 -0
  91. data/public/ro/pages/jess/body.md +3 -0
  92. data/public/ro/pages/jess.yml +7 -0
  93. data/public/ro/pages/now/assets/speak-english-pulp-fiction.gif +0 -0
  94. data/public/ro/pages/now/body.md +24 -0
  95. data/public/ro/pages/now.yml +1 -0
  96. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image1.png +0 -0
  97. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image10.png +0 -0
  98. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image11.png +0 -0
  99. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image12.png +0 -0
  100. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image13.png +0 -0
  101. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image14.png +0 -0
  102. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image15.png +0 -0
  103. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image2.png +0 -0
  104. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image3.png +0 -0
  105. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image4.png +0 -0
  106. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image5.png +0 -0
  107. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image6.png +0 -0
  108. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image7.png +0 -0
  109. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image8.png +0 -0
  110. data/public/ro/posts/almost-died-in-an-ice-cave/assets/image9.png +0 -0
  111. data/public/ro/posts/almost-died-in-an-ice-cave/assets/josh-pointing.jpg +0 -0
  112. data/public/ro/posts/almost-died-in-an-ice-cave/assets/levi-rawr.png +0 -0
  113. data/public/ro/posts/almost-died-in-an-ice-cave/assets/og.jpg +0 -0
  114. data/public/ro/posts/almost-died-in-an-ice-cave/assets/purple-heart.jpg +0 -0
  115. data/public/ro/posts/almost-died-in-an-ice-cave/body.md +419 -0
  116. data/public/ro/posts/almost-died-in-an-ice-cave.yml +6 -0
  117. data/public/ro/posts/facebook-and-global-extremism/assets/background.html +125 -0
  118. data/public/ro/posts/facebook-and-global-extremism/assets/background.md +95 -0
  119. data/public/ro/posts/facebook-and-global-extremism/assets/og.jpg +0 -0
  120. data/public/ro/posts/facebook-and-global-extremism/assets/prompt.txt +122 -0
  121. data/public/ro/posts/facebook-and-global-extremism/assets/results.md +183 -0
  122. data/public/ro/posts/facebook-and-global-extremism/assets/survey.txt +190 -0
  123. data/public/ro/posts/facebook-and-global-extremism/body.md +393 -0
  124. data/public/ro/posts/facebook-and-global-extremism.yml +7 -0
  125. data/public/ro/posts/lemmings-considered-harmful/assets/lemming.jpeg +0 -0
  126. data/public/ro/posts/lemmings-considered-harmful/body.md +43 -0
  127. data/public/ro/posts/lemmings-considered-harmful.yml +6 -0
  128. data/public/ro/posts/lost-in-the-desert/assets/og.jpg +0 -0
  129. data/public/ro/posts/lost-in-the-desert/body.md +7 -0
  130. data/public/ro/posts/lost-in-the-desert.yml +6 -0
  131. data/public/ro/posts/mission/assets/og.jpg +0 -0
  132. data/public/ro/posts/mission/body.md +4 -0
  133. data/public/ro/posts/mission.yml +6 -0
  134. data/public/ro/posts/return-your-laptop/assets/og.jpg +0 -0
  135. data/public/ro/posts/return-your-laptop/assets/return-your-laptop.png +0 -0
  136. data/public/ro/posts/return-your-laptop/body.md +58 -0
  137. data/public/ro/posts/return-your-laptop.yml +6 -0
  138. data/ro.gemspec +369 -49
  139. data/scripts/speedtest.rb +324 -0
  140. data/specs/001-simplify-asset-structure/IMPLEMENTATION_SUMMARY.md +212 -0
  141. data/specs/001-simplify-asset-structure/checklists/requirements.md +36 -0
  142. data/specs/001-simplify-asset-structure/contracts/collection_api.md +407 -0
  143. data/specs/001-simplify-asset-structure/contracts/migrator_api.md +461 -0
  144. data/specs/001-simplify-asset-structure/contracts/node_api.md +294 -0
  145. data/specs/001-simplify-asset-structure/data-model.md +381 -0
  146. data/specs/001-simplify-asset-structure/plan.md +90 -0
  147. data/specs/001-simplify-asset-structure/quickstart.md +575 -0
  148. data/specs/001-simplify-asset-structure/research.md +333 -0
  149. data/specs/001-simplify-asset-structure/spec.md +127 -0
  150. data/specs/001-simplify-asset-structure/tasks.md +349 -0
  151. data/test/fixtures/new_structure/mixed/test-json.json +5 -0
  152. data/test/fixtures/new_structure/mixed/test-yaml.yml +3 -0
  153. data/test/fixtures/new_structure/posts/metadata-only.yml +7 -0
  154. data/test/fixtures/new_structure/posts/nested-test/assets/subdirectory/image.png +2 -0
  155. data/test/fixtures/new_structure/posts/nested-test.yml +7 -0
  156. data/test/fixtures/new_structure/posts/sample-post/assets/body.md +5 -0
  157. data/test/fixtures/new_structure/posts/sample-post/assets/image.jpg +2 -0
  158. data/test/fixtures/new_structure/posts/sample-post.yml +7 -0
  159. data/test/fixtures/old_structure/posts/assets-only/assets/test.txt +1 -0
  160. data/test/fixtures/old_structure/posts/sample-post/assets/body.md +5 -0
  161. data/test/fixtures/old_structure/posts/sample-post/assets/image.jpg +2 -0
  162. data/test/fixtures/old_structure/posts/sample-post/attributes.yml +2 -0
  163. data/test/integration/ro_integration_test.rb +165 -0
  164. data/test/test_helper.rb +149 -0
  165. data/test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/assets/image.jpg +2 -0
  166. data/test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/attributes.yml +7 -0
  167. data/test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/body.md +5 -0
  168. data/test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/assets/image.jpg +2 -0
  169. data/test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/attributes.yml +7 -0
  170. data/test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/body.md +5 -0
  171. data/test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/assets/image.jpg +2 -0
  172. data/test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/attributes.yml +7 -0
  173. data/test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/body.md +5 -0
  174. data/test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/assets/image.jpg +2 -0
  175. data/test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/attributes.yml +7 -0
  176. data/test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/body.md +5 -0
  177. data/test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/assets/image.jpg +2 -0
  178. data/test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/attributes.yml +7 -0
  179. data/test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/body.md +5 -0
  180. data/test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/assets/image.jpg +2 -0
  181. data/test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/attributes.yml +7 -0
  182. data/test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/body.md +5 -0
  183. data/test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post/body.md +5 -0
  184. data/test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post/image.jpg +2 -0
  185. data/test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post.yml +7 -0
  186. data/test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post/body.md +5 -0
  187. data/test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post/image.jpg +2 -0
  188. data/test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post.yml +7 -0
  189. data/test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/assets/body.md +5 -0
  190. data/test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/assets/image.jpg +2 -0
  191. data/test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/attributes.yml +2 -0
  192. data/test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/assets/body.md +5 -0
  193. data/test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/assets/image.jpg +2 -0
  194. data/test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/attributes.yml +2 -0
  195. data/test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/assets/body.md +5 -0
  196. data/test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/assets/image.jpg +2 -0
  197. data/test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/attributes.yml +2 -0
  198. data/test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/assets/body.md +5 -0
  199. data/test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/assets/image.jpg +2 -0
  200. data/test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/attributes.yml +2 -0
  201. data/test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/assets-only/assets/test.txt +1 -0
  202. data/test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/assets/body.md +5 -0
  203. data/test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/assets/image.jpg +2 -0
  204. data/test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/attributes.yml +2 -0
  205. data/test/tmp/migration_test_1760824728.backup.20251018215848/posts/assets-only/assets/test.txt +1 -0
  206. data/test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/assets/body.md +5 -0
  207. data/test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/assets/image.jpg +2 -0
  208. data/test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/attributes.yml +2 -0
  209. data/test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/assets-only/assets/test.txt +1 -0
  210. data/test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/assets/body.md +5 -0
  211. data/test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/assets/image.jpg +2 -0
  212. data/test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/attributes.yml +2 -0
  213. data/test/tmp/migration_test_1760844153.backup.20251019032233/posts/assets-only/assets/test.txt +1 -0
  214. data/test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/assets/body.md +5 -0
  215. data/test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/assets/image.jpg +2 -0
  216. data/test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/attributes.yml +2 -0
  217. data/test/tmp/new_structure_test_1760746452/mixed/test-json.json +5 -0
  218. data/test/tmp/new_structure_test_1760746452/mixed/test-yaml.yml +3 -0
  219. data/test/tmp/new_structure_test_1760746452/posts/metadata-only.yml +7 -0
  220. data/test/tmp/new_structure_test_1760746452/posts/nested-test/subdirectory/image.png +2 -0
  221. data/test/tmp/new_structure_test_1760746452/posts/nested-test.yml +7 -0
  222. data/test/tmp/new_structure_test_1760746452/posts/sample-post/body.md +5 -0
  223. data/test/tmp/new_structure_test_1760746452/posts/sample-post/image.jpg +2 -0
  224. data/test/tmp/new_structure_test_1760746452/posts/sample-post.yml +7 -0
  225. data/test/unit/asset_test.rb +90 -0
  226. data/test/unit/collection_test.rb +127 -0
  227. data/test/unit/migrator_test.rb +209 -0
  228. data/test/unit/node_test.rb +138 -0
  229. data/tmp/gem-details.oe +0 -0
  230. metadata +250 -33
  231. data/public/api/ro/posts/first_post/index.json +0 -52
  232. data/public/api/ro/posts/second_post/index.json +0 -51
  233. data/public/api/ro/posts/third_post/index.json +0 -51
  234. data/public/ro/posts/first_post/assets/foo/bar/baz.jpg +0 -0
  235. data/public/ro/posts/first_post/assets/foo.jpg +0 -0
  236. data/public/ro/posts/first_post/assets/src/foo/bar.rb +0 -3
  237. data/public/ro/posts/first_post/attributes.yml +0 -2
  238. data/public/ro/posts/first_post/blurb.erb.md +0 -7
  239. data/public/ro/posts/first_post/body.md +0 -16
  240. data/public/ro/posts/first_post/testing.txt +0 -3
  241. data/public/ro/posts/second_post/assets/foo/bar/baz.jpg +0 -0
  242. data/public/ro/posts/second_post/assets/foo.jpg +0 -0
  243. data/public/ro/posts/second_post/assets/src/foo/bar.rb +0 -3
  244. data/public/ro/posts/second_post/attributes.yml +0 -2
  245. data/public/ro/posts/second_post/blurb.erb.md +0 -5
  246. data/public/ro/posts/second_post/body.md +0 -16
  247. data/public/ro/posts/third_post/assets/foo/bar/baz.jpg +0 -0
  248. data/public/ro/posts/third_post/assets/foo.jpg +0 -0
  249. data/public/ro/posts/third_post/assets/src/foo/bar.rb +0 -3
  250. data/public/ro/posts/third_post/attributes.yml +0 -2
  251. data/public/ro/posts/third_post/blurb.erb.md +0 -5
  252. data/public/ro/posts/third_post/body.md +0 -16
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ro
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ara T. Howard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-08 00:00:00.000000000 Z
11
+ date: 2025-10-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: map
@@ -91,34 +91,67 @@ dependencies:
91
91
  - !ruby/object:Gem::Version
92
92
  version: 4.1.1
93
93
  - !ruby/object:Gem::Dependency
94
- name: ak47
94
+ name: front_matter_parser
95
95
  requirement: !ruby/object:Gem::Requirement
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: '0.2'
99
+ version: '1.0'
100
100
  type: :runtime
101
101
  prerelease: false
102
102
  version_requirements: !ruby/object:Gem::Requirement
103
103
  requirements:
104
104
  - - "~>"
105
105
  - !ruby/object:Gem::Version
106
- version: '0.2'
106
+ version: '1.0'
107
107
  - !ruby/object:Gem::Dependency
108
- name: webrick
108
+ name: rinku
109
109
  requirement: !ruby/object:Gem::Requirement
110
110
  requirements:
111
111
  - - "~>"
112
112
  - !ruby/object:Gem::Version
113
- version: 1.8.1
113
+ version: '2.0'
114
114
  type: :runtime
115
115
  prerelease: false
116
116
  version_requirements: !ruby/object:Gem::Requirement
117
117
  requirements:
118
118
  - - "~>"
119
119
  - !ruby/object:Gem::Version
120
- version: 1.8.1
121
- description: all your content in github, as god intended
120
+ version: '2.0'
121
+ - !ruby/object:Gem::Dependency
122
+ name: image_size
123
+ requirement: !ruby/object:Gem::Requirement
124
+ requirements:
125
+ - - "~>"
126
+ - !ruby/object:Gem::Version
127
+ version: '3.4'
128
+ type: :runtime
129
+ prerelease: false
130
+ version_requirements: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - "~>"
133
+ - !ruby/object:Gem::Version
134
+ version: '3.4'
135
+ - !ruby/object:Gem::Dependency
136
+ name: nokogiri
137
+ requirement: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - "~>"
140
+ - !ruby/object:Gem::Version
141
+ version: '1'
142
+ type: :runtime
143
+ prerelease: false
144
+ version_requirements: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - "~>"
147
+ - !ruby/object:Gem::Version
148
+ version: '1'
149
+ description: |-
150
+ the worlds tiniest, bestest, most minmialist headless cms - powered by github
151
+
152
+ ro is a minimalist toolkit for managing heterogeneous collections of rich web
153
+ content on github, and providing both programatic and api access to it with zero
154
+ heavy lifting
122
155
  email: ara.t.howard@gmail.com
123
156
  executables:
124
157
  - ro
@@ -128,9 +161,11 @@ files:
128
161
  - Gemfile
129
162
  - Gemfile.lock
130
163
  - LICENSE
164
+ - MIGRATION.md
131
165
  - README.md
132
166
  - README.md.erb
133
167
  - Rakefile
168
+ - a.yml
134
169
  - bin/ro
135
170
  - lib/ro.rb
136
171
  - lib/ro/_lib.rb
@@ -139,8 +174,11 @@ files:
139
174
  - lib/ro/collection/list.rb
140
175
  - lib/ro/config.rb
141
176
  - lib/ro/error.rb
177
+ - lib/ro/html.rb
178
+ - lib/ro/html_safe.rb
142
179
  - lib/ro/klass.rb
143
180
  - lib/ro/methods.rb
181
+ - lib/ro/migrator.rb
144
182
  - lib/ro/model.rb
145
183
  - lib/ro/node.rb
146
184
  - lib/ro/pagination.rb
@@ -149,40 +187,219 @@ files:
149
187
  - lib/ro/script.rb
150
188
  - lib/ro/script/builder.rb
151
189
  - lib/ro/script/console.rb
190
+ - lib/ro/script/migrate.rb
152
191
  - lib/ro/script/server.rb
153
192
  - lib/ro/slug.rb
154
193
  - lib/ro/template.rb
155
194
  - lib/ro/template/rouge_formatter.rb
195
+ - lib/ro/text.rb
156
196
  - public/api/ro/index-1.json
157
197
  - public/api/ro/index.json
158
- - public/api/ro/posts/first_post/index.json
198
+ - public/api/ro/nerd/fastest-possible-embeddings/index.json
199
+ - public/api/ro/nerd/ima/index.json
200
+ - public/api/ro/nerd/index-1.json
201
+ - public/api/ro/nerd/index.json
202
+ - public/api/ro/nerd/index/index.json
203
+ - public/api/ro/pages/about/index.json
204
+ - public/api/ro/pages/contact/index.json
205
+ - public/api/ro/pages/cv/index.json
206
+ - public/api/ro/pages/disco/index.json
207
+ - public/api/ro/pages/index-1.json
208
+ - public/api/ro/pages/index.json
209
+ - public/api/ro/pages/index/index.json
210
+ - public/api/ro/pages/jess/index.json
211
+ - public/api/ro/pages/now/index.json
212
+ - public/api/ro/posts/almost-died-in-an-ice-cave/index.json
213
+ - public/api/ro/posts/facebook-and-global-extremism/index.json
159
214
  - public/api/ro/posts/index-1.json
160
215
  - public/api/ro/posts/index.json
161
- - public/api/ro/posts/second_post/index.json
162
- - public/api/ro/posts/third_post/index.json
163
- - public/ro/posts/first_post/assets/foo.jpg
164
- - public/ro/posts/first_post/assets/foo/bar/baz.jpg
165
- - public/ro/posts/first_post/assets/src/foo/bar.rb
166
- - public/ro/posts/first_post/attributes.yml
167
- - public/ro/posts/first_post/blurb.erb.md
168
- - public/ro/posts/first_post/body.md
169
- - public/ro/posts/first_post/testing.txt
170
- - public/ro/posts/second_post/assets/foo.jpg
171
- - public/ro/posts/second_post/assets/foo/bar/baz.jpg
172
- - public/ro/posts/second_post/assets/src/foo/bar.rb
173
- - public/ro/posts/second_post/attributes.yml
174
- - public/ro/posts/second_post/blurb.erb.md
175
- - public/ro/posts/second_post/body.md
176
- - public/ro/posts/third_post/assets/foo.jpg
177
- - public/ro/posts/third_post/assets/foo/bar/baz.jpg
178
- - public/ro/posts/third_post/assets/src/foo/bar.rb
179
- - public/ro/posts/third_post/attributes.yml
180
- - public/ro/posts/third_post/blurb.erb.md
181
- - public/ro/posts/third_post/body.md
216
+ - public/api/ro/posts/lemmings-considered-harmful/index.json
217
+ - public/api/ro/posts/lost-in-the-desert/index.json
218
+ - public/api/ro/posts/mission/index.json
219
+ - public/api/ro/posts/return-your-laptop/index.json
220
+ - public/ro/nerd/fastest-possible-embeddings.yml
221
+ - public/ro/nerd/fastest-possible-embeddings/assets/giraffe.jpeg
222
+ - public/ro/nerd/fastest-possible-embeddings/assets/let-me-in.jpg
223
+ - public/ro/nerd/fastest-possible-embeddings/assets/src/fastembed.js
224
+ - public/ro/nerd/fastest-possible-embeddings/assets/src/fastembed.rs
225
+ - public/ro/nerd/fastest-possible-embeddings/assets/terminal.jpg
226
+ - public/ro/nerd/fastest-possible-embeddings/body.md
227
+ - public/ro/nerd/ima.yml
228
+ - public/ro/nerd/ima/assets/og.jpeg
229
+ - public/ro/nerd/ima/body.md
230
+ - public/ro/nerd/index.yml
231
+ - public/ro/nerd/index/assets/giraffe.jpeg
232
+ - public/ro/nerd/index/assets/let-me-in.jpg
233
+ - public/ro/nerd/index/assets/terminal.jpg
234
+ - public/ro/nerd/index/body.md
235
+ - public/ro/pages/about/assets/og.jpeg
236
+ - public/ro/pages/about/assets/speak-english-pulp-fiction.gif
237
+ - public/ro/pages/about/body.md
238
+ - public/ro/pages/contact.yml
239
+ - public/ro/pages/contact/assets/giraffe.jpeg
240
+ - public/ro/pages/contact/body.md
241
+ - public/ro/pages/cv.yml
242
+ - public/ro/pages/cv/assets/ara.jpg
243
+ - public/ro/pages/cv/body.md
244
+ - public/ro/pages/disco.yml
245
+ - public/ro/pages/disco/assets/disco.jpg
246
+ - public/ro/pages/disco/assets/disco.png
247
+ - public/ro/pages/disco/assets/speak-english-pulp-fiction.gif
248
+ - public/ro/pages/disco/assets/src/environment.md
249
+ - public/ro/pages/disco/assets/src/fortune-500.md
250
+ - public/ro/pages/disco/assets/src/greed.md
251
+ - public/ro/pages/disco/assets/src/up-at-night.md
252
+ - public/ro/pages/disco/body.md
253
+ - public/ro/pages/disco/samples/environment.md
254
+ - public/ro/pages/disco/samples/fortune-500.md
255
+ - public/ro/pages/disco/samples/greed.md
256
+ - public/ro/pages/disco/samples/up-at-night.md
257
+ - public/ro/pages/index.yml
258
+ - public/ro/pages/index/body.md
259
+ - public/ro/pages/jess.yml
260
+ - public/ro/pages/jess/assets/og.jpg
261
+ - public/ro/pages/jess/assets/speak-english-pulp-fiction.gif
262
+ - public/ro/pages/jess/body.md
263
+ - public/ro/pages/now.yml
264
+ - public/ro/pages/now/assets/speak-english-pulp-fiction.gif
265
+ - public/ro/pages/now/body.md
266
+ - public/ro/posts/almost-died-in-an-ice-cave.yml
267
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image1.png
268
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image10.png
269
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image11.png
270
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image12.png
271
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image13.png
272
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image14.png
273
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image15.png
274
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image2.png
275
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image3.png
276
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image4.png
277
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image5.png
278
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image6.png
279
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image7.png
280
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image8.png
281
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/image9.png
282
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/josh-pointing.jpg
283
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/levi-rawr.png
284
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/og.jpg
285
+ - public/ro/posts/almost-died-in-an-ice-cave/assets/purple-heart.jpg
286
+ - public/ro/posts/almost-died-in-an-ice-cave/body.md
287
+ - public/ro/posts/facebook-and-global-extremism.yml
288
+ - public/ro/posts/facebook-and-global-extremism/assets/background.html
289
+ - public/ro/posts/facebook-and-global-extremism/assets/background.md
290
+ - public/ro/posts/facebook-and-global-extremism/assets/og.jpg
291
+ - public/ro/posts/facebook-and-global-extremism/assets/prompt.txt
292
+ - public/ro/posts/facebook-and-global-extremism/assets/results.md
293
+ - public/ro/posts/facebook-and-global-extremism/assets/survey.txt
294
+ - public/ro/posts/facebook-and-global-extremism/body.md
295
+ - public/ro/posts/lemmings-considered-harmful.yml
296
+ - public/ro/posts/lemmings-considered-harmful/assets/lemming.jpeg
297
+ - public/ro/posts/lemmings-considered-harmful/body.md
298
+ - public/ro/posts/lost-in-the-desert.yml
299
+ - public/ro/posts/lost-in-the-desert/assets/og.jpg
300
+ - public/ro/posts/lost-in-the-desert/body.md
301
+ - public/ro/posts/mission.yml
302
+ - public/ro/posts/mission/assets/og.jpg
303
+ - public/ro/posts/mission/body.md
304
+ - public/ro/posts/return-your-laptop.yml
305
+ - public/ro/posts/return-your-laptop/assets/og.jpg
306
+ - public/ro/posts/return-your-laptop/assets/return-your-laptop.png
307
+ - public/ro/posts/return-your-laptop/body.md
182
308
  - ro.gemspec
309
+ - scripts/speedtest.rb
310
+ - specs/001-simplify-asset-structure/IMPLEMENTATION_SUMMARY.md
311
+ - specs/001-simplify-asset-structure/checklists/requirements.md
312
+ - specs/001-simplify-asset-structure/contracts/collection_api.md
313
+ - specs/001-simplify-asset-structure/contracts/migrator_api.md
314
+ - specs/001-simplify-asset-structure/contracts/node_api.md
315
+ - specs/001-simplify-asset-structure/data-model.md
316
+ - specs/001-simplify-asset-structure/plan.md
317
+ - specs/001-simplify-asset-structure/quickstart.md
318
+ - specs/001-simplify-asset-structure/research.md
319
+ - specs/001-simplify-asset-structure/spec.md
320
+ - specs/001-simplify-asset-structure/tasks.md
321
+ - test/fixtures/new_structure/mixed/test-json.json
322
+ - test/fixtures/new_structure/mixed/test-yaml.yml
323
+ - test/fixtures/new_structure/posts/metadata-only.yml
324
+ - test/fixtures/new_structure/posts/nested-test.yml
325
+ - test/fixtures/new_structure/posts/nested-test/assets/subdirectory/image.png
326
+ - test/fixtures/new_structure/posts/sample-post.yml
327
+ - test/fixtures/new_structure/posts/sample-post/assets/body.md
328
+ - test/fixtures/new_structure/posts/sample-post/assets/image.jpg
329
+ - test/fixtures/old_structure/posts/assets-only/assets/test.txt
330
+ - test/fixtures/old_structure/posts/sample-post/assets/body.md
331
+ - test/fixtures/old_structure/posts/sample-post/assets/image.jpg
332
+ - test/fixtures/old_structure/posts/sample-post/attributes.yml
333
+ - test/integration/ro_integration_test.rb
334
+ - test/test_helper.rb
335
+ - test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/assets/image.jpg
336
+ - test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/attributes.yml
337
+ - test/tmp/migration_test_1760746513.backup.20251018001513/migration_test_1760746513/posts/sample-post/body.md
338
+ - test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/assets/image.jpg
339
+ - test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/attributes.yml
340
+ - test/tmp/migration_test_1760746513.backup.20251018001513/posts/sample-post/body.md
341
+ - test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/assets/image.jpg
342
+ - test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/attributes.yml
343
+ - test/tmp/migration_test_1760746556.backup.20251018001556/migration_test_1760746556/posts/sample-post/body.md
344
+ - test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/assets/image.jpg
345
+ - test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/attributes.yml
346
+ - test/tmp/migration_test_1760746556.backup.20251018001556/posts/sample-post/body.md
347
+ - test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/assets/image.jpg
348
+ - test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/attributes.yml
349
+ - test/tmp/migration_test_1760755248.backup.20251018024048/migration_test_1760755248/posts/sample-post/body.md
350
+ - test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/assets/image.jpg
351
+ - test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/attributes.yml
352
+ - test/tmp/migration_test_1760755248.backup.20251018024048/posts/sample-post/body.md
353
+ - test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post.yml
354
+ - test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post/body.md
355
+ - test/tmp/migration_test_1760758803.backup.20251018034003/migration_test_1760758803/posts/sample-post/image.jpg
356
+ - test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post.yml
357
+ - test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post/body.md
358
+ - test/tmp/migration_test_1760758803.backup.20251018034003/posts/sample-post/image.jpg
359
+ - test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/assets/body.md
360
+ - test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/assets/image.jpg
361
+ - test/tmp/migration_test_1760758869.backup.20251018034109/migration_test_1760758869/posts/sample-post/attributes.yml
362
+ - test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/assets/body.md
363
+ - test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/assets/image.jpg
364
+ - test/tmp/migration_test_1760758869.backup.20251018034109/posts/sample-post/attributes.yml
365
+ - test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/assets/body.md
366
+ - test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/assets/image.jpg
367
+ - test/tmp/migration_test_1760758920.backup.20251018034200/migration_test_1760758920/posts/sample-post/attributes.yml
368
+ - test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/assets/body.md
369
+ - test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/assets/image.jpg
370
+ - test/tmp/migration_test_1760758920.backup.20251018034200/posts/sample-post/attributes.yml
371
+ - test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/assets-only/assets/test.txt
372
+ - test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/assets/body.md
373
+ - test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/assets/image.jpg
374
+ - test/tmp/migration_test_1760824728.backup.20251018215848/migration_test_1760824728/posts/sample-post/attributes.yml
375
+ - test/tmp/migration_test_1760824728.backup.20251018215848/posts/assets-only/assets/test.txt
376
+ - test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/assets/body.md
377
+ - test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/assets/image.jpg
378
+ - test/tmp/migration_test_1760824728.backup.20251018215848/posts/sample-post/attributes.yml
379
+ - test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/assets-only/assets/test.txt
380
+ - test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/assets/body.md
381
+ - test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/assets/image.jpg
382
+ - test/tmp/migration_test_1760844153.backup.20251019032233/migration_test_1760844153/posts/sample-post/attributes.yml
383
+ - test/tmp/migration_test_1760844153.backup.20251019032233/posts/assets-only/assets/test.txt
384
+ - test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/assets/body.md
385
+ - test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/assets/image.jpg
386
+ - test/tmp/migration_test_1760844153.backup.20251019032233/posts/sample-post/attributes.yml
387
+ - test/tmp/new_structure_test_1760746452/mixed/test-json.json
388
+ - test/tmp/new_structure_test_1760746452/mixed/test-yaml.yml
389
+ - test/tmp/new_structure_test_1760746452/posts/metadata-only.yml
390
+ - test/tmp/new_structure_test_1760746452/posts/nested-test.yml
391
+ - test/tmp/new_structure_test_1760746452/posts/nested-test/subdirectory/image.png
392
+ - test/tmp/new_structure_test_1760746452/posts/sample-post.yml
393
+ - test/tmp/new_structure_test_1760746452/posts/sample-post/body.md
394
+ - test/tmp/new_structure_test_1760746452/posts/sample-post/image.jpg
395
+ - test/unit/asset_test.rb
396
+ - test/unit/collection_test.rb
397
+ - test/unit/migrator_test.rb
398
+ - test/unit/node_test.rb
399
+ - tmp/gem-details.oe
183
400
  homepage: https://github.com/ahoward/ro
184
401
  licenses:
185
- - Ruby
402
+ - Nonstandard
186
403
  metadata: {}
187
404
  post_install_message:
188
405
  rdoc_options: []
@@ -199,7 +416,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
416
  - !ruby/object:Gem::Version
200
417
  version: '0'
201
418
  requirements: []
202
- rubygems_version: 3.5.19
419
+ rubygems_version: 3.5.22
203
420
  signing_key:
204
421
  specification_version: 4
205
422
  summary: all your content in github, as god intended
@@ -1,52 +0,0 @@
1
- {
2
- "data": {
3
- "posts/first_post": {
4
- "title": "First Post",
5
- "author": "people/alice",
6
- "assets": {
7
- "assets/foo.jpg": {
8
- "url": "/ro/posts/first_post/assets/foo.jpg",
9
- "path": "posts/first_post/assets/foo.jpg",
10
- "src": null
11
- },
12
- "assets/foo/bar/baz.jpg": {
13
- "url": "/ro/posts/first_post/assets/foo/bar/baz.jpg",
14
- "path": "posts/first_post/assets/foo/bar/baz.jpg",
15
- "src": null
16
- },
17
- "assets/src/foo/bar.rb": {
18
- "url": "/ro/posts/first_post/assets/src/foo/bar.rb",
19
- "path": "posts/first_post/assets/src/foo/bar.rb",
20
- "src": "<div class=\"ro markdown src\">\n <code class='code' style='white-space:pre;'><div class='code-line code-line-1'><span style=\"color: #cf222e\">class</span>&nbsp;<span style=\"color: #953800\">C</span>\n</div><div class='code-line code-line-2'>&nbsp;&nbsp;<span style=\"color: #953800\">A</span>&nbsp;<span style=\"color: #0550ae\">=</span>&nbsp;<span style=\"color: #0550ae\">42</span>\n</div><div class='code-line code-line-3'><span style=\"color: #cf222e\">end</span>\n</div></code>\n</div>\n"
21
- }
22
- },
23
- "_meta": {
24
- "identifier": "posts/first_post",
25
- "type": "posts",
26
- "id": "first_post",
27
- "urls": [
28
- "/ro/posts/first_post/assets/foo.jpg",
29
- "/ro/posts/first_post/assets/foo/bar/baz.jpg",
30
- "/ro/posts/first_post/assets/src/foo/bar.rb",
31
- "/ro/posts/first_post/attributes.yml",
32
- "/ro/posts/first_post/blurb.erb.md",
33
- "/ro/posts/first_post/body.md",
34
- "/ro/posts/first_post/testing.txt"
35
- ],
36
- "rel": {
37
- "curr": "posts/first_post",
38
- "prev": null,
39
- "next": "posts/second_post"
40
- }
41
- },
42
- "posts": {
43
- "first_post": "43\n\n42\n"
44
- }
45
- }
46
- },
47
- "_meta": {
48
- "url": "/ro",
49
- "type": "posts",
50
- "id": "first_post"
51
- }
52
- }
@@ -1,51 +0,0 @@
1
- {
2
- "data": {
3
- "posts/second_post": {
4
- "title": "Second Post",
5
- "author": "people/alice",
6
- "assets": {
7
- "assets/foo.jpg": {
8
- "url": "/ro/posts/second_post/assets/foo.jpg",
9
- "path": "posts/second_post/assets/foo.jpg",
10
- "src": null
11
- },
12
- "assets/foo/bar/baz.jpg": {
13
- "url": "/ro/posts/second_post/assets/foo/bar/baz.jpg",
14
- "path": "posts/second_post/assets/foo/bar/baz.jpg",
15
- "src": null
16
- },
17
- "assets/src/foo/bar.rb": {
18
- "url": "/ro/posts/second_post/assets/src/foo/bar.rb",
19
- "path": "posts/second_post/assets/src/foo/bar.rb",
20
- "src": "<div class=\"ro markdown src\">\n <code class='code' style='white-space:pre;'><div class='code-line code-line-1'><span style=\"color: #cf222e\">class</span>&nbsp;<span style=\"color: #953800\">C</span>\n</div><div class='code-line code-line-2'>&nbsp;&nbsp;<span style=\"color: #953800\">A</span>&nbsp;<span style=\"color: #0550ae\">=</span>&nbsp;<span style=\"color: #0550ae\">42</span>\n</div><div class='code-line code-line-3'><span style=\"color: #cf222e\">end</span>\n</div></code>\n</div>\n"
21
- }
22
- },
23
- "_meta": {
24
- "identifier": "posts/second_post",
25
- "type": "posts",
26
- "id": "second_post",
27
- "urls": [
28
- "/ro/posts/second_post/assets/foo.jpg",
29
- "/ro/posts/second_post/assets/foo/bar/baz.jpg",
30
- "/ro/posts/second_post/assets/src/foo/bar.rb",
31
- "/ro/posts/second_post/attributes.yml",
32
- "/ro/posts/second_post/blurb.erb.md",
33
- "/ro/posts/second_post/body.md"
34
- ],
35
- "rel": {
36
- "curr": "posts/second_post",
37
- "prev": "posts/first_post",
38
- "next": "posts/third_post"
39
- }
40
- },
41
- "posts": {
42
- "second_post": "<div class='ro markdown'>\n <ul>\n <li>one</li>\n <li>two</li>\n <li>three</li>\n</ul>\n\n<div class='language-ruby highlighter-rouge'><code class='code' style='white-space:pre;'><div class='code-line code-line-1'>&nbsp;&nbsp;<span style='color: #cf222e'>class</span>&nbsp;&nbsp;<span style='color: #953800'>C</span>\n</div><div class='code-line code-line-2'>&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: #0550ae'>@a</span>&nbsp;<span style='color: #0550ae'>=</span>&nbsp;<span style='color: #0550ae'>42</span>\n</div><div class='code-line code-line-3'>&nbsp;&nbsp;<span style='color: #cf222e'>end</span>\n</div></code></div>\n\n<hr/>\n\n<p><img src='/ro/posts/second_post/assets/foo.jpg'/><br/>\n<br/></p>\n\n<p><img src='/ro/posts/second_post/assets/foo/bar/baz.jpg'/></p>\n\n</div>"
43
- }
44
- }
45
- },
46
- "_meta": {
47
- "url": "/ro",
48
- "type": "posts",
49
- "id": "second_post"
50
- }
51
- }
@@ -1,51 +0,0 @@
1
- {
2
- "data": {
3
- "posts/third_post": {
4
- "title": "First Post",
5
- "author": "people/alice",
6
- "assets": {
7
- "assets/foo.jpg": {
8
- "url": "/ro/posts/third_post/assets/foo.jpg",
9
- "path": "posts/third_post/assets/foo.jpg",
10
- "src": null
11
- },
12
- "assets/foo/bar/baz.jpg": {
13
- "url": "/ro/posts/third_post/assets/foo/bar/baz.jpg",
14
- "path": "posts/third_post/assets/foo/bar/baz.jpg",
15
- "src": null
16
- },
17
- "assets/src/foo/bar.rb": {
18
- "url": "/ro/posts/third_post/assets/src/foo/bar.rb",
19
- "path": "posts/third_post/assets/src/foo/bar.rb",
20
- "src": "<div class=\"ro markdown src\">\n <code class='code' style='white-space:pre;'><div class='code-line code-line-1'><span style=\"color: #cf222e\">class</span>&nbsp;<span style=\"color: #953800\">C</span>\n</div><div class='code-line code-line-2'>&nbsp;&nbsp;<span style=\"color: #953800\">A</span>&nbsp;<span style=\"color: #0550ae\">=</span>&nbsp;<span style=\"color: #0550ae\">42</span>\n</div><div class='code-line code-line-3'><span style=\"color: #cf222e\">end</span>\n</div></code>\n</div>\n"
21
- }
22
- },
23
- "_meta": {
24
- "identifier": "posts/third_post",
25
- "type": "posts",
26
- "id": "third_post",
27
- "urls": [
28
- "/ro/posts/third_post/assets/foo.jpg",
29
- "/ro/posts/third_post/assets/foo/bar/baz.jpg",
30
- "/ro/posts/third_post/assets/src/foo/bar.rb",
31
- "/ro/posts/third_post/attributes.yml",
32
- "/ro/posts/third_post/blurb.erb.md",
33
- "/ro/posts/third_post/body.md"
34
- ],
35
- "rel": {
36
- "curr": "posts/third_post",
37
- "prev": "posts/second_post",
38
- "next": null
39
- }
40
- },
41
- "posts": {
42
- "third_post": "<div class='ro markdown'>\n <ul>\n <li>one</li>\n <li>two</li>\n <li>three</li>\n</ul>\n\n<div class='language-ruby highlighter-rouge'><code class='code' style='white-space:pre;'><div class='code-line code-line-1'>&nbsp;&nbsp;<span style='color: #cf222e'>class</span>&nbsp;&nbsp;<span style='color: #953800'>C</span>\n</div><div class='code-line code-line-2'>&nbsp;&nbsp;&nbsp;&nbsp;<span style='color: #0550ae'>@a</span>&nbsp;<span style='color: #0550ae'>=</span>&nbsp;<span style='color: #0550ae'>42</span>\n</div><div class='code-line code-line-3'>&nbsp;&nbsp;<span style='color: #cf222e'>end</span>\n</div></code></div>\n\n<hr/>\n\n<p><img src='/ro/posts/third_post/assets/foo.jpg'/><br/>\n<br/></p>\n\n<p><img src='/ro/posts/third_post/assets/foo/bar/baz.jpg'/></p>\n\n</div>"
43
- }
44
- }
45
- },
46
- "_meta": {
47
- "url": "/ro",
48
- "type": "posts",
49
- "id": "third_post"
50
- }
51
- }
@@ -1,3 +0,0 @@
1
- class C
2
- A = 42
3
- end
@@ -1,2 +0,0 @@
1
- title: First Post
2
- author: people/alice
@@ -1,7 +0,0 @@
1
- * a
2
- * b
3
- * c
4
-
5
- generated_at: <%= Time.now.utc.iso8601 %>
6
- <br>
7
- <%= ro.posts.second_post.title %>
@@ -1,16 +0,0 @@
1
- * one
2
- * two
3
- * three
4
-
5
- ```ruby
6
- class C
7
- @a = 42
8
- end
9
- ```
10
-
11
- <hr/>
12
-
13
- <img src="assets/foo.jpg" />
14
- <br />
15
-
16
- <img src="assets/foo/bar/baz.jpg" />
@@ -1,3 +0,0 @@
1
- 43
2
-
3
- 42
@@ -1,3 +0,0 @@
1
- class C
2
- A = 42
3
- end
@@ -1,2 +0,0 @@
1
- title: Second Post
2
- author: people/alice
@@ -1,5 +0,0 @@
1
- * a
2
- * b
3
- * c
4
-
5
- generated_at: <%= Time.now.utc.iso8601 %>
@@ -1,16 +0,0 @@
1
- * one
2
- * two
3
- * three
4
-
5
- ```ruby
6
- class C
7
- @a = 42
8
- end
9
- ```
10
-
11
- <hr/>
12
-
13
- <img src="assets/foo.jpg" />
14
- <br />
15
-
16
- <img src="assets/foo/bar/baz.jpg" />
@@ -1,3 +0,0 @@
1
- class C
2
- A = 42
3
- end
@@ -1,2 +0,0 @@
1
- title: First Post
2
- author: people/alice
@@ -1,5 +0,0 @@
1
- * a
2
- * b
3
- * c
4
-
5
- generated_at: <%= Time.now.utc.iso8601 %>