scribo 1.0.38 → 1.0.40
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.
- checksums.yaml +4 -4
- data/.github/workflows/gem-push.yml +11 -0
- data/.gitignore +12 -0
- data/.reek.yml +8 -0
- data/.rubocop.yml +44 -0
- data/.rubocop_todo.yml +129 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +31 -0
- data/Gemfile.lock +397 -0
- data/README.md +5 -9
- data/TODO.md +32 -0
- data/app/assets/config/scribo_manifest.js +4 -2
- data/app/assets/images/scribo/.keep +0 -0
- data/app/assets/images/scribo/Unknown-1.svg +2 -0
- data/app/assets/images/scribo/file.svg +4 -0
- data/app/assets/images/scribo/file_icons.svg +1 -0
- data/app/assets/images/scribo/folder-open.svg +1 -0
- data/app/assets/images/scribo/folder.svg +1 -0
- data/app/assets/images/scribo/icons/3d.svg +1 -0
- data/app/assets/images/scribo/icons/actionscript.svg +3 -0
- data/app/assets/images/scribo/icons/android.svg +1 -0
- data/app/assets/images/scribo/icons/angular-component.svg +3 -0
- data/app/assets/images/scribo/icons/angular-directive.svg +3 -0
- data/app/assets/images/scribo/icons/angular-guard.svg +3 -0
- data/app/assets/images/scribo/icons/angular-pipe.svg +3 -0
- data/app/assets/images/scribo/icons/angular-resolver.svg +3 -0
- data/app/assets/images/scribo/icons/angular-service.svg +3 -0
- data/app/assets/images/scribo/icons/angular.svg +3 -0
- data/app/assets/images/scribo/icons/apiblueprint.svg +5 -0
- data/app/assets/images/scribo/icons/applescript.svg +3 -0
- data/app/assets/images/scribo/icons/appveyor.svg +5 -0
- data/app/assets/images/scribo/icons/arduino.svg +1 -0
- data/app/assets/images/scribo/icons/asciidoc.svg +1 -0
- data/app/assets/images/scribo/icons/assembly.svg +4 -0
- data/app/assets/images/scribo/icons/audio.svg +4 -0
- data/app/assets/images/scribo/icons/aurelia.svg +107 -0
- data/app/assets/images/scribo/icons/authors.svg +1 -0
- data/app/assets/images/scribo/icons/autohotkey.svg +3 -0
- data/app/assets/images/scribo/icons/autoit.svg +21 -0
- data/app/assets/images/scribo/icons/azure-pipelines.svg +1 -0
- data/app/assets/images/scribo/icons/azure.svg +1 -0
- data/app/assets/images/scribo/icons/babel.svg +1 -0
- data/app/assets/images/scribo/icons/ballerina.svg +1 -0
- data/app/assets/images/scribo/icons/bazel.svg +1 -0
- data/app/assets/images/scribo/icons/bitbucket.svg +1 -0
- data/app/assets/images/scribo/icons/bithound.svg +1 -0
- data/app/assets/images/scribo/icons/blink.svg +4 -0
- data/app/assets/images/scribo/icons/blink_light.svg +4 -0
- data/app/assets/images/scribo/icons/bower.svg +1 -0
- data/app/assets/images/scribo/icons/browserlist.svg +6 -0
- data/app/assets/images/scribo/icons/browserlist_light.svg +7 -0
- data/app/assets/images/scribo/icons/bucklescript.svg +3 -0
- data/app/assets/images/scribo/icons/buildkite.svg +1 -0
- data/app/assets/images/scribo/icons/c.svg +1 -0
- data/app/assets/images/scribo/icons/cabal.svg +8 -0
- data/app/assets/images/scribo/icons/cake.svg +1 -0
- data/app/assets/images/scribo/icons/certificate.svg +3 -0
- data/app/assets/images/scribo/icons/changelog.svg +1 -0
- data/app/assets/images/scribo/icons/circleci.svg +14 -0
- data/app/assets/images/scribo/icons/circleci_light.svg +14 -0
- data/app/assets/images/scribo/icons/clojure.svg +1 -0
- data/app/assets/images/scribo/icons/cloudfoundry.svg +24 -0
- data/app/assets/images/scribo/icons/cmake.svg +7 -0
- data/app/assets/images/scribo/icons/code-climate.svg +4 -0
- data/app/assets/images/scribo/icons/code-climate_light.svg +4 -0
- data/app/assets/images/scribo/icons/coffee.svg +3 -0
- data/app/assets/images/scribo/icons/coldfusion.svg +7 -0
- data/app/assets/images/scribo/icons/conduct.svg +4 -0
- data/app/assets/images/scribo/icons/console.svg +3 -0
- data/app/assets/images/scribo/icons/contributing.svg +4 -0
- data/app/assets/images/scribo/icons/cpp.svg +1 -0
- data/app/assets/images/scribo/icons/credits.svg +3 -0
- data/app/assets/images/scribo/icons/crystal.svg +4 -0
- data/app/assets/images/scribo/icons/crystal_light.svg +4 -0
- data/app/assets/images/scribo/icons/csharp.svg +3 -0
- data/app/assets/images/scribo/icons/css-map.svg +1 -0
- data/app/assets/images/scribo/icons/css.svg +3 -0
- data/app/assets/images/scribo/icons/cucumber.svg +4 -0
- data/app/assets/images/scribo/icons/cuda.svg +4 -0
- data/app/assets/images/scribo/icons/d.svg +1 -0
- data/app/assets/images/scribo/icons/dart.svg +9 -0
- data/app/assets/images/scribo/icons/database.svg +1 -0
- data/app/assets/images/scribo/icons/diff.svg +1 -0
- data/app/assets/images/scribo/icons/django.svg +1 -0
- data/app/assets/images/scribo/icons/docker.svg +4 -0
- data/app/assets/images/scribo/icons/document.svg +3 -0
- data/app/assets/images/scribo/icons/dotjs.svg +8 -0
- data/app/assets/images/scribo/icons/drone.svg +6 -0
- data/app/assets/images/scribo/icons/drone_light.svg +6 -0
- data/app/assets/images/scribo/icons/edge.svg +1 -0
- data/app/assets/images/scribo/icons/editorconfig.svg +9 -0
- data/app/assets/images/scribo/icons/ejs.svg +7 -0
- data/app/assets/images/scribo/icons/elixir.svg +1 -0
- data/app/assets/images/scribo/icons/elm.svg +1 -0
- data/app/assets/images/scribo/icons/email.svg +3 -0
- data/app/assets/images/scribo/icons/erlang.svg +5 -0
- data/app/assets/images/scribo/icons/eslint.svg +3 -0
- data/app/assets/images/scribo/icons/exe.svg +3 -0
- data/app/assets/images/scribo/icons/fastlane.svg +1 -0
- data/app/assets/images/scribo/icons/favicon.svg +3 -0
- data/app/assets/images/scribo/icons/file.svg +3 -0
- data/app/assets/images/scribo/icons/firebase.svg +9 -0
- data/app/assets/images/scribo/icons/flash.svg +12 -0
- data/app/assets/images/scribo/icons/flow.svg +7 -0
- data/app/assets/images/scribo/icons/folder-android-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-android.svg +1 -0
- data/app/assets/images/scribo/icons/folder-animation-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-animation.svg +1 -0
- data/app/assets/images/scribo/icons/folder-ansible-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-ansible.svg +1 -0
- data/app/assets/images/scribo/icons/folder-api-open.svg +4 -0
- data/app/assets/images/scribo/icons/folder-api.svg +4 -0
- data/app/assets/images/scribo/icons/folder-app-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-app.svg +1 -0
- data/app/assets/images/scribo/icons/folder-archive-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-archive.svg +1 -0
- data/app/assets/images/scribo/icons/folder-audio-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-audio.svg +2 -0
- data/app/assets/images/scribo/icons/folder-aurelia-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-aurelia.svg +2 -0
- data/app/assets/images/scribo/icons/folder-aws-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-aws.svg +2 -0
- data/app/assets/images/scribo/icons/folder-batch-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-batch.svg +1 -0
- data/app/assets/images/scribo/icons/folder-benchmark-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-benchmark.svg +1 -0
- data/app/assets/images/scribo/icons/folder-bower-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-bower.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ci-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-ci.svg +1 -0
- data/app/assets/images/scribo/icons/folder-circleci-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-circleci.svg +1 -0
- data/app/assets/images/scribo/icons/folder-class-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-class.svg +1 -0
- data/app/assets/images/scribo/icons/folder-client-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-client.svg +1 -0
- data/app/assets/images/scribo/icons/folder-cluster-open.svg +8 -0
- data/app/assets/images/scribo/icons/folder-cluster.svg +8 -0
- data/app/assets/images/scribo/icons/folder-command-open.svg +4 -0
- data/app/assets/images/scribo/icons/folder-command.svg +4 -0
- data/app/assets/images/scribo/icons/folder-components-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-components.svg +2 -0
- data/app/assets/images/scribo/icons/folder-config-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-config.svg +2 -0
- data/app/assets/images/scribo/icons/folder-constant-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-constant.svg +1 -0
- data/app/assets/images/scribo/icons/folder-container-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-container.svg +1 -0
- data/app/assets/images/scribo/icons/folder-content-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-content.svg +1 -0
- data/app/assets/images/scribo/icons/folder-controller-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-controller.svg +1 -0
- data/app/assets/images/scribo/icons/folder-core-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-core.svg +1 -0
- data/app/assets/images/scribo/icons/folder-coverage-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-coverage.svg +1 -0
- data/app/assets/images/scribo/icons/folder-css-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-css.svg +2 -0
- data/app/assets/images/scribo/icons/folder-custom-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-custom.svg +1 -0
- data/app/assets/images/scribo/icons/folder-database-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-database.svg +2 -0
- data/app/assets/images/scribo/icons/folder-debug-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-debug.svg +1 -0
- data/app/assets/images/scribo/icons/folder-delta-open.svg +4 -0
- data/app/assets/images/scribo/icons/folder-delta.svg +4 -0
- data/app/assets/images/scribo/icons/folder-dist-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-dist.svg +2 -0
- data/app/assets/images/scribo/icons/folder-docker-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-docker.svg +5 -0
- data/app/assets/images/scribo/icons/folder-docs-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-docs.svg +2 -0
- data/app/assets/images/scribo/icons/folder-download-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-download.svg +1 -0
- data/app/assets/images/scribo/icons/folder-dump-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-dump.svg +1 -0
- data/app/assets/images/scribo/icons/folder-environment-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-environment.svg +1 -0
- data/app/assets/images/scribo/icons/folder-error-open.svg +7 -0
- data/app/assets/images/scribo/icons/folder-error.svg +8 -0
- data/app/assets/images/scribo/icons/folder-event-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-event.svg +1 -0
- data/app/assets/images/scribo/icons/folder-examples-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-examples.svg +1 -0
- data/app/assets/images/scribo/icons/folder-expo-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-expo.svg +4 -0
- data/app/assets/images/scribo/icons/folder-export-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-export.svg +5 -0
- data/app/assets/images/scribo/icons/folder-fastlane-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-fastlane.svg +1 -0
- data/app/assets/images/scribo/icons/folder-flow-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-flow.svg +1 -0
- data/app/assets/images/scribo/icons/folder-font-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-font.svg +1 -0
- data/app/assets/images/scribo/icons/folder-functions-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-functions.svg +1 -0
- data/app/assets/images/scribo/icons/folder-generator-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-generator.svg +1 -0
- data/app/assets/images/scribo/icons/folder-git-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-git.svg +1 -0
- data/app/assets/images/scribo/icons/folder-github-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-github.svg +2 -0
- data/app/assets/images/scribo/icons/folder-gitlab-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-gitlab.svg +2 -0
- data/app/assets/images/scribo/icons/folder-global-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-global.svg +2 -0
- data/app/assets/images/scribo/icons/folder-gradle-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-gradle.svg +2 -0
- data/app/assets/images/scribo/icons/folder-graphql-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-graphql.svg +1 -0
- data/app/assets/images/scribo/icons/folder-guard-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-guard.svg +1 -0
- data/app/assets/images/scribo/icons/folder-helper-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-helper.svg +1 -0
- data/app/assets/images/scribo/icons/folder-hook-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-hook.svg +1 -0
- data/app/assets/images/scribo/icons/folder-i18n-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-i18n.svg +2 -0
- data/app/assets/images/scribo/icons/folder-images-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-images.svg +2 -0
- data/app/assets/images/scribo/icons/folder-import-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-import.svg +1 -0
- data/app/assets/images/scribo/icons/folder-include-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-include.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ios-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-ios.svg +1 -0
- data/app/assets/images/scribo/icons/folder-javascript-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-javascript.svg +2 -0
- data/app/assets/images/scribo/icons/folder-jinja-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-jinja-open_light.svg +2 -0
- data/app/assets/images/scribo/icons/folder-jinja.svg +2 -0
- data/app/assets/images/scribo/icons/folder-jinja_light.svg +2 -0
- data/app/assets/images/scribo/icons/folder-job-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-job.svg +1 -0
- data/app/assets/images/scribo/icons/folder-keys-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-keys.svg +1 -0
- data/app/assets/images/scribo/icons/folder-kubernetes-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-kubernetes.svg +5 -0
- data/app/assets/images/scribo/icons/folder-layout-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-layout.svg +1 -0
- data/app/assets/images/scribo/icons/folder-less-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-less.svg +1 -0
- data/app/assets/images/scribo/icons/folder-lib-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-lib.svg +2 -0
- data/app/assets/images/scribo/icons/folder-log-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-log.svg +2 -0
- data/app/assets/images/scribo/icons/folder-mail-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-mail.svg +1 -0
- data/app/assets/images/scribo/icons/folder-mappings-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-mappings.svg +1 -0
- data/app/assets/images/scribo/icons/folder-markdown-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-markdown.svg +2 -0
- data/app/assets/images/scribo/icons/folder-messages-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-messages.svg +1 -0
- data/app/assets/images/scribo/icons/folder-meta-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-meta.svg +1 -0
- data/app/assets/images/scribo/icons/folder-middleware-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-middleware.svg +1 -0
- data/app/assets/images/scribo/icons/folder-mock-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-mock.svg +1 -0
- data/app/assets/images/scribo/icons/folder-ngrx-actions-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ngrx-actions.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ngrx-effects-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ngrx-effects.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ngrx-entities-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ngrx-entities.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ngrx-reducer-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ngrx-reducer.svg +2 -0
- data/app/assets/images/scribo/icons/folder-ngrx-state-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-ngrx-state.svg +1 -0
- data/app/assets/images/scribo/icons/folder-ngrx-store-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-ngrx-store.svg +1 -0
- data/app/assets/images/scribo/icons/folder-node-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-node.svg +1 -0
- data/app/assets/images/scribo/icons/folder-nuxt-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-nuxt.svg +1 -0
- data/app/assets/images/scribo/icons/folder-open.svg +11 -0
- data/app/assets/images/scribo/icons/folder-other-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-other.svg +1 -0
- data/app/assets/images/scribo/icons/folder-packages-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-packages.svg +1 -0
- data/app/assets/images/scribo/icons/folder-php-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-php.svg +2 -0
- data/app/assets/images/scribo/icons/folder-phpmailer-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-phpmailer.svg +2 -0
- data/app/assets/images/scribo/icons/folder-pipe-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-pipe.svg +1 -0
- data/app/assets/images/scribo/icons/folder-plugin-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-plugin.svg +1 -0
- data/app/assets/images/scribo/icons/folder-prisma-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-prisma.svg +1 -0
- data/app/assets/images/scribo/icons/folder-private-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-private.svg +1 -0
- data/app/assets/images/scribo/icons/folder-public-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-public.svg +2 -0
- data/app/assets/images/scribo/icons/folder-python-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-python.svg +1 -0
- data/app/assets/images/scribo/icons/folder-react-components-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-react-components.svg +2 -0
- data/app/assets/images/scribo/icons/folder-redux-actions-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-redux-actions.svg +1 -0
- data/app/assets/images/scribo/icons/folder-redux-reducer-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-redux-reducer.svg +2 -0
- data/app/assets/images/scribo/icons/folder-redux-store-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-redux-store.svg +2 -0
- data/app/assets/images/scribo/icons/folder-resource-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-resource.svg +2 -0
- data/app/assets/images/scribo/icons/folder-review-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-review.svg +1 -0
- data/app/assets/images/scribo/icons/folder-routes-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-routes.svg +1 -0
- data/app/assets/images/scribo/icons/folder-rules-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-rules.svg +1 -0
- data/app/assets/images/scribo/icons/folder-sass-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-sass.svg +1 -0
- data/app/assets/images/scribo/icons/folder-scripts-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-scripts.svg +2 -0
- data/app/assets/images/scribo/icons/folder-secure-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-secure.svg +1 -0
- data/app/assets/images/scribo/icons/folder-server-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-server.svg +1 -0
- data/app/assets/images/scribo/icons/folder-serverless-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-serverless.svg +1 -0
- data/app/assets/images/scribo/icons/folder-shared-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-shared.svg +1 -0
- data/app/assets/images/scribo/icons/folder-src-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-src.svg +2 -0
- data/app/assets/images/scribo/icons/folder-stack-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-stack.svg +1 -0
- data/app/assets/images/scribo/icons/folder-stylus-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-stylus.svg +1 -0
- data/app/assets/images/scribo/icons/folder-sublime-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-sublime.svg +2 -0
- data/app/assets/images/scribo/icons/folder-svg-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-svg.svg +1 -0
- data/app/assets/images/scribo/icons/folder-syntax-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-syntax.svg +1 -0
- data/app/assets/images/scribo/icons/folder-tasks-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-tasks.svg +1 -0
- data/app/assets/images/scribo/icons/folder-temp-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-temp.svg +2 -0
- data/app/assets/images/scribo/icons/folder-template-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-template.svg +1 -0
- data/app/assets/images/scribo/icons/folder-test-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-test.svg +1 -0
- data/app/assets/images/scribo/icons/folder-theme-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-theme.svg +2 -0
- data/app/assets/images/scribo/icons/folder-tools-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-tools.svg +1 -0
- data/app/assets/images/scribo/icons/folder-typescript-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-typescript.svg +1 -0
- data/app/assets/images/scribo/icons/folder-upload-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-upload.svg +1 -0
- data/app/assets/images/scribo/icons/folder-utils-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-utils.svg +1 -0
- data/app/assets/images/scribo/icons/folder-video-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-video.svg +2 -0
- data/app/assets/images/scribo/icons/folder-views-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-views.svg +1 -0
- data/app/assets/images/scribo/icons/folder-vm-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-vm.svg +1 -0
- data/app/assets/images/scribo/icons/folder-vscode-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-vscode.svg +2 -0
- data/app/assets/images/scribo/icons/folder-vue-directives-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-vue-directives.svg +1 -0
- data/app/assets/images/scribo/icons/folder-vue-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-vue.svg +1 -0
- data/app/assets/images/scribo/icons/folder-vuex-store-open.svg +1 -0
- data/app/assets/images/scribo/icons/folder-vuex-store.svg +1 -0
- data/app/assets/images/scribo/icons/folder-wakatime-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-wakatime.svg +2 -0
- data/app/assets/images/scribo/icons/folder-webpack-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-webpack.svg +2 -0
- data/app/assets/images/scribo/icons/folder-wordpress-open.svg +2 -0
- data/app/assets/images/scribo/icons/folder-wordpress.svg +1 -0
- data/app/assets/images/scribo/icons/folder.svg +11 -0
- data/app/assets/images/scribo/icons/font.svg +3 -0
- data/app/assets/images/scribo/icons/foxpro.svg +1 -0
- data/app/assets/images/scribo/icons/fsharp.svg +7 -0
- data/app/assets/images/scribo/icons/fusebox.svg +20 -0
- data/app/assets/images/scribo/icons/gatsby.svg +5 -0
- data/app/assets/images/scribo/icons/gemfile.svg +1 -0
- data/app/assets/images/scribo/icons/git.svg +4 -0
- data/app/assets/images/scribo/icons/gitlab.svg +43 -0
- data/app/assets/images/scribo/icons/gitpod.svg +1 -0
- data/app/assets/images/scribo/icons/go-mod.svg +8 -0
- data/app/assets/images/scribo/icons/go.svg +8 -0
- data/app/assets/images/scribo/icons/go_gopher.svg +25 -0
- data/app/assets/images/scribo/icons/godot-assets.svg +1 -0
- data/app/assets/images/scribo/icons/godot.svg +1 -0
- data/app/assets/images/scribo/icons/gradle.svg +3 -0
- data/app/assets/images/scribo/icons/graphcool.svg +6 -0
- data/app/assets/images/scribo/icons/graphql.svg +11 -0
- data/app/assets/images/scribo/icons/groovy.svg +3 -0
- data/app/assets/images/scribo/icons/grunt.svg +1 -0
- data/app/assets/images/scribo/icons/gulp.svg +3 -0
- data/app/assets/images/scribo/icons/h.svg +6 -0
- data/app/assets/images/scribo/icons/hack.svg +2 -0
- data/app/assets/images/scribo/icons/haml.svg +5 -0
- data/app/assets/images/scribo/icons/handlebars.svg +3 -0
- data/app/assets/images/scribo/icons/haskell.svg +8 -0
- data/app/assets/images/scribo/icons/haxe.svg +17 -0
- data/app/assets/images/scribo/icons/hcl.svg +1 -0
- data/app/assets/images/scribo/icons/hcl_light.svg +1 -0
- data/app/assets/images/scribo/icons/helm.svg +1 -0
- data/app/assets/images/scribo/icons/heroku.svg +1 -0
- data/app/assets/images/scribo/icons/hpp.svg +7 -0
- data/app/assets/images/scribo/icons/html.svg +3 -0
- data/app/assets/images/scribo/icons/http.svg +3 -0
- data/app/assets/images/scribo/icons/i18n.svg +1 -0
- data/app/assets/images/scribo/icons/image.svg +3 -0
- data/app/assets/images/scribo/icons/ionic.svg +1 -0
- data/app/assets/images/scribo/icons/istanbul.svg +1 -0
- data/app/assets/images/scribo/icons/java.svg +3 -0
- data/app/assets/images/scribo/icons/javascript-map.svg +6 -0
- data/app/assets/images/scribo/icons/javascript.svg +3 -0
- data/app/assets/images/scribo/icons/jenkins.svg +1 -0
- data/app/assets/images/scribo/icons/jest.svg +1 -0
- data/app/assets/images/scribo/icons/jinja.svg +17 -0
- data/app/assets/images/scribo/icons/jinja_light.svg +17 -0
- data/app/assets/images/scribo/icons/json.svg +1 -0
- data/app/assets/images/scribo/icons/julia.svg +9 -0
- data/app/assets/images/scribo/icons/jupyter.svg +1 -0
- data/app/assets/images/scribo/icons/karma.svg +8 -0
- data/app/assets/images/scribo/icons/key.svg +3 -0
- data/app/assets/images/scribo/icons/kivy.svg +9 -0
- data/app/assets/images/scribo/icons/kl.svg +8 -0
- data/app/assets/images/scribo/icons/kotlin.svg +14 -0
- data/app/assets/images/scribo/icons/laravel.svg +5 -0
- data/app/assets/images/scribo/icons/less.svg +1 -0
- data/app/assets/images/scribo/icons/lib.svg +3 -0
- data/app/assets/images/scribo/icons/livescript.svg +18 -0
- data/app/assets/images/scribo/icons/lock.svg +3 -0
- data/app/assets/images/scribo/icons/log.svg +4 -0
- data/app/assets/images/scribo/icons/lua.svg +7 -0
- data/app/assets/images/scribo/icons/makefile.svg +1 -0
- data/app/assets/images/scribo/icons/markdown.svg +3 -0
- data/app/assets/images/scribo/icons/markojs.svg +12 -0
- data/app/assets/images/scribo/icons/mathematica.svg +3 -0
- data/app/assets/images/scribo/icons/matlab.svg +8 -0
- data/app/assets/images/scribo/icons/mdx.svg +1 -0
- data/app/assets/images/scribo/icons/merlin.svg +5 -0
- data/app/assets/images/scribo/icons/mint.svg +1 -0
- data/app/assets/images/scribo/icons/mjml.svg +4 -0
- data/app/assets/images/scribo/icons/mocha.svg +2 -0
- data/app/assets/images/scribo/icons/moonscript.svg +1 -0
- data/app/assets/images/scribo/icons/mxml.svg +3 -0
- data/app/assets/images/scribo/icons/nest-controller.svg +8 -0
- data/app/assets/images/scribo/icons/nest-decorator.svg +8 -0
- data/app/assets/images/scribo/icons/nest-filter.svg +8 -0
- data/app/assets/images/scribo/icons/nest-gateway.svg +8 -0
- data/app/assets/images/scribo/icons/nest-guard.svg +8 -0
- data/app/assets/images/scribo/icons/nest-middleware.svg +8 -0
- data/app/assets/images/scribo/icons/nest-module.svg +8 -0
- data/app/assets/images/scribo/icons/nest-pipe.svg +8 -0
- data/app/assets/images/scribo/icons/nest-service.svg +8 -0
- data/app/assets/images/scribo/icons/nest.svg +8 -0
- data/app/assets/images/scribo/icons/netlify.svg +1 -0
- data/app/assets/images/scribo/icons/ngrx-actions.svg +4 -0
- data/app/assets/images/scribo/icons/ngrx-effects.svg +4 -0
- data/app/assets/images/scribo/icons/ngrx-entity.svg +4 -0
- data/app/assets/images/scribo/icons/ngrx-reducer.svg +4 -0
- data/app/assets/images/scribo/icons/ngrx-state.svg +4 -0
- data/app/assets/images/scribo/icons/nim.svg +1 -0
- data/app/assets/images/scribo/icons/nix.svg +6 -0
- data/app/assets/images/scribo/icons/nodejs.svg +3 -0
- data/app/assets/images/scribo/icons/nodejs_alt.svg +1 -0
- data/app/assets/images/scribo/icons/nodemon.svg +7 -0
- data/app/assets/images/scribo/icons/now.svg +1 -0
- data/app/assets/images/scribo/icons/now_light.svg +1 -0
- data/app/assets/images/scribo/icons/npm.svg +8 -0
- data/app/assets/images/scribo/icons/nunjucks.svg +3 -0
- data/app/assets/images/scribo/icons/nuxt.svg +1 -0
- data/app/assets/images/scribo/icons/ocaml.svg +1 -0
- data/app/assets/images/scribo/icons/pdf.svg +1 -0
- data/app/assets/images/scribo/icons/percy.svg +1 -0
- data/app/assets/images/scribo/icons/perl.svg +3 -0
- data/app/assets/images/scribo/icons/php.svg +1 -0
- data/app/assets/images/scribo/icons/php_elephant.svg +4 -0
- data/app/assets/images/scribo/icons/postcss.svg +9 -0
- data/app/assets/images/scribo/icons/powerpoint.svg +3 -0
- data/app/assets/images/scribo/icons/powershell.svg +1 -0
- data/app/assets/images/scribo/icons/prettier.svg +35 -0
- data/app/assets/images/scribo/icons/prisma.svg +1 -0
- data/app/assets/images/scribo/icons/processing.svg +5 -0
- data/app/assets/images/scribo/icons/processing_light.svg +5 -0
- data/app/assets/images/scribo/icons/protractor.svg +1 -0
- data/app/assets/images/scribo/icons/pug.svg +22 -0
- data/app/assets/images/scribo/icons/puppet.svg +13 -0
- data/app/assets/images/scribo/icons/purescript.svg +1 -0
- data/app/assets/images/scribo/icons/python-misc.svg +1 -0
- data/app/assets/images/scribo/icons/python.svg +8 -0
- data/app/assets/images/scribo/icons/r.svg +4 -0
- data/app/assets/images/scribo/icons/racket.svg +1 -0
- data/app/assets/images/scribo/icons/raml.svg +1 -0
- data/app/assets/images/scribo/icons/razor.svg +1 -0
- data/app/assets/images/scribo/icons/react.svg +3 -0
- data/app/assets/images/scribo/icons/react_ts.svg +1 -0
- data/app/assets/images/scribo/icons/readme.svg +3 -0
- data/app/assets/images/scribo/icons/reason.svg +3 -0
- data/app/assets/images/scribo/icons/red.svg +8 -0
- data/app/assets/images/scribo/icons/redux-action.svg +1 -0
- data/app/assets/images/scribo/icons/redux-reducer.svg +1 -0
- data/app/assets/images/scribo/icons/redux-store.svg +1 -0
- data/app/assets/images/scribo/icons/restql.svg +60 -0
- data/app/assets/images/scribo/icons/riot.svg +1 -0
- data/app/assets/images/scribo/icons/robot.svg +1 -0
- data/app/assets/images/scribo/icons/rollup.svg +50 -0
- data/app/assets/images/scribo/icons/routing.svg +3 -0
- data/app/assets/images/scribo/icons/ruby.svg +3 -0
- data/app/assets/images/scribo/icons/rust.svg +3 -0
- data/app/assets/images/scribo/icons/san.svg +1 -0
- data/app/assets/images/scribo/icons/sass.svg +1 -0
- data/app/assets/images/scribo/icons/sbt.svg +6 -0
- data/app/assets/images/scribo/icons/scala.svg +1 -0
- data/app/assets/images/scribo/icons/scheme.svg +1 -0
- data/app/assets/images/scribo/icons/semantic-release.svg +1 -0
- data/app/assets/images/scribo/icons/semantic-release_light.svg +1 -0
- data/app/assets/images/scribo/icons/sequelize.svg +31 -0
- data/app/assets/images/scribo/icons/settings.svg +3 -0
- data/app/assets/images/scribo/icons/shaderlab.svg +3 -0
- data/app/assets/images/scribo/icons/silverstripe.svg +1 -0
- data/app/assets/images/scribo/icons/slim.svg +4 -0
- data/app/assets/images/scribo/icons/smarty.svg +3 -0
- data/app/assets/images/scribo/icons/snyk.svg +23 -0
- data/app/assets/images/scribo/icons/solidity.svg +7 -0
- data/app/assets/images/scribo/icons/stencil.svg +1 -0
- data/app/assets/images/scribo/icons/stencil_light.svg +1 -0
- data/app/assets/images/scribo/icons/storybook.svg +1 -0
- data/app/assets/images/scribo/icons/stylelint.svg +12 -0
- data/app/assets/images/scribo/icons/stylelint_light.svg +12 -0
- data/app/assets/images/scribo/icons/stylus.svg +1 -0
- data/app/assets/images/scribo/icons/sublime.svg +1 -0
- data/app/assets/images/scribo/icons/svelte.svg +1 -0
- data/app/assets/images/scribo/icons/svg.svg +1 -0
- data/app/assets/images/scribo/icons/swc.svg +12 -0
- data/app/assets/images/scribo/icons/swift.svg +1 -0
- data/app/assets/images/scribo/icons/table.svg +3 -0
- data/app/assets/images/scribo/icons/tailwindcss.svg +1 -0
- data/app/assets/images/scribo/icons/terraform.svg +12 -0
- data/app/assets/images/scribo/icons/test-js.svg +1 -0
- data/app/assets/images/scribo/icons/test-jsx.svg +4 -0
- data/app/assets/images/scribo/icons/test-ts.svg +1 -0
- data/app/assets/images/scribo/icons/tex.svg +1 -0
- data/app/assets/images/scribo/icons/todo.svg +1 -0
- data/app/assets/images/scribo/icons/travis.svg +13 -0
- data/app/assets/images/scribo/icons/tune.svg +7 -0
- data/app/assets/images/scribo/icons/twig.svg +3 -0
- data/app/assets/images/scribo/icons/typescript-def.svg +6 -0
- data/app/assets/images/scribo/icons/typescript.svg +3 -0
- data/app/assets/images/scribo/icons/url.svg +3 -0
- data/app/assets/images/scribo/icons/vagrant.svg +1 -0
- data/app/assets/images/scribo/icons/velocity.svg +1 -0
- data/app/assets/images/scribo/icons/verilog.svg +3 -0
- data/app/assets/images/scribo/icons/vfl.svg +16 -0
- data/app/assets/images/scribo/icons/video.svg +4 -0
- data/app/assets/images/scribo/icons/vim.svg +1 -0
- data/app/assets/images/scribo/icons/virtual.svg +1 -0
- data/app/assets/images/scribo/icons/visualstudio.svg +4 -0
- data/app/assets/images/scribo/icons/vscode.svg +9 -0
- data/app/assets/images/scribo/icons/vue-config.svg +1 -0
- data/app/assets/images/scribo/icons/vue.svg +1 -0
- data/app/assets/images/scribo/icons/vuex-store.svg +1 -0
- data/app/assets/images/scribo/icons/wakatime.svg +21 -0
- data/app/assets/images/scribo/icons/wakatime_light.svg +21 -0
- data/app/assets/images/scribo/icons/wallaby.svg +1 -0
- data/app/assets/images/scribo/icons/watchman.svg +4 -0
- data/app/assets/images/scribo/icons/webassembly.svg +1 -0
- data/app/assets/images/scribo/icons/webhint.svg +5 -0
- data/app/assets/images/scribo/icons/webpack.svg +6 -0
- data/app/assets/images/scribo/icons/wepy.svg +1 -0
- data/app/assets/images/scribo/icons/wolframlanguage.svg +13 -0
- data/app/assets/images/scribo/icons/word.svg +3 -0
- data/app/assets/images/scribo/icons/xaml.svg +3 -0
- data/app/assets/images/scribo/icons/xml.svg +4 -0
- data/app/assets/images/scribo/icons/yaml.svg +1 -0
- data/app/assets/images/scribo/icons/yang.svg +1 -0
- data/app/assets/images/scribo/icons/yarn.svg +3 -0
- data/app/assets/images/scribo/icons/zip.svg +3 -0
- data/app/assets/stylesheets/scribo/application.css +108 -0
- data/app/assets/stylesheets/scribo/components/file-icons.css +158 -0
- data/app/assets/stylesheets/scribo/components/open-editors.css +83 -0
- data/app/assets/stylesheets/scribo/components/tree-view.css +312 -0
- data/app/javascript/scribo/application.js +2 -0
- data/app/javascript/scribo/controllers/application.js +12 -0
- data/app/javascript/scribo/controllers/image_editor_controller.js +72 -0
- data/app/javascript/scribo/controllers/index.js +4 -0
- data/app/javascript/scribo/controllers/open_editors_controller.js +291 -0
- data/app/javascript/scribo/controllers/text_editor_controller.js +39 -0
- data/app/javascript/scribo/controllers/tree_view_controller.js +378 -0
- data/app/javascript/scribo/controllers/upload_controller.js +81 -0
- data/app/views/scribo/admin/sites/contents/_form.html.slim +11 -12
- data/app/views/scribo/shared/_ide.html.slim +1 -1
- data/app/views/scribo/shared/_tree-view.html.slim +3 -3
- data/bin/importmap +4 -0
- data/bin/rails +14 -0
- data/bin/rake +29 -0
- data/bin/rubocop +29 -0
- data/cli/.gitignore +2 -0
- data/cli/scribo.cr +103 -0
- data/cli/shard.lock +6 -0
- data/cli/shard.yml +18 -0
- data/config/importmap.rb +8 -0
- data/docs/content.md +33 -0
- data/docs/editor.png +0 -0
- data/docs/features.md +71 -0
- data/docs/ide.md +17 -0
- data/docs/import_export.md +7 -0
- data/docs/liquid.md +59 -0
- data/favicon.ico +0 -0
- data/frontend/images/.DS_Store +0 -0
- data/icon.png +0 -0
- data/lib/generators/scribo/install_generator.rb +22 -0
- data/lib/generators/scribo/tailwind_config_generator.rb +24 -0
- data/lib/generators/scribo/templates/config/initializers/scribo.rb +16 -0
- data/lib/scribo/engine.rb +19 -8
- data/lib/scribo/version.rb +1 -1
- data/lib/tasks/scribo_tasks.rake +13 -0
- data/logo.svg +1 -0
- data/scribo.gemspec +54 -0
- data/vendor/javascript/@hotwired--stimulus.js +2 -0
- data/vendor/javascript/painterro.js +2 -0
- data/vendor/javascript/sortablejs.js +134 -0
- data/yarn.lock +6775 -0
- metadata +683 -15
- data/app/assets/javascripts/scribo/scribo.js +0 -1
- data/app/assets/stylesheets/scribo/scribo.css +0 -1
- 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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
9
|
-
|
|
8
|
+
font-family: 'MyWebFont';
|
|
9
|
+
src: url(#{ "#{content_path(@content)}" }); /* IE9 Compat Modes */
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
13
|
-
i.
|
|
14
|
-
i.
|
|
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
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
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
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
|
data/config/importmap.rb
ADDED
|
@@ -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
|