scribo 1.0.38 → 1.0.40

Sign up to get free protection for your applications and to get access to all the features.
Files changed (628) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/gem-push.yml +11 -0
  3. data/.gitignore +12 -0
  4. data/.reek.yml +8 -0
  5. data/.rubocop.yml +44 -0
  6. data/.rubocop_todo.yml +129 -0
  7. data/CODE_OF_CONDUCT.md +74 -0
  8. data/Gemfile +31 -0
  9. data/Gemfile.lock +397 -0
  10. data/README.md +5 -9
  11. data/TODO.md +32 -0
  12. data/app/assets/config/scribo_manifest.js +4 -2
  13. data/app/assets/images/scribo/.keep +0 -0
  14. data/app/assets/images/scribo/Unknown-1.svg +2 -0
  15. data/app/assets/images/scribo/file.svg +4 -0
  16. data/app/assets/images/scribo/file_icons.svg +1 -0
  17. data/app/assets/images/scribo/folder-open.svg +1 -0
  18. data/app/assets/images/scribo/folder.svg +1 -0
  19. data/app/assets/images/scribo/icons/3d.svg +1 -0
  20. data/app/assets/images/scribo/icons/actionscript.svg +3 -0
  21. data/app/assets/images/scribo/icons/android.svg +1 -0
  22. data/app/assets/images/scribo/icons/angular-component.svg +3 -0
  23. data/app/assets/images/scribo/icons/angular-directive.svg +3 -0
  24. data/app/assets/images/scribo/icons/angular-guard.svg +3 -0
  25. data/app/assets/images/scribo/icons/angular-pipe.svg +3 -0
  26. data/app/assets/images/scribo/icons/angular-resolver.svg +3 -0
  27. data/app/assets/images/scribo/icons/angular-service.svg +3 -0
  28. data/app/assets/images/scribo/icons/angular.svg +3 -0
  29. data/app/assets/images/scribo/icons/apiblueprint.svg +5 -0
  30. data/app/assets/images/scribo/icons/applescript.svg +3 -0
  31. data/app/assets/images/scribo/icons/appveyor.svg +5 -0
  32. data/app/assets/images/scribo/icons/arduino.svg +1 -0
  33. data/app/assets/images/scribo/icons/asciidoc.svg +1 -0
  34. data/app/assets/images/scribo/icons/assembly.svg +4 -0
  35. data/app/assets/images/scribo/icons/audio.svg +4 -0
  36. data/app/assets/images/scribo/icons/aurelia.svg +107 -0
  37. data/app/assets/images/scribo/icons/authors.svg +1 -0
  38. data/app/assets/images/scribo/icons/autohotkey.svg +3 -0
  39. data/app/assets/images/scribo/icons/autoit.svg +21 -0
  40. data/app/assets/images/scribo/icons/azure-pipelines.svg +1 -0
  41. data/app/assets/images/scribo/icons/azure.svg +1 -0
  42. data/app/assets/images/scribo/icons/babel.svg +1 -0
  43. data/app/assets/images/scribo/icons/ballerina.svg +1 -0
  44. data/app/assets/images/scribo/icons/bazel.svg +1 -0
  45. data/app/assets/images/scribo/icons/bitbucket.svg +1 -0
  46. data/app/assets/images/scribo/icons/bithound.svg +1 -0
  47. data/app/assets/images/scribo/icons/blink.svg +4 -0
  48. data/app/assets/images/scribo/icons/blink_light.svg +4 -0
  49. data/app/assets/images/scribo/icons/bower.svg +1 -0
  50. data/app/assets/images/scribo/icons/browserlist.svg +6 -0
  51. data/app/assets/images/scribo/icons/browserlist_light.svg +7 -0
  52. data/app/assets/images/scribo/icons/bucklescript.svg +3 -0
  53. data/app/assets/images/scribo/icons/buildkite.svg +1 -0
  54. data/app/assets/images/scribo/icons/c.svg +1 -0
  55. data/app/assets/images/scribo/icons/cabal.svg +8 -0
  56. data/app/assets/images/scribo/icons/cake.svg +1 -0
  57. data/app/assets/images/scribo/icons/certificate.svg +3 -0
  58. data/app/assets/images/scribo/icons/changelog.svg +1 -0
  59. data/app/assets/images/scribo/icons/circleci.svg +14 -0
  60. data/app/assets/images/scribo/icons/circleci_light.svg +14 -0
  61. data/app/assets/images/scribo/icons/clojure.svg +1 -0
  62. data/app/assets/images/scribo/icons/cloudfoundry.svg +24 -0
  63. data/app/assets/images/scribo/icons/cmake.svg +7 -0
  64. data/app/assets/images/scribo/icons/code-climate.svg +4 -0
  65. data/app/assets/images/scribo/icons/code-climate_light.svg +4 -0
  66. data/app/assets/images/scribo/icons/coffee.svg +3 -0
  67. data/app/assets/images/scribo/icons/coldfusion.svg +7 -0
  68. data/app/assets/images/scribo/icons/conduct.svg +4 -0
  69. data/app/assets/images/scribo/icons/console.svg +3 -0
  70. data/app/assets/images/scribo/icons/contributing.svg +4 -0
  71. data/app/assets/images/scribo/icons/cpp.svg +1 -0
  72. data/app/assets/images/scribo/icons/credits.svg +3 -0
  73. data/app/assets/images/scribo/icons/crystal.svg +4 -0
  74. data/app/assets/images/scribo/icons/crystal_light.svg +4 -0
  75. data/app/assets/images/scribo/icons/csharp.svg +3 -0
  76. data/app/assets/images/scribo/icons/css-map.svg +1 -0
  77. data/app/assets/images/scribo/icons/css.svg +3 -0
  78. data/app/assets/images/scribo/icons/cucumber.svg +4 -0
  79. data/app/assets/images/scribo/icons/cuda.svg +4 -0
  80. data/app/assets/images/scribo/icons/d.svg +1 -0
  81. data/app/assets/images/scribo/icons/dart.svg +9 -0
  82. data/app/assets/images/scribo/icons/database.svg +1 -0
  83. data/app/assets/images/scribo/icons/diff.svg +1 -0
  84. data/app/assets/images/scribo/icons/django.svg +1 -0
  85. data/app/assets/images/scribo/icons/docker.svg +4 -0
  86. data/app/assets/images/scribo/icons/document.svg +3 -0
  87. data/app/assets/images/scribo/icons/dotjs.svg +8 -0
  88. data/app/assets/images/scribo/icons/drone.svg +6 -0
  89. data/app/assets/images/scribo/icons/drone_light.svg +6 -0
  90. data/app/assets/images/scribo/icons/edge.svg +1 -0
  91. data/app/assets/images/scribo/icons/editorconfig.svg +9 -0
  92. data/app/assets/images/scribo/icons/ejs.svg +7 -0
  93. data/app/assets/images/scribo/icons/elixir.svg +1 -0
  94. data/app/assets/images/scribo/icons/elm.svg +1 -0
  95. data/app/assets/images/scribo/icons/email.svg +3 -0
  96. data/app/assets/images/scribo/icons/erlang.svg +5 -0
  97. data/app/assets/images/scribo/icons/eslint.svg +3 -0
  98. data/app/assets/images/scribo/icons/exe.svg +3 -0
  99. data/app/assets/images/scribo/icons/fastlane.svg +1 -0
  100. data/app/assets/images/scribo/icons/favicon.svg +3 -0
  101. data/app/assets/images/scribo/icons/file.svg +3 -0
  102. data/app/assets/images/scribo/icons/firebase.svg +9 -0
  103. data/app/assets/images/scribo/icons/flash.svg +12 -0
  104. data/app/assets/images/scribo/icons/flow.svg +7 -0
  105. data/app/assets/images/scribo/icons/folder-android-open.svg +1 -0
  106. data/app/assets/images/scribo/icons/folder-android.svg +1 -0
  107. data/app/assets/images/scribo/icons/folder-animation-open.svg +1 -0
  108. data/app/assets/images/scribo/icons/folder-animation.svg +1 -0
  109. data/app/assets/images/scribo/icons/folder-ansible-open.svg +1 -0
  110. data/app/assets/images/scribo/icons/folder-ansible.svg +1 -0
  111. data/app/assets/images/scribo/icons/folder-api-open.svg +4 -0
  112. data/app/assets/images/scribo/icons/folder-api.svg +4 -0
  113. data/app/assets/images/scribo/icons/folder-app-open.svg +1 -0
  114. data/app/assets/images/scribo/icons/folder-app.svg +1 -0
  115. data/app/assets/images/scribo/icons/folder-archive-open.svg +1 -0
  116. data/app/assets/images/scribo/icons/folder-archive.svg +1 -0
  117. data/app/assets/images/scribo/icons/folder-audio-open.svg +2 -0
  118. data/app/assets/images/scribo/icons/folder-audio.svg +2 -0
  119. data/app/assets/images/scribo/icons/folder-aurelia-open.svg +2 -0
  120. data/app/assets/images/scribo/icons/folder-aurelia.svg +2 -0
  121. data/app/assets/images/scribo/icons/folder-aws-open.svg +2 -0
  122. data/app/assets/images/scribo/icons/folder-aws.svg +2 -0
  123. data/app/assets/images/scribo/icons/folder-batch-open.svg +1 -0
  124. data/app/assets/images/scribo/icons/folder-batch.svg +1 -0
  125. data/app/assets/images/scribo/icons/folder-benchmark-open.svg +1 -0
  126. data/app/assets/images/scribo/icons/folder-benchmark.svg +1 -0
  127. data/app/assets/images/scribo/icons/folder-bower-open.svg +2 -0
  128. data/app/assets/images/scribo/icons/folder-bower.svg +2 -0
  129. data/app/assets/images/scribo/icons/folder-ci-open.svg +1 -0
  130. data/app/assets/images/scribo/icons/folder-ci.svg +1 -0
  131. data/app/assets/images/scribo/icons/folder-circleci-open.svg +2 -0
  132. data/app/assets/images/scribo/icons/folder-circleci.svg +1 -0
  133. data/app/assets/images/scribo/icons/folder-class-open.svg +1 -0
  134. data/app/assets/images/scribo/icons/folder-class.svg +1 -0
  135. data/app/assets/images/scribo/icons/folder-client-open.svg +1 -0
  136. data/app/assets/images/scribo/icons/folder-client.svg +1 -0
  137. data/app/assets/images/scribo/icons/folder-cluster-open.svg +8 -0
  138. data/app/assets/images/scribo/icons/folder-cluster.svg +8 -0
  139. data/app/assets/images/scribo/icons/folder-command-open.svg +4 -0
  140. data/app/assets/images/scribo/icons/folder-command.svg +4 -0
  141. data/app/assets/images/scribo/icons/folder-components-open.svg +2 -0
  142. data/app/assets/images/scribo/icons/folder-components.svg +2 -0
  143. data/app/assets/images/scribo/icons/folder-config-open.svg +2 -0
  144. data/app/assets/images/scribo/icons/folder-config.svg +2 -0
  145. data/app/assets/images/scribo/icons/folder-constant-open.svg +1 -0
  146. data/app/assets/images/scribo/icons/folder-constant.svg +1 -0
  147. data/app/assets/images/scribo/icons/folder-container-open.svg +1 -0
  148. data/app/assets/images/scribo/icons/folder-container.svg +1 -0
  149. data/app/assets/images/scribo/icons/folder-content-open.svg +1 -0
  150. data/app/assets/images/scribo/icons/folder-content.svg +1 -0
  151. data/app/assets/images/scribo/icons/folder-controller-open.svg +1 -0
  152. data/app/assets/images/scribo/icons/folder-controller.svg +1 -0
  153. data/app/assets/images/scribo/icons/folder-core-open.svg +1 -0
  154. data/app/assets/images/scribo/icons/folder-core.svg +1 -0
  155. data/app/assets/images/scribo/icons/folder-coverage-open.svg +1 -0
  156. data/app/assets/images/scribo/icons/folder-coverage.svg +1 -0
  157. data/app/assets/images/scribo/icons/folder-css-open.svg +2 -0
  158. data/app/assets/images/scribo/icons/folder-css.svg +2 -0
  159. data/app/assets/images/scribo/icons/folder-custom-open.svg +1 -0
  160. data/app/assets/images/scribo/icons/folder-custom.svg +1 -0
  161. data/app/assets/images/scribo/icons/folder-database-open.svg +2 -0
  162. data/app/assets/images/scribo/icons/folder-database.svg +2 -0
  163. data/app/assets/images/scribo/icons/folder-debug-open.svg +1 -0
  164. data/app/assets/images/scribo/icons/folder-debug.svg +1 -0
  165. data/app/assets/images/scribo/icons/folder-delta-open.svg +4 -0
  166. data/app/assets/images/scribo/icons/folder-delta.svg +4 -0
  167. data/app/assets/images/scribo/icons/folder-dist-open.svg +2 -0
  168. data/app/assets/images/scribo/icons/folder-dist.svg +2 -0
  169. data/app/assets/images/scribo/icons/folder-docker-open.svg +2 -0
  170. data/app/assets/images/scribo/icons/folder-docker.svg +5 -0
  171. data/app/assets/images/scribo/icons/folder-docs-open.svg +2 -0
  172. data/app/assets/images/scribo/icons/folder-docs.svg +2 -0
  173. data/app/assets/images/scribo/icons/folder-download-open.svg +1 -0
  174. data/app/assets/images/scribo/icons/folder-download.svg +1 -0
  175. data/app/assets/images/scribo/icons/folder-dump-open.svg +1 -0
  176. data/app/assets/images/scribo/icons/folder-dump.svg +1 -0
  177. data/app/assets/images/scribo/icons/folder-environment-open.svg +1 -0
  178. data/app/assets/images/scribo/icons/folder-environment.svg +1 -0
  179. data/app/assets/images/scribo/icons/folder-error-open.svg +7 -0
  180. data/app/assets/images/scribo/icons/folder-error.svg +8 -0
  181. data/app/assets/images/scribo/icons/folder-event-open.svg +1 -0
  182. data/app/assets/images/scribo/icons/folder-event.svg +1 -0
  183. data/app/assets/images/scribo/icons/folder-examples-open.svg +1 -0
  184. data/app/assets/images/scribo/icons/folder-examples.svg +1 -0
  185. data/app/assets/images/scribo/icons/folder-expo-open.svg +1 -0
  186. data/app/assets/images/scribo/icons/folder-expo.svg +4 -0
  187. data/app/assets/images/scribo/icons/folder-export-open.svg +1 -0
  188. data/app/assets/images/scribo/icons/folder-export.svg +5 -0
  189. data/app/assets/images/scribo/icons/folder-fastlane-open.svg +1 -0
  190. data/app/assets/images/scribo/icons/folder-fastlane.svg +1 -0
  191. data/app/assets/images/scribo/icons/folder-flow-open.svg +1 -0
  192. data/app/assets/images/scribo/icons/folder-flow.svg +1 -0
  193. data/app/assets/images/scribo/icons/folder-font-open.svg +1 -0
  194. data/app/assets/images/scribo/icons/folder-font.svg +1 -0
  195. data/app/assets/images/scribo/icons/folder-functions-open.svg +1 -0
  196. data/app/assets/images/scribo/icons/folder-functions.svg +1 -0
  197. data/app/assets/images/scribo/icons/folder-generator-open.svg +1 -0
  198. data/app/assets/images/scribo/icons/folder-generator.svg +1 -0
  199. data/app/assets/images/scribo/icons/folder-git-open.svg +1 -0
  200. data/app/assets/images/scribo/icons/folder-git.svg +1 -0
  201. data/app/assets/images/scribo/icons/folder-github-open.svg +2 -0
  202. data/app/assets/images/scribo/icons/folder-github.svg +2 -0
  203. data/app/assets/images/scribo/icons/folder-gitlab-open.svg +2 -0
  204. data/app/assets/images/scribo/icons/folder-gitlab.svg +2 -0
  205. data/app/assets/images/scribo/icons/folder-global-open.svg +2 -0
  206. data/app/assets/images/scribo/icons/folder-global.svg +2 -0
  207. data/app/assets/images/scribo/icons/folder-gradle-open.svg +2 -0
  208. data/app/assets/images/scribo/icons/folder-gradle.svg +2 -0
  209. data/app/assets/images/scribo/icons/folder-graphql-open.svg +1 -0
  210. data/app/assets/images/scribo/icons/folder-graphql.svg +1 -0
  211. data/app/assets/images/scribo/icons/folder-guard-open.svg +1 -0
  212. data/app/assets/images/scribo/icons/folder-guard.svg +1 -0
  213. data/app/assets/images/scribo/icons/folder-helper-open.svg +1 -0
  214. data/app/assets/images/scribo/icons/folder-helper.svg +1 -0
  215. data/app/assets/images/scribo/icons/folder-hook-open.svg +1 -0
  216. data/app/assets/images/scribo/icons/folder-hook.svg +1 -0
  217. data/app/assets/images/scribo/icons/folder-i18n-open.svg +2 -0
  218. data/app/assets/images/scribo/icons/folder-i18n.svg +2 -0
  219. data/app/assets/images/scribo/icons/folder-images-open.svg +2 -0
  220. data/app/assets/images/scribo/icons/folder-images.svg +2 -0
  221. data/app/assets/images/scribo/icons/folder-import-open.svg +1 -0
  222. data/app/assets/images/scribo/icons/folder-import.svg +1 -0
  223. data/app/assets/images/scribo/icons/folder-include-open.svg +2 -0
  224. data/app/assets/images/scribo/icons/folder-include.svg +2 -0
  225. data/app/assets/images/scribo/icons/folder-ios-open.svg +1 -0
  226. data/app/assets/images/scribo/icons/folder-ios.svg +1 -0
  227. data/app/assets/images/scribo/icons/folder-javascript-open.svg +2 -0
  228. data/app/assets/images/scribo/icons/folder-javascript.svg +2 -0
  229. data/app/assets/images/scribo/icons/folder-jinja-open.svg +2 -0
  230. data/app/assets/images/scribo/icons/folder-jinja-open_light.svg +2 -0
  231. data/app/assets/images/scribo/icons/folder-jinja.svg +2 -0
  232. data/app/assets/images/scribo/icons/folder-jinja_light.svg +2 -0
  233. data/app/assets/images/scribo/icons/folder-job-open.svg +1 -0
  234. data/app/assets/images/scribo/icons/folder-job.svg +1 -0
  235. data/app/assets/images/scribo/icons/folder-keys-open.svg +1 -0
  236. data/app/assets/images/scribo/icons/folder-keys.svg +1 -0
  237. data/app/assets/images/scribo/icons/folder-kubernetes-open.svg +1 -0
  238. data/app/assets/images/scribo/icons/folder-kubernetes.svg +5 -0
  239. data/app/assets/images/scribo/icons/folder-layout-open.svg +1 -0
  240. data/app/assets/images/scribo/icons/folder-layout.svg +1 -0
  241. data/app/assets/images/scribo/icons/folder-less-open.svg +1 -0
  242. data/app/assets/images/scribo/icons/folder-less.svg +1 -0
  243. data/app/assets/images/scribo/icons/folder-lib-open.svg +2 -0
  244. data/app/assets/images/scribo/icons/folder-lib.svg +2 -0
  245. data/app/assets/images/scribo/icons/folder-log-open.svg +2 -0
  246. data/app/assets/images/scribo/icons/folder-log.svg +2 -0
  247. data/app/assets/images/scribo/icons/folder-mail-open.svg +1 -0
  248. data/app/assets/images/scribo/icons/folder-mail.svg +1 -0
  249. data/app/assets/images/scribo/icons/folder-mappings-open.svg +1 -0
  250. data/app/assets/images/scribo/icons/folder-mappings.svg +1 -0
  251. data/app/assets/images/scribo/icons/folder-markdown-open.svg +2 -0
  252. data/app/assets/images/scribo/icons/folder-markdown.svg +2 -0
  253. data/app/assets/images/scribo/icons/folder-messages-open.svg +1 -0
  254. data/app/assets/images/scribo/icons/folder-messages.svg +1 -0
  255. data/app/assets/images/scribo/icons/folder-meta-open.svg +1 -0
  256. data/app/assets/images/scribo/icons/folder-meta.svg +1 -0
  257. data/app/assets/images/scribo/icons/folder-middleware-open.svg +1 -0
  258. data/app/assets/images/scribo/icons/folder-middleware.svg +1 -0
  259. data/app/assets/images/scribo/icons/folder-mock-open.svg +1 -0
  260. data/app/assets/images/scribo/icons/folder-mock.svg +1 -0
  261. data/app/assets/images/scribo/icons/folder-ngrx-actions-open.svg +2 -0
  262. data/app/assets/images/scribo/icons/folder-ngrx-actions.svg +2 -0
  263. data/app/assets/images/scribo/icons/folder-ngrx-effects-open.svg +2 -0
  264. data/app/assets/images/scribo/icons/folder-ngrx-effects.svg +2 -0
  265. data/app/assets/images/scribo/icons/folder-ngrx-entities-open.svg +2 -0
  266. data/app/assets/images/scribo/icons/folder-ngrx-entities.svg +2 -0
  267. data/app/assets/images/scribo/icons/folder-ngrx-reducer-open.svg +2 -0
  268. data/app/assets/images/scribo/icons/folder-ngrx-reducer.svg +2 -0
  269. data/app/assets/images/scribo/icons/folder-ngrx-state-open.svg +1 -0
  270. data/app/assets/images/scribo/icons/folder-ngrx-state.svg +1 -0
  271. data/app/assets/images/scribo/icons/folder-ngrx-store-open.svg +1 -0
  272. data/app/assets/images/scribo/icons/folder-ngrx-store.svg +1 -0
  273. data/app/assets/images/scribo/icons/folder-node-open.svg +1 -0
  274. data/app/assets/images/scribo/icons/folder-node.svg +1 -0
  275. data/app/assets/images/scribo/icons/folder-nuxt-open.svg +1 -0
  276. data/app/assets/images/scribo/icons/folder-nuxt.svg +1 -0
  277. data/app/assets/images/scribo/icons/folder-open.svg +11 -0
  278. data/app/assets/images/scribo/icons/folder-other-open.svg +1 -0
  279. data/app/assets/images/scribo/icons/folder-other.svg +1 -0
  280. data/app/assets/images/scribo/icons/folder-packages-open.svg +1 -0
  281. data/app/assets/images/scribo/icons/folder-packages.svg +1 -0
  282. data/app/assets/images/scribo/icons/folder-php-open.svg +2 -0
  283. data/app/assets/images/scribo/icons/folder-php.svg +2 -0
  284. data/app/assets/images/scribo/icons/folder-phpmailer-open.svg +2 -0
  285. data/app/assets/images/scribo/icons/folder-phpmailer.svg +2 -0
  286. data/app/assets/images/scribo/icons/folder-pipe-open.svg +1 -0
  287. data/app/assets/images/scribo/icons/folder-pipe.svg +1 -0
  288. data/app/assets/images/scribo/icons/folder-plugin-open.svg +1 -0
  289. data/app/assets/images/scribo/icons/folder-plugin.svg +1 -0
  290. data/app/assets/images/scribo/icons/folder-prisma-open.svg +1 -0
  291. data/app/assets/images/scribo/icons/folder-prisma.svg +1 -0
  292. data/app/assets/images/scribo/icons/folder-private-open.svg +1 -0
  293. data/app/assets/images/scribo/icons/folder-private.svg +1 -0
  294. data/app/assets/images/scribo/icons/folder-public-open.svg +2 -0
  295. data/app/assets/images/scribo/icons/folder-public.svg +2 -0
  296. data/app/assets/images/scribo/icons/folder-python-open.svg +1 -0
  297. data/app/assets/images/scribo/icons/folder-python.svg +1 -0
  298. data/app/assets/images/scribo/icons/folder-react-components-open.svg +2 -0
  299. data/app/assets/images/scribo/icons/folder-react-components.svg +2 -0
  300. data/app/assets/images/scribo/icons/folder-redux-actions-open.svg +1 -0
  301. data/app/assets/images/scribo/icons/folder-redux-actions.svg +1 -0
  302. data/app/assets/images/scribo/icons/folder-redux-reducer-open.svg +2 -0
  303. data/app/assets/images/scribo/icons/folder-redux-reducer.svg +2 -0
  304. data/app/assets/images/scribo/icons/folder-redux-store-open.svg +2 -0
  305. data/app/assets/images/scribo/icons/folder-redux-store.svg +2 -0
  306. data/app/assets/images/scribo/icons/folder-resource-open.svg +2 -0
  307. data/app/assets/images/scribo/icons/folder-resource.svg +2 -0
  308. data/app/assets/images/scribo/icons/folder-review-open.svg +1 -0
  309. data/app/assets/images/scribo/icons/folder-review.svg +1 -0
  310. data/app/assets/images/scribo/icons/folder-routes-open.svg +1 -0
  311. data/app/assets/images/scribo/icons/folder-routes.svg +1 -0
  312. data/app/assets/images/scribo/icons/folder-rules-open.svg +1 -0
  313. data/app/assets/images/scribo/icons/folder-rules.svg +1 -0
  314. data/app/assets/images/scribo/icons/folder-sass-open.svg +1 -0
  315. data/app/assets/images/scribo/icons/folder-sass.svg +1 -0
  316. data/app/assets/images/scribo/icons/folder-scripts-open.svg +2 -0
  317. data/app/assets/images/scribo/icons/folder-scripts.svg +2 -0
  318. data/app/assets/images/scribo/icons/folder-secure-open.svg +1 -0
  319. data/app/assets/images/scribo/icons/folder-secure.svg +1 -0
  320. data/app/assets/images/scribo/icons/folder-server-open.svg +1 -0
  321. data/app/assets/images/scribo/icons/folder-server.svg +1 -0
  322. data/app/assets/images/scribo/icons/folder-serverless-open.svg +1 -0
  323. data/app/assets/images/scribo/icons/folder-serverless.svg +1 -0
  324. data/app/assets/images/scribo/icons/folder-shared-open.svg +1 -0
  325. data/app/assets/images/scribo/icons/folder-shared.svg +1 -0
  326. data/app/assets/images/scribo/icons/folder-src-open.svg +2 -0
  327. data/app/assets/images/scribo/icons/folder-src.svg +2 -0
  328. data/app/assets/images/scribo/icons/folder-stack-open.svg +1 -0
  329. data/app/assets/images/scribo/icons/folder-stack.svg +1 -0
  330. data/app/assets/images/scribo/icons/folder-stylus-open.svg +1 -0
  331. data/app/assets/images/scribo/icons/folder-stylus.svg +1 -0
  332. data/app/assets/images/scribo/icons/folder-sublime-open.svg +2 -0
  333. data/app/assets/images/scribo/icons/folder-sublime.svg +2 -0
  334. data/app/assets/images/scribo/icons/folder-svg-open.svg +1 -0
  335. data/app/assets/images/scribo/icons/folder-svg.svg +1 -0
  336. data/app/assets/images/scribo/icons/folder-syntax-open.svg +1 -0
  337. data/app/assets/images/scribo/icons/folder-syntax.svg +1 -0
  338. data/app/assets/images/scribo/icons/folder-tasks-open.svg +1 -0
  339. data/app/assets/images/scribo/icons/folder-tasks.svg +1 -0
  340. data/app/assets/images/scribo/icons/folder-temp-open.svg +2 -0
  341. data/app/assets/images/scribo/icons/folder-temp.svg +2 -0
  342. data/app/assets/images/scribo/icons/folder-template-open.svg +1 -0
  343. data/app/assets/images/scribo/icons/folder-template.svg +1 -0
  344. data/app/assets/images/scribo/icons/folder-test-open.svg +1 -0
  345. data/app/assets/images/scribo/icons/folder-test.svg +1 -0
  346. data/app/assets/images/scribo/icons/folder-theme-open.svg +2 -0
  347. data/app/assets/images/scribo/icons/folder-theme.svg +2 -0
  348. data/app/assets/images/scribo/icons/folder-tools-open.svg +1 -0
  349. data/app/assets/images/scribo/icons/folder-tools.svg +1 -0
  350. data/app/assets/images/scribo/icons/folder-typescript-open.svg +1 -0
  351. data/app/assets/images/scribo/icons/folder-typescript.svg +1 -0
  352. data/app/assets/images/scribo/icons/folder-upload-open.svg +1 -0
  353. data/app/assets/images/scribo/icons/folder-upload.svg +1 -0
  354. data/app/assets/images/scribo/icons/folder-utils-open.svg +1 -0
  355. data/app/assets/images/scribo/icons/folder-utils.svg +1 -0
  356. data/app/assets/images/scribo/icons/folder-video-open.svg +2 -0
  357. data/app/assets/images/scribo/icons/folder-video.svg +2 -0
  358. data/app/assets/images/scribo/icons/folder-views-open.svg +1 -0
  359. data/app/assets/images/scribo/icons/folder-views.svg +1 -0
  360. data/app/assets/images/scribo/icons/folder-vm-open.svg +1 -0
  361. data/app/assets/images/scribo/icons/folder-vm.svg +1 -0
  362. data/app/assets/images/scribo/icons/folder-vscode-open.svg +2 -0
  363. data/app/assets/images/scribo/icons/folder-vscode.svg +2 -0
  364. data/app/assets/images/scribo/icons/folder-vue-directives-open.svg +1 -0
  365. data/app/assets/images/scribo/icons/folder-vue-directives.svg +1 -0
  366. data/app/assets/images/scribo/icons/folder-vue-open.svg +1 -0
  367. data/app/assets/images/scribo/icons/folder-vue.svg +1 -0
  368. data/app/assets/images/scribo/icons/folder-vuex-store-open.svg +1 -0
  369. data/app/assets/images/scribo/icons/folder-vuex-store.svg +1 -0
  370. data/app/assets/images/scribo/icons/folder-wakatime-open.svg +2 -0
  371. data/app/assets/images/scribo/icons/folder-wakatime.svg +2 -0
  372. data/app/assets/images/scribo/icons/folder-webpack-open.svg +2 -0
  373. data/app/assets/images/scribo/icons/folder-webpack.svg +2 -0
  374. data/app/assets/images/scribo/icons/folder-wordpress-open.svg +2 -0
  375. data/app/assets/images/scribo/icons/folder-wordpress.svg +1 -0
  376. data/app/assets/images/scribo/icons/folder.svg +11 -0
  377. data/app/assets/images/scribo/icons/font.svg +3 -0
  378. data/app/assets/images/scribo/icons/foxpro.svg +1 -0
  379. data/app/assets/images/scribo/icons/fsharp.svg +7 -0
  380. data/app/assets/images/scribo/icons/fusebox.svg +20 -0
  381. data/app/assets/images/scribo/icons/gatsby.svg +5 -0
  382. data/app/assets/images/scribo/icons/gemfile.svg +1 -0
  383. data/app/assets/images/scribo/icons/git.svg +4 -0
  384. data/app/assets/images/scribo/icons/gitlab.svg +43 -0
  385. data/app/assets/images/scribo/icons/gitpod.svg +1 -0
  386. data/app/assets/images/scribo/icons/go-mod.svg +8 -0
  387. data/app/assets/images/scribo/icons/go.svg +8 -0
  388. data/app/assets/images/scribo/icons/go_gopher.svg +25 -0
  389. data/app/assets/images/scribo/icons/godot-assets.svg +1 -0
  390. data/app/assets/images/scribo/icons/godot.svg +1 -0
  391. data/app/assets/images/scribo/icons/gradle.svg +3 -0
  392. data/app/assets/images/scribo/icons/graphcool.svg +6 -0
  393. data/app/assets/images/scribo/icons/graphql.svg +11 -0
  394. data/app/assets/images/scribo/icons/groovy.svg +3 -0
  395. data/app/assets/images/scribo/icons/grunt.svg +1 -0
  396. data/app/assets/images/scribo/icons/gulp.svg +3 -0
  397. data/app/assets/images/scribo/icons/h.svg +6 -0
  398. data/app/assets/images/scribo/icons/hack.svg +2 -0
  399. data/app/assets/images/scribo/icons/haml.svg +5 -0
  400. data/app/assets/images/scribo/icons/handlebars.svg +3 -0
  401. data/app/assets/images/scribo/icons/haskell.svg +8 -0
  402. data/app/assets/images/scribo/icons/haxe.svg +17 -0
  403. data/app/assets/images/scribo/icons/hcl.svg +1 -0
  404. data/app/assets/images/scribo/icons/hcl_light.svg +1 -0
  405. data/app/assets/images/scribo/icons/helm.svg +1 -0
  406. data/app/assets/images/scribo/icons/heroku.svg +1 -0
  407. data/app/assets/images/scribo/icons/hpp.svg +7 -0
  408. data/app/assets/images/scribo/icons/html.svg +3 -0
  409. data/app/assets/images/scribo/icons/http.svg +3 -0
  410. data/app/assets/images/scribo/icons/i18n.svg +1 -0
  411. data/app/assets/images/scribo/icons/image.svg +3 -0
  412. data/app/assets/images/scribo/icons/ionic.svg +1 -0
  413. data/app/assets/images/scribo/icons/istanbul.svg +1 -0
  414. data/app/assets/images/scribo/icons/java.svg +3 -0
  415. data/app/assets/images/scribo/icons/javascript-map.svg +6 -0
  416. data/app/assets/images/scribo/icons/javascript.svg +3 -0
  417. data/app/assets/images/scribo/icons/jenkins.svg +1 -0
  418. data/app/assets/images/scribo/icons/jest.svg +1 -0
  419. data/app/assets/images/scribo/icons/jinja.svg +17 -0
  420. data/app/assets/images/scribo/icons/jinja_light.svg +17 -0
  421. data/app/assets/images/scribo/icons/json.svg +1 -0
  422. data/app/assets/images/scribo/icons/julia.svg +9 -0
  423. data/app/assets/images/scribo/icons/jupyter.svg +1 -0
  424. data/app/assets/images/scribo/icons/karma.svg +8 -0
  425. data/app/assets/images/scribo/icons/key.svg +3 -0
  426. data/app/assets/images/scribo/icons/kivy.svg +9 -0
  427. data/app/assets/images/scribo/icons/kl.svg +8 -0
  428. data/app/assets/images/scribo/icons/kotlin.svg +14 -0
  429. data/app/assets/images/scribo/icons/laravel.svg +5 -0
  430. data/app/assets/images/scribo/icons/less.svg +1 -0
  431. data/app/assets/images/scribo/icons/lib.svg +3 -0
  432. data/app/assets/images/scribo/icons/livescript.svg +18 -0
  433. data/app/assets/images/scribo/icons/lock.svg +3 -0
  434. data/app/assets/images/scribo/icons/log.svg +4 -0
  435. data/app/assets/images/scribo/icons/lua.svg +7 -0
  436. data/app/assets/images/scribo/icons/makefile.svg +1 -0
  437. data/app/assets/images/scribo/icons/markdown.svg +3 -0
  438. data/app/assets/images/scribo/icons/markojs.svg +12 -0
  439. data/app/assets/images/scribo/icons/mathematica.svg +3 -0
  440. data/app/assets/images/scribo/icons/matlab.svg +8 -0
  441. data/app/assets/images/scribo/icons/mdx.svg +1 -0
  442. data/app/assets/images/scribo/icons/merlin.svg +5 -0
  443. data/app/assets/images/scribo/icons/mint.svg +1 -0
  444. data/app/assets/images/scribo/icons/mjml.svg +4 -0
  445. data/app/assets/images/scribo/icons/mocha.svg +2 -0
  446. data/app/assets/images/scribo/icons/moonscript.svg +1 -0
  447. data/app/assets/images/scribo/icons/mxml.svg +3 -0
  448. data/app/assets/images/scribo/icons/nest-controller.svg +8 -0
  449. data/app/assets/images/scribo/icons/nest-decorator.svg +8 -0
  450. data/app/assets/images/scribo/icons/nest-filter.svg +8 -0
  451. data/app/assets/images/scribo/icons/nest-gateway.svg +8 -0
  452. data/app/assets/images/scribo/icons/nest-guard.svg +8 -0
  453. data/app/assets/images/scribo/icons/nest-middleware.svg +8 -0
  454. data/app/assets/images/scribo/icons/nest-module.svg +8 -0
  455. data/app/assets/images/scribo/icons/nest-pipe.svg +8 -0
  456. data/app/assets/images/scribo/icons/nest-service.svg +8 -0
  457. data/app/assets/images/scribo/icons/nest.svg +8 -0
  458. data/app/assets/images/scribo/icons/netlify.svg +1 -0
  459. data/app/assets/images/scribo/icons/ngrx-actions.svg +4 -0
  460. data/app/assets/images/scribo/icons/ngrx-effects.svg +4 -0
  461. data/app/assets/images/scribo/icons/ngrx-entity.svg +4 -0
  462. data/app/assets/images/scribo/icons/ngrx-reducer.svg +4 -0
  463. data/app/assets/images/scribo/icons/ngrx-state.svg +4 -0
  464. data/app/assets/images/scribo/icons/nim.svg +1 -0
  465. data/app/assets/images/scribo/icons/nix.svg +6 -0
  466. data/app/assets/images/scribo/icons/nodejs.svg +3 -0
  467. data/app/assets/images/scribo/icons/nodejs_alt.svg +1 -0
  468. data/app/assets/images/scribo/icons/nodemon.svg +7 -0
  469. data/app/assets/images/scribo/icons/now.svg +1 -0
  470. data/app/assets/images/scribo/icons/now_light.svg +1 -0
  471. data/app/assets/images/scribo/icons/npm.svg +8 -0
  472. data/app/assets/images/scribo/icons/nunjucks.svg +3 -0
  473. data/app/assets/images/scribo/icons/nuxt.svg +1 -0
  474. data/app/assets/images/scribo/icons/ocaml.svg +1 -0
  475. data/app/assets/images/scribo/icons/pdf.svg +1 -0
  476. data/app/assets/images/scribo/icons/percy.svg +1 -0
  477. data/app/assets/images/scribo/icons/perl.svg +3 -0
  478. data/app/assets/images/scribo/icons/php.svg +1 -0
  479. data/app/assets/images/scribo/icons/php_elephant.svg +4 -0
  480. data/app/assets/images/scribo/icons/postcss.svg +9 -0
  481. data/app/assets/images/scribo/icons/powerpoint.svg +3 -0
  482. data/app/assets/images/scribo/icons/powershell.svg +1 -0
  483. data/app/assets/images/scribo/icons/prettier.svg +35 -0
  484. data/app/assets/images/scribo/icons/prisma.svg +1 -0
  485. data/app/assets/images/scribo/icons/processing.svg +5 -0
  486. data/app/assets/images/scribo/icons/processing_light.svg +5 -0
  487. data/app/assets/images/scribo/icons/protractor.svg +1 -0
  488. data/app/assets/images/scribo/icons/pug.svg +22 -0
  489. data/app/assets/images/scribo/icons/puppet.svg +13 -0
  490. data/app/assets/images/scribo/icons/purescript.svg +1 -0
  491. data/app/assets/images/scribo/icons/python-misc.svg +1 -0
  492. data/app/assets/images/scribo/icons/python.svg +8 -0
  493. data/app/assets/images/scribo/icons/r.svg +4 -0
  494. data/app/assets/images/scribo/icons/racket.svg +1 -0
  495. data/app/assets/images/scribo/icons/raml.svg +1 -0
  496. data/app/assets/images/scribo/icons/razor.svg +1 -0
  497. data/app/assets/images/scribo/icons/react.svg +3 -0
  498. data/app/assets/images/scribo/icons/react_ts.svg +1 -0
  499. data/app/assets/images/scribo/icons/readme.svg +3 -0
  500. data/app/assets/images/scribo/icons/reason.svg +3 -0
  501. data/app/assets/images/scribo/icons/red.svg +8 -0
  502. data/app/assets/images/scribo/icons/redux-action.svg +1 -0
  503. data/app/assets/images/scribo/icons/redux-reducer.svg +1 -0
  504. data/app/assets/images/scribo/icons/redux-store.svg +1 -0
  505. data/app/assets/images/scribo/icons/restql.svg +60 -0
  506. data/app/assets/images/scribo/icons/riot.svg +1 -0
  507. data/app/assets/images/scribo/icons/robot.svg +1 -0
  508. data/app/assets/images/scribo/icons/rollup.svg +50 -0
  509. data/app/assets/images/scribo/icons/routing.svg +3 -0
  510. data/app/assets/images/scribo/icons/ruby.svg +3 -0
  511. data/app/assets/images/scribo/icons/rust.svg +3 -0
  512. data/app/assets/images/scribo/icons/san.svg +1 -0
  513. data/app/assets/images/scribo/icons/sass.svg +1 -0
  514. data/app/assets/images/scribo/icons/sbt.svg +6 -0
  515. data/app/assets/images/scribo/icons/scala.svg +1 -0
  516. data/app/assets/images/scribo/icons/scheme.svg +1 -0
  517. data/app/assets/images/scribo/icons/semantic-release.svg +1 -0
  518. data/app/assets/images/scribo/icons/semantic-release_light.svg +1 -0
  519. data/app/assets/images/scribo/icons/sequelize.svg +31 -0
  520. data/app/assets/images/scribo/icons/settings.svg +3 -0
  521. data/app/assets/images/scribo/icons/shaderlab.svg +3 -0
  522. data/app/assets/images/scribo/icons/silverstripe.svg +1 -0
  523. data/app/assets/images/scribo/icons/slim.svg +4 -0
  524. data/app/assets/images/scribo/icons/smarty.svg +3 -0
  525. data/app/assets/images/scribo/icons/snyk.svg +23 -0
  526. data/app/assets/images/scribo/icons/solidity.svg +7 -0
  527. data/app/assets/images/scribo/icons/stencil.svg +1 -0
  528. data/app/assets/images/scribo/icons/stencil_light.svg +1 -0
  529. data/app/assets/images/scribo/icons/storybook.svg +1 -0
  530. data/app/assets/images/scribo/icons/stylelint.svg +12 -0
  531. data/app/assets/images/scribo/icons/stylelint_light.svg +12 -0
  532. data/app/assets/images/scribo/icons/stylus.svg +1 -0
  533. data/app/assets/images/scribo/icons/sublime.svg +1 -0
  534. data/app/assets/images/scribo/icons/svelte.svg +1 -0
  535. data/app/assets/images/scribo/icons/svg.svg +1 -0
  536. data/app/assets/images/scribo/icons/swc.svg +12 -0
  537. data/app/assets/images/scribo/icons/swift.svg +1 -0
  538. data/app/assets/images/scribo/icons/table.svg +3 -0
  539. data/app/assets/images/scribo/icons/tailwindcss.svg +1 -0
  540. data/app/assets/images/scribo/icons/terraform.svg +12 -0
  541. data/app/assets/images/scribo/icons/test-js.svg +1 -0
  542. data/app/assets/images/scribo/icons/test-jsx.svg +4 -0
  543. data/app/assets/images/scribo/icons/test-ts.svg +1 -0
  544. data/app/assets/images/scribo/icons/tex.svg +1 -0
  545. data/app/assets/images/scribo/icons/todo.svg +1 -0
  546. data/app/assets/images/scribo/icons/travis.svg +13 -0
  547. data/app/assets/images/scribo/icons/tune.svg +7 -0
  548. data/app/assets/images/scribo/icons/twig.svg +3 -0
  549. data/app/assets/images/scribo/icons/typescript-def.svg +6 -0
  550. data/app/assets/images/scribo/icons/typescript.svg +3 -0
  551. data/app/assets/images/scribo/icons/url.svg +3 -0
  552. data/app/assets/images/scribo/icons/vagrant.svg +1 -0
  553. data/app/assets/images/scribo/icons/velocity.svg +1 -0
  554. data/app/assets/images/scribo/icons/verilog.svg +3 -0
  555. data/app/assets/images/scribo/icons/vfl.svg +16 -0
  556. data/app/assets/images/scribo/icons/video.svg +4 -0
  557. data/app/assets/images/scribo/icons/vim.svg +1 -0
  558. data/app/assets/images/scribo/icons/virtual.svg +1 -0
  559. data/app/assets/images/scribo/icons/visualstudio.svg +4 -0
  560. data/app/assets/images/scribo/icons/vscode.svg +9 -0
  561. data/app/assets/images/scribo/icons/vue-config.svg +1 -0
  562. data/app/assets/images/scribo/icons/vue.svg +1 -0
  563. data/app/assets/images/scribo/icons/vuex-store.svg +1 -0
  564. data/app/assets/images/scribo/icons/wakatime.svg +21 -0
  565. data/app/assets/images/scribo/icons/wakatime_light.svg +21 -0
  566. data/app/assets/images/scribo/icons/wallaby.svg +1 -0
  567. data/app/assets/images/scribo/icons/watchman.svg +4 -0
  568. data/app/assets/images/scribo/icons/webassembly.svg +1 -0
  569. data/app/assets/images/scribo/icons/webhint.svg +5 -0
  570. data/app/assets/images/scribo/icons/webpack.svg +6 -0
  571. data/app/assets/images/scribo/icons/wepy.svg +1 -0
  572. data/app/assets/images/scribo/icons/wolframlanguage.svg +13 -0
  573. data/app/assets/images/scribo/icons/word.svg +3 -0
  574. data/app/assets/images/scribo/icons/xaml.svg +3 -0
  575. data/app/assets/images/scribo/icons/xml.svg +4 -0
  576. data/app/assets/images/scribo/icons/yaml.svg +1 -0
  577. data/app/assets/images/scribo/icons/yang.svg +1 -0
  578. data/app/assets/images/scribo/icons/yarn.svg +3 -0
  579. data/app/assets/images/scribo/icons/zip.svg +3 -0
  580. data/app/assets/stylesheets/scribo/application.css +108 -0
  581. data/app/assets/stylesheets/scribo/components/file-icons.css +158 -0
  582. data/app/assets/stylesheets/scribo/components/open-editors.css +83 -0
  583. data/app/assets/stylesheets/scribo/components/tree-view.css +312 -0
  584. data/app/javascript/scribo/application.js +2 -0
  585. data/app/javascript/scribo/controllers/application.js +12 -0
  586. data/app/javascript/scribo/controllers/image_editor_controller.js +72 -0
  587. data/app/javascript/scribo/controllers/index.js +4 -0
  588. data/app/javascript/scribo/controllers/open_editors_controller.js +291 -0
  589. data/app/javascript/scribo/controllers/text_editor_controller.js +39 -0
  590. data/app/javascript/scribo/controllers/tree_view_controller.js +378 -0
  591. data/app/javascript/scribo/controllers/upload_controller.js +81 -0
  592. data/app/views/scribo/admin/sites/contents/_form.html.slim +11 -12
  593. data/app/views/scribo/shared/_ide.html.slim +1 -1
  594. data/app/views/scribo/shared/_tree-view.html.slim +3 -3
  595. data/bin/importmap +4 -0
  596. data/bin/rails +14 -0
  597. data/bin/rake +29 -0
  598. data/bin/rubocop +29 -0
  599. data/cli/.gitignore +2 -0
  600. data/cli/scribo.cr +103 -0
  601. data/cli/shard.lock +6 -0
  602. data/cli/shard.yml +18 -0
  603. data/config/importmap.rb +8 -0
  604. data/docs/content.md +33 -0
  605. data/docs/editor.png +0 -0
  606. data/docs/features.md +71 -0
  607. data/docs/ide.md +17 -0
  608. data/docs/import_export.md +7 -0
  609. data/docs/liquid.md +59 -0
  610. data/favicon.ico +0 -0
  611. data/frontend/images/.DS_Store +0 -0
  612. data/icon.png +0 -0
  613. data/lib/generators/scribo/install_generator.rb +22 -0
  614. data/lib/generators/scribo/tailwind_config_generator.rb +24 -0
  615. data/lib/generators/scribo/templates/config/initializers/scribo.rb +16 -0
  616. data/lib/scribo/engine.rb +19 -8
  617. data/lib/scribo/version.rb +1 -1
  618. data/lib/tasks/scribo_tasks.rake +13 -0
  619. data/logo.svg +1 -0
  620. data/scribo.gemspec +54 -0
  621. data/vendor/javascript/@hotwired--stimulus.js +2 -0
  622. data/vendor/javascript/painterro.js +2 -0
  623. data/vendor/javascript/sortablejs.js +134 -0
  624. data/yarn.lock +6775 -0
  625. metadata +683 -15
  626. data/app/assets/javascripts/scribo/scribo.js +0 -1
  627. data/app/assets/stylesheets/scribo/scribo.css +0 -1
  628. data/lib/scribo/liquid/tags/editable_url_tag.rb +0 -19
@@ -0,0 +1,81 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+
3
+ /***
4
+ * Upload controller
5
+ *
6
+ * Uploads a file, when you drop a file.
7
+ */
8
+ export default class extends Controller {
9
+
10
+ connect() {
11
+ const self = this;
12
+ if(!self.data.has('param-name')) {
13
+ console.warn(this.element, "has no data-upload-param attribute, uploads may not work")
14
+ };
15
+
16
+ self.element.addEventListener('dragover', function (evt) {
17
+ self.element.classList.add('dragging');
18
+ evt.preventDefault();
19
+ });
20
+
21
+ self.element.addEventListener('dragleave', function (evt) {
22
+ self.element.classList.remove('dragging');
23
+ evt.preventDefault();
24
+ });
25
+
26
+ self.element.addEventListener('dragenter', function (evt) {
27
+ self.element.classList.add('dragging');
28
+ evt.preventDefault();
29
+ });
30
+
31
+ self.element.addEventListener('drop', function (evt) {
32
+ if (evt.dataTransfer.files.length == 0) {
33
+ return;
34
+ }
35
+
36
+ self.element.classList.remove('dragging');
37
+ evt.preventDefault();
38
+ evt.cancelBubble = true;
39
+
40
+ let formData = new FormData();
41
+ if(self.data.has('extra-data')) {
42
+ for (let [key, value] of Object.entries(JSON.parse(self.data.get('extra-data')))) {
43
+ formData.append(key, value);
44
+ }
45
+ }
46
+
47
+ for (let i = 0; i < evt.dataTransfer.files.length; i++) {
48
+ formData.append(self.data.get('param-name'), evt.dataTransfer.files[i]);
49
+ }
50
+
51
+ self.element.classList.add('uploading');
52
+
53
+ fetch(self.data.get('url'), {
54
+ method: 'POST',
55
+ headers: {
56
+ 'X-CSRF-Token': document.querySelector('meta[name=csrf-token]').content
57
+ },
58
+ body: formData
59
+ })
60
+ .then(self.handleErrors)
61
+ .then((response) => {
62
+ response.json().then(function (data) {
63
+ self.element.classList.remove('uploading');
64
+ let node = document.querySelector(data.selector);
65
+ if (node) {
66
+ node.innerHTML = data.html;
67
+ }
68
+ });
69
+ })
70
+ .catch(error => {
71
+ console.log(error);
72
+ self.element.classList.remove('uploading');
73
+ });
74
+ });
75
+ }
76
+
77
+ handleErrors(response) {
78
+ if (!response.ok) throw new Error(response.status);
79
+ return response;
80
+ }
81
+ }
@@ -1,17 +1,16 @@
1
- div style="position: absolute; width: 100%; height: 100%;"
1
+ div id="content-editor-#{@content.id}" style="position: absolute; width: 100%; height: 100%;" data-controller="text-editor" data-text-editor-content-id=@content.id data-text-editor-height-value="100%" data-text-editor-mode=@content.content_type data-text-editor-save-url=admin_site_content_path(@site, @content)
2
2
  - if @content.kind == 'asset'
3
- - if @content.media_type == 'image'
4
- div id="content-editor-#{@content.id}" data-controller="image-editor" data-image-editor-content-id=@content.id data-image-editor-url=content_url(@content) data-image-editor-mime-type=@content.mime_type data-image-editor-save-url=admin_site_content_path(@site, @content) style="max-width: 100%;"
5
- - if @content.media_type == 'font' || @content.mime_type == "application/vnd.ms-fontobject"
6
- css:
3
+ - if @content.media_type == 'image'
4
+ div data-controller="image-editor" data-image-editor-content-id=@content.id data-image-editor-url=content_url(@content) data-image-editor-mime-type=@content.mime_type data-image-editor-save-url=admin_site_content_path(@site, @content) style="max-width: 100%;"
5
+ - if @content.media_type == 'font' || @content.mime_type == "application/vnd.ms-fontobject"
6
+ css:
7
7
  @font-face {
8
- font-family: 'MyWebFont';
9
- src: url(#{"#{content_path(@content)}"}); /* IE9 Compat Modes */
8
+ font-family: 'MyWebFont';
9
+ src: url(#{ "#{content_path(@content)}" }); /* IE9 Compat Modes */
10
10
  }
11
- - for i in [10, 12, 14, 16, 18, 20, 22, 24]
12
- div style="font-family: MyWebFont; font-size: #{i}px;"
13
- | #{i} - THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG. the quick brown fox jumped over the lazy dog.
11
+ - for i in [10, 12, 14, 16, 18, 20, 22, 24]
12
+ div style="font-family: MyWebFont; font-size: #{i}px;"
13
+ | #{i} - THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG. the quick brown fox jumped over the lazy dog.
14
14
 
15
15
  - else
16
- textarea id="content-editor-#{@content.id}" name='content[data_with_frontmatter]' data-controller="text-editor" data-text-editor-content-id=@content.id data-text-editor-target="textarea" data-text-editor-mode="#{@content.content_type}" data-text-editor-save-url=admin_site_content_path(@site, @content) style="display: block; height: 100%;"
17
- = @content.data_with_frontmatter || 'Start typing here'
16
+ input type="hidden" name='content[data_with_frontmatter]' data-text-editor-target="input" value=(@content.data_with_frontmatter || 'Start typing here')
@@ -1,7 +1,7 @@
1
1
  .scribo-ide id="ide" data-controller='open-editors'
2
2
  .explorer-pane data-controller="tree-view upload" data-tree-view-update-url="#{move_admin_site_contents_path(@site)}" data-upload-url="#{upload_admin_site_contents_url(@site)}" data-upload-param-name="content[files][]"
3
3
  .tree-view
4
- = render partial: 'scribo/shared/tree-view'
4
+ = render partial: 'scribo/shared/tree-view'
5
5
 
6
6
  .editors-pane
7
7
  .editors-tabs data-open-editors-target='tabs' data-action="click->open-editors#clickTabs"
@@ -9,9 +9,9 @@ div.section
9
9
  div.section
10
10
  span.title = @site.title
11
11
  .tools
12
- i.fal.fa-file-plus data-action="click->tree-view#create" data-kind="text" data-url="#{admin_site_contents_url(@site)}" title=I18n.t('scribo.tools.new_file')
13
- i.fal.fa-folder-plus data-action="click->tree-view#create" data-kind="folder" data-url="#{admin_site_contents_url(@site)}" title=I18n.t('scribo.tools.new_folder')
14
- i.fal.fa-square-plus data-action="click->tree-view#collapseExpandAll" data-tree-view-target="collapseExpand" title=I18n.t('scribo.tools.collapse_all')
12
+ i.fas.fa-file-plus data-action="click->tree-view#create" data-kind="text" data-url="#{admin_site_contents_url(@site)}" title=I18n.t('scribo.tools.new_file')
13
+ i.fas.fa-folder-plus data-action="click->tree-view#create" data-kind="folder" data-url="#{admin_site_contents_url(@site)}" title=I18n.t('scribo.tools.new_folder')
14
+ i.fas.fa-square-plus data-action="click->tree-view#collapseExpandAll" data-tree-view-target="collapseExpand" title=I18n.t('scribo.tools.collapse_all')
15
15
 
16
16
  ul data-tree-view-target="contentItems" data-open-editors-target='contentItems'
17
17
  - @contents.each do |content|
data/bin/importmap ADDED
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative "../test/dummy/config/application"
4
+ require "importmap/commands"
data/bin/rails ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ # This command will automatically be run when you run "rails" with Rails gems
3
+ # installed from the root of your application.
4
+
5
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
6
+ ENGINE_PATH = File.expand_path('../../lib/scribo/engine', __FILE__)
7
+ APP_PATH = File.expand_path('../../test/dummy/config/application', __FILE__)
8
+
9
+ # Set up gems listed in the Gemfile.
10
+ ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
11
+ require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE'])
12
+
13
+ require 'rails/all'
14
+ require 'rails/engine/commands'
data/bin/rake ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rake' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rake", "rake")
data/bin/rubocop ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rubocop' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rubocop", "rubocop")
data/cli/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ lib/
2
+ scribo
data/cli/scribo.cr ADDED
@@ -0,0 +1,103 @@
1
+ require "compress/zip"
2
+ require "admiral"
3
+ require "yaml"
4
+ require "http/client"
5
+
6
+ class Scribo
7
+ def initialize
8
+ end
9
+
10
+ def zip_and_upload
11
+ if !config["endpoint"]? || config["api_key"]?
12
+ puts "Please configure an endpoint and api_key in your _config.yml:\n\n"
13
+ puts "cli:\n endpoint: https://example.com/\n api_key: someapikey"
14
+ exit
15
+ end
16
+
17
+ zip_file_name = "#{File.basename(Dir.current)}.zip"
18
+ tempfile = File.tempfile(zip_file_name)
19
+ File.open(tempfile.path, "w") do |file|
20
+ Compress::Zip::Writer.open(file) do |zip|
21
+
22
+ Dir.glob("**/*").each do |file_name|
23
+ next if File.directory?(file_name)
24
+ zip.add file_name, File.open(file_name)
25
+ end
26
+ end
27
+ end
28
+
29
+ io = IO::Memory.new
30
+ builder = HTTP::FormData::Builder.new(io, "aA47")
31
+ builder.file("files[]", File.open(tempfile.path), HTTP::FormData::FileMetadata.new(filename: zip_file_name))
32
+ builder.finish
33
+
34
+ response = HTTP::Client.post(import_url, headers: HTTP::Headers{"User-Agent" => "Scribo"}, body: io.to_s)
35
+
36
+ tempfile.delete
37
+ end
38
+
39
+ def init_example(name)
40
+ if Dir.exists?(name)
41
+ puts "A folder #{name} already exists, move this out of the way first."
42
+ exit
43
+ end
44
+
45
+ Dir.mkdir_p("#{name}/assets/images")
46
+ Dir.mkdir_p("#{name}/assets/fonts")
47
+ Dir.mkdir_p("#{name}/assets/style")
48
+ Dir.mkdir_p("#{name}/_layouts")
49
+ File.open("#{name}/_config.yml", "w") do |file|
50
+ file.puts "# General configuration\ntitle: #{name}\nbaseurl: /#{name}\n\n# Scribo command line utility related\n\ncli:\n endpoint: https://example.com/scribo\n api_key: someapikey"
51
+ end
52
+ File.open("#{name}/index.md", "w") do |file|
53
+ file.puts "---\nlayout: default\n---\n# Welcome to #{name}\nYou can find the contents of this page in index.md"
54
+ end
55
+ File.open("#{name}/_layouts/default.html", "w") do |file|
56
+ file.puts %(<!DOCTYPE html>\n<html>\n<head>\n <title></title>\n <meta name="viewport" content="width=device-width, initial-scale=1">\n<body>\n {{content}}\n</body>\n</html>)
57
+ end
58
+ end
59
+
60
+ # private
61
+
62
+ def config
63
+ config = YAML.parse(File.read("_config.yml"))
64
+ config = config["cli"]
65
+ end
66
+
67
+ def import_url
68
+ "#{config["endpoint"]}/api/sites/import"
69
+ end
70
+ end
71
+
72
+ class ScriboCommand < Admiral::Command
73
+ define_help description: "Scribo command line utility"
74
+
75
+ class PublishCommand < Admiral::Command
76
+ def run
77
+ Scribo.new.zip_and_upload
78
+ end
79
+ end
80
+
81
+ class InitCommand < Admiral::Command
82
+ define_help description: "Initializes a new site"
83
+ define_argument name, required: true
84
+
85
+ def run
86
+ Scribo.new.init_example(arguments.name)
87
+ end
88
+ end
89
+
90
+ register_sub_command publish : PublishCommand, description: "Uploads the current site"
91
+ register_sub_command init : InitCommand, description: "Creates a new site"
92
+
93
+ def run
94
+ puts help
95
+
96
+ if !File.exists?("_config.yml")
97
+ puts "\nNo _config.yml found, are you in the correct folder?"
98
+ exit
99
+ end
100
+ end
101
+ end
102
+
103
+ ScriboCommand.run
data/cli/shard.lock ADDED
@@ -0,0 +1,6 @@
1
+ version: 2.0
2
+ shards:
3
+ admiral:
4
+ git: https://github.com/jwaldrip/admiral.cr.git
5
+ version: 1.11.2
6
+
data/cli/shard.yml ADDED
@@ -0,0 +1,18 @@
1
+ name: cli
2
+ version: 0.1.0
3
+
4
+ authors:
5
+ - Tom de Grunt <tom@degrunt.nl>
6
+
7
+ description: |
8
+ Scribo CLI utility
9
+
10
+ dependencies:
11
+ admiral:
12
+ github: jwaldrip/admiral.cr
13
+
14
+ # development_dependencies:
15
+ # webmock:
16
+ # github: manastech/webmock.cr
17
+
18
+ license: MIT
@@ -0,0 +1,8 @@
1
+ pin "@hotwired/stimulus", to: "@hotwired--stimulus.js" # @3.2.2
2
+ pin "@hotwired/stimulus-loading", to: "stimulus-loading.js", preload: true
3
+ pin "painterro" # @1.2.87
4
+ pin "sortablejs" # @1.15.2
5
+
6
+ pin "scribo", to: "scribo/application.js", preload: false
7
+
8
+ pin_all_from Scribo::Engine.root.join("app/javascript/scribo/controllers"), under: "scribo/controllers", to: "scribo/controllers", preload: false
data/docs/content.md ADDED
@@ -0,0 +1,33 @@
1
+ # Content
2
+
3
+ To keep the CMS easy to use and not have to much impact on your existing database,
4
+ all content is kept in one model: `Content`.
5
+ The field 'kind' is used to make a distinction between text-based content (text) and binary content (assets).
6
+
7
+ ## Content
8
+ Text based content (kind: text) is meant for things like:
9
+ - Text (text/plain)
10
+ - HTML (text/html)
11
+ - JavaScript
12
+ - Stylesheets
13
+ - JSON
14
+ - XML
15
+
16
+ Text based content is always going through the liquid templating processor.
17
+
18
+ ### Path
19
+
20
+ All content has a path, and is directly available through a url or path. You can also make it not directly available by using an underscore in the path.
21
+
22
+ ## Assets
23
+ Binary content (kind: assets) is meant for things like:
24
+ - Images
25
+ - Audio
26
+ - Video
27
+ - Documents (Word, Excel, Powerpoint, PDF's)
28
+ - Fonts
29
+ - Others (fe zip)
30
+ - Everything else
31
+
32
+ Assets will always be served in the same way they are stored in the database.
33
+
data/docs/editor.png ADDED
Binary file
data/docs/features.md ADDED
@@ -0,0 +1,71 @@
1
+ # Features
2
+
3
+ ## Shared path per site
4
+
5
+ All content within one site shares a path to be as similar to a regular site as possible.
6
+ This means your index.html can refer to a /img/logo.png just like you normally would.
7
+
8
+ ## Nested layouts
9
+
10
+ Your blog articles can have an article layout, but still use your site-layout:
11
+
12
+ Say you have an article.html and some layouts:
13
+
14
+ - article.html, layout: article_layout
15
+ - article_layout, layout: application_layout
16
+ - application_layout
17
+
18
+ Scribo will render `article.html` in the `article_layout`, which will be rendered in the `application_layout`
19
+
20
+ ## Liquid templating
21
+
22
+ All text-based content is rendered through [liquid](http://liquidmarkup.org)
23
+ This means you can do powerful things with your pages, layouts but even stylesheets.
24
+
25
+ To every content we render, we add the `content` local, this means you can access content information in the content we render:
26
+
27
+ index.html:
28
+
29
+ ```html
30
+ <html>
31
+ <head>
32
+ <title>{{content.title}}</title>
33
+ <meta name="title" content="{{content.title}}" />
34
+ <meta name="description" content="{{content.description}}" />
35
+ <meta name="keywords" content="{{content.keywords}}" />
36
+ </head>
37
+ <body>
38
+ <h1>Navigation</h1>
39
+ <ul>
40
+ {%for c in content.sites.contents%}
41
+ <li><a href="{{c.path}}">{{c.title}}</a></li>
42
+ {%endfor%}
43
+ </ul>
44
+ </body>
45
+ </html>
46
+ ```
47
+
48
+ ### include
49
+
50
+ Usage: {% include 'identifier' %}
51
+
52
+ Will include the content from the identified content.
53
+
54
+ Example:
55
+
56
+ ```
57
+ {% include 'menu' %}
58
+ ```
59
+
60
+ Will look for content with identifier 'menu' and include that.
61
+
62
+ ## Filters
63
+
64
+ Because we use [Slim](http://slim-lang.com) and [Tilt](https://github.com/rtomayko/tilt), all text-based content can be run through additional filters like Markdown, Slim, Haml and Sass.
65
+
66
+ If you add content and set filter to 'markdown', Scribo will render that content using markdown.
67
+
68
+ ## Nested content (not enabled)
69
+
70
+ Content can have child content, this allows for blog-like structure (rendering is done by parent).
71
+ Child content will inherit the path of the parent.
data/docs/ide.md ADDED
@@ -0,0 +1,17 @@
1
+ # IDE
2
+ The IDE provides you with two main areas, the explorer on the right and the code editor on the right.
3
+
4
+ ## Explorer
5
+ The explorer shows all files and folders in the site. The explorer allows you to do the following:
6
+ - add files or folders, by clicking the 'New file' of 'New folder' icon
7
+ - rename files or folders, by double clicking on a file or folder name
8
+ - reorder files or folders by dragging them.
9
+ - add new files to your site by dragging files onto the tree
10
+
11
+ ## Code editor
12
+ The code editor allows you to edit files. It provides syntax highlighting, allows you to collapse regions.
13
+ The following shortcuts are available:
14
+
15
+ - cmd-f / ctrl-f: Find
16
+ - option-cmd-f / alt-ctrl-f: Replace
17
+
@@ -0,0 +1,7 @@
1
+ # Importing and exporting
2
+
3
+ Scribo allows you to easily import and export sites,
4
+ if you want to work with the content outside the web-based maintenance.
5
+
6
+ Importing and exporting is done using zip files, which contains one zipped site.
7
+ All content in the zip will be in a folder with the same base-name as the zip.
data/docs/liquid.md ADDED
@@ -0,0 +1,59 @@
1
+ # Liquid
2
+
3
+ Scribo uses liquid for all its template rendering, liquid is simple and safe.
4
+ You can read more about liquid here: https://shopify.github.io/liquid/
5
+
6
+ When you render a template, you can pass it assigns and registers.
7
+ The difference is subtle: assigns are exposed to the template, while registers are exposed to Drops, Tags, and Filters.
8
+
9
+ ## Customizing
10
+
11
+ ### Filters
12
+ Filters are methods which take one or more parameters and return a value.
13
+ Filters can access the context and registers as in the below example:
14
+
15
+ ```ruby
16
+ module RenderFilter
17
+ def render(input)
18
+ template = Liquid::Template.parse(input)
19
+ template.render(@context, registers: @context.registers)
20
+ end
21
+ end
22
+
23
+ Liquid::Template.register_filter(RenderFilter)
24
+ ```
25
+
26
+ ### Tags
27
+
28
+ "Tags" are tags that take any number of arguments, but do not contain a block of template code.
29
+
30
+ ```ruby
31
+ # Renders content
32
+ #
33
+ # {% render variable%}
34
+ class RenderTag < Liquid::Tag
35
+ def initialize(tag_name, markup, options)
36
+ super
37
+ @name = markup.strip
38
+ end
39
+
40
+ def render(context)
41
+ value = Liquid::VariableLookup.parse(@name).evaluate(context)
42
+ template = Liquid::Template.parse(value)
43
+ template.render(context, registers: context.registers)
44
+ end
45
+ end
46
+
47
+ Liquid::Template.register_tag('render', RenderTag)
48
+ ```
49
+
50
+ ### Block tags
51
+
52
+ "Blocks" are tags that contain a block of template code which is delimited by a {% end<TAGNAME> %} tag.
53
+
54
+ ## Reference
55
+
56
+ https://github.com/Shopify/liquid/wiki/Liquid-for-Programmers
57
+ https://github.com/Shopify/liquid/wiki/Liquid-for-Designers
58
+ https://shopify.github.io/liquid/
59
+
data/favicon.ico ADDED
Binary file
Binary file
data/icon.png ADDED
Binary file
@@ -0,0 +1,22 @@
1
+ module Scribo
2
+ class InstallGenerator < Rails::Generators::Base
3
+ source_root File.expand_path("../templates", __FILE__)
4
+
5
+ def create_initializer_file
6
+ template "config/initializers/scribo.rb"
7
+ end
8
+
9
+ def add_route
10
+ return if Rails.application.routes.routes.detect { |route| route.app.app == Scribo::Engine }
11
+ route %(mount Scribo::Engine => "/scribo")
12
+ end
13
+
14
+ def copy_migrations
15
+ rake "scribo:install:migrations"
16
+ end
17
+
18
+ def tailwindcss_config
19
+ rake "scribo:tailwindcss:config"
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ require 'rails/generators/base'
2
+
3
+ module Scribo
4
+ module Generators
5
+ class TailwindConfigGenerator < Rails::Generators::Base
6
+ source_root File.expand_path('../templates', __dir__)
7
+ desc 'Configures tailwind.config.js and application.tailwindcss.css'
8
+
9
+ def add_content_to_tailwind_config
10
+ inject_into_file "config/tailwind.config.js", before: "],\n theme: {" do
11
+ " // Scribo content\n" +
12
+ %w[/app/views/**/* /app/helpers/**/* /app/controllers/**/* /app/components/**/* /app/javascript/**/*.js /app/assets/**/*.css].map { |path| " \"#{Scribo::Engine.root}#{path}\"" }.join(",\n") +
13
+ ",\n "
14
+ end
15
+ end
16
+
17
+ def add_content_application_tailwind_css
18
+ inject_into_file "app/assets/stylesheets/application.tailwind.css", before: "@tailwind base;" do
19
+ "@import '#{Scribo::Engine.root}/app/assets/stylesheets/scribo/application.css';\n"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ Scribo.setup do |config|
4
+ config.base_controller = "::UnauthenticatedController"
5
+ config.admin_authentication_module = "Auxilium::Concerns::AdminAuthenticated"
6
+
7
+ config.scribable_objects = lambda do
8
+ return [] unless Current.account
9
+
10
+ [Current.account]
11
+ end
12
+
13
+ config.scribable_for_request = lambda do |request|
14
+ Current.account
15
+ end
16
+ end