lexxy-variables 0.0.3 → 0.0.5
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/README.md +176 -38
- data/lib/lexxy_variables/configuration.rb +1 -3
- data/lib/lexxy_variables/helper.rb +4 -6
- data/lib/lexxy_variables/renderers/liquid.rb +8 -12
- data/lib/lexxy_variables/renderers/substitution.rb +6 -8
- data/lib/lexxy_variables/{pipeline.rb → resolver.rb} +31 -24
- data/lib/lexxy_variables/version.rb +1 -1
- data/lib/lexxy_variables/with_variables.rb +31 -0
- data/lib/lexxy_variables.rb +4 -4
- data/vendor/bundle/ruby/3.4.0/cache/concurrent-ruby-1.3.8.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/erb-6.0.5.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/lexxy-0.9.25.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/loofah-2.25.2.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/parser-3.3.12.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rails-html-sanitizer-1.7.1.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{erb-6.0.4 → erb-6.0.5}/erb/escape.so +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-6.0.5/gem_make.out +19 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{lexxy-0.9.24 → lexxy-0.9.25}/gem_make.out +2 -2
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/CHANGELOG.md +6 -0
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concurrent_ruby.jar +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/constants.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/promises.rb +8 -2
- data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/erb-6.0.5/Gemfile +16 -0
- data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/NEWS.md +17 -1
- data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/escape.so +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb.rb +11 -3
- data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/javascript/lexxy.js +66 -9
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.js.br +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.js.gz +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.js.map +1 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.min.js +11 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.min.js.br +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/app/assets/javascript/lexxy.min.js.gz +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/lib/lexxy/version.rb +3 -0
- data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/CHANGELOG.md +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/safelist.rb +6 -2
- data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/scrub.rb +86 -13
- data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/CHANGELOG.md +15 -0
- data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/lib/rails/html/sanitizer/version.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/lib/rails/html/scrubbers.rb +1 -1
- data/vendor/bundle/ruby/3.4.0/specifications/{concurrent-ruby-1.3.7.gemspec → concurrent-ruby-1.3.8.gemspec} +3 -3
- data/vendor/bundle/ruby/3.4.0/specifications/{erb-6.0.4.gemspec → erb-6.0.5.gemspec} +3 -3
- data/vendor/bundle/ruby/3.4.0/specifications/{lexxy-0.9.24.gemspec → lexxy-0.9.25.gemspec} +2 -2
- data/vendor/bundle/ruby/3.4.0/specifications/{loofah-2.25.1.gemspec → loofah-2.25.2.gemspec} +3 -3
- data/vendor/bundle/ruby/3.4.0/specifications/{parser-3.3.11.1.gemspec → parser-3.3.12.0.gemspec} +4 -4
- data/vendor/bundle/ruby/3.4.0/specifications/{rails-html-sanitizer-1.7.0.gemspec → rails-html-sanitizer-1.7.1.gemspec} +5 -5
- metadata +325 -327
- data/vendor/bundle/ruby/3.4.0/cache/concurrent-ruby-1.3.7.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/erb-6.0.4.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/lexxy-0.9.24.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/loofah-2.25.1.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/parser-3.3.11.1.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/cache/rails-html-sanitizer-1.7.0.gem +0 -0
- data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/erb-6.0.4/gem_make.out +0 -19
- data/vendor/bundle/ruby/3.4.0/gems/erb-6.0.4/Gemfile +0 -11
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.js.br +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.js.gz +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.js.map +0 -1
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.min.js +0 -11
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.min.js.br +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/app/assets/javascript/lexxy.min.js.gz +0 -0
- data/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.24/lib/lexxy/version.rb +0 -3
- data/vendor/bundle/ruby/3.4.0/gems/rails-html-sanitizer-1.7.0/test/rails_api_test.rb +0 -101
- data/vendor/bundle/ruby/3.4.0/gems/rails-html-sanitizer-1.7.0/test/sanitizer_test.rb +0 -1284
- data/vendor/bundle/ruby/3.4.0/gems/rails-html-sanitizer-1.7.0/test/scrubbers_test.rb +0 -294
- data/vendor/bundle/ruby/3.4.0/gems/rails-html-sanitizer-1.7.0/test/test_helper.rb +0 -7
- /data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{erb-6.0.4 → erb-6.0.5}/gem.build_complete +0 -0
- /data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{erb-6.0.4 → erb-6.0.5}/mkmf.log +0 -0
- /data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{lexxy-0.9.24 → lexxy-0.9.25}/gem.build_complete +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/Gemfile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/Rakefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/ConcurrentRubyService.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/AtomicReferenceLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/JRubyMapBackendLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicBooleanLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaAtomicFixnumLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/JavaSemaphoreLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/SynchronizationLibrary.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMap.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/ConcurrentHashMapV8.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/LongAdder.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/Striped64.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/ConcurrentHashMapV8.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/LongAdder.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166e/nounsafe/Striped64.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/ext/concurrent-ruby/com/concurrent_ruby/ext/jsr166y/ThreadLocalRandom.java +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/agent.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/array.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/async.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atom.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/atomic_boolean.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/atomic_fixnum.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/atomic_markable_reference.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/atomic_reference.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/count_down_latch.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/cyclic_barrier.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/event.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/fiber_local_var.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/java_count_down_latch.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/locals.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/lock_local_var.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_boolean.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/mutex_atomic_fixnum.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/mutex_count_down_latch.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/mutex_semaphore.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/read_write_lock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/reentrant_read_write_lock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/semaphore.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic/thread_local_var.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic_reference/atomic_direct_update.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic_reference/mutex_atomic.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomic_reference/numeric_cas_wrapper.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/atomics.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/copy_on_notify_observer_set.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/copy_on_write_observer_set.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/java_non_concurrent_priority_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/lock_free_stack.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/map/mri_map_backend.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/map/non_concurrent_map_backend.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/map/synchronized_map_backend.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/map/truffleruby_map_backend.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/non_concurrent_priority_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/ruby_non_concurrent_priority_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/ruby_timeout_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/collection/timeout_queue.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/deprecation.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/dereferenceable.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/logging.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/obligation.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/concern/observable.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/configuration.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/dataflow.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/delay.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/errors.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/exchanger.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/abstract_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/cached_thread_pool.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/fixed_thread_pool.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/immediate_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/indirect_immediate_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/java_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/java_single_thread_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/java_thread_pool_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/ruby_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/ruby_single_thread_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/safe_task_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/serial_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/serialized_execution.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/serialized_execution_delegator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/simple_executor_service.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/single_thread_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/thread_pool_executor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executor/timer_set.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/executors.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/future.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/hash.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/immutable_struct.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/ivar.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/map.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/maybe.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/mutable_struct.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/mvar.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/options.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/promise.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/re_include.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/scheduled_task.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/set.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/settable_struct.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/abstract_lockable_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/abstract_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/abstract_struct.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/condition.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/full_memory_barrier.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/jruby_lockable_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/lock.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/lockable_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/mutex_lockable_object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/object.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/safe_initialization.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization/volatile.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/synchronization.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/synchronized_delegator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/adder.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/data_structures.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/power_of_two_tuple.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/striped64.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/volatile.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util/xor_shift_random.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/thread_safe/util.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/timer_task.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/tuple.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/tvar.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/engine.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/monotonic_time.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/native_extension_loader.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/native_integer.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent/utility/processor_counter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent-ruby.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{concurrent-ruby-1.3.7 → concurrent-ruby-1.3.8}/lib/concurrent-ruby/concurrent.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/BSDL +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/COPYING +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/Rakefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/_doc/cgi.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/_doc/erb_executable.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/bin/console +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/bin/setup +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/erb.gemspec +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/ext/erb/escape/Makefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/ext/erb/escape/escape.c +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/ext/erb/escape/extconf.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/compiler.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/def_method.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/lib/erb/util.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{erb-6.0.4 → erb-6.0.5}/libexec/erb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/Rakefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/stylesheets/lexxy-content.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/stylesheets/lexxy-editor.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/stylesheets/lexxy-variables.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/assets/stylesheets/lexxy.css +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/app/views/action_text/attachables/_remote_video.html.erb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/config/ci.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/ext/Rakefile +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/action_text/attachables/remote_video.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/action_text/editor/lexxy_editor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/active_storage/blob_with_preview_url.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/action_text_tag.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/attachable.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/engine.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/form_builder.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/form_helper.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy/rich_text_area_tag.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/lexxy.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{lexxy-0.9.24 → lexxy-0.9.25}/lib/tasks/actiontext/lexical_tasks.rake +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/MIT-LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/SECURITY.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/concerns.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/elements.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/helpers.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html4/document.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html4/document_fragment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/document.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/document_fragment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/html5/libxml2_workarounds.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/metahelpers.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/scrubber.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/scrubbers.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/xml/document.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah/xml/document_fragment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{loofah-2.25.1 → loofah-2.25.2}/lib/loofah.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/LICENSE.txt +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-parse +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/bin/ruby-rewrite +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/gauntlet_parser.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/all.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/node.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ast/processor.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/base.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/builders/default.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/clobbering_error.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/color.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/context.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/current_arg_stack.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/deprecation.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic/engine.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/diagnostic.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/dedenter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/explanation.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/literal.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer/stack_state.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F0.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-F1.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/lexer-strings.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/macruby.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/max_numparam_stack.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/messages.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/meta.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rewriter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby18.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby19.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby20.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby21.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby22.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby23.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby24.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby25.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby26.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby27.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby30.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby31.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby32.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby33.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/ruby34.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/rubymotion.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_parse.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner/ruby_rewrite.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/runner.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/buffer.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment/associator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/comment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/collection.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/condition.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/constant.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/definition.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/for.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/heredoc.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/index.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/keyword.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/method_definition.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/objc_kwarg.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/operator.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/rescue_body.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/send.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/ternary.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map/variable.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/map.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/range.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter/action.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/rewriter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter/action.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/source/tree_rewriter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/static_environment.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/syntax_error.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/tree_rewriter.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/unknown_encoding_in_magic_comment_error.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser/variables_stack.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/lib/parser.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{parser-3.3.11.1 → parser-3.3.12.0}/parser.gemspec +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/MIT-LICENSE +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/README.md +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/lib/rails/html/sanitizer.rb +0 -0
- /data/vendor/bundle/ruby/3.4.0/gems/{rails-html-sanitizer-1.7.0 → rails-html-sanitizer-1.7.1}/lib/rails-html-sanitizer.rb +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a109be7d8f0e268e60ce7fbaa71cf752d492f6d08f04300b52418016a54c7fdf
|
|
4
|
+
data.tar.gz: a84a11352b3b3d9701719e66428574c8693e05e36a8fff2f3d140022076ee930
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2ccc7224904bf969b37d41449bbd8efd42654a345483242ca3dc898e278a2de8c641735db757815d7ba79482b9c85f670e43d14d1c64e5493539bd7b8ff8617c
|
|
7
|
+
data.tar.gz: 74066919264113eb0370da5d0e740a05cecfb5ffd6036fedf0e448115e8dbaa4b856dfdc2a5ca7b1cbeaaf270bf5d7c1c74bb49df4d768aba55bebb23b332d05
|
data/README.md
CHANGED
|
@@ -9,9 +9,9 @@ an `<action-text-attachment>` chip with its own content type, not as literal
|
|
|
9
9
|
You decide what variables exist and what they turn into.
|
|
10
10
|
|
|
11
11
|
Because variables are just Action Text attachments, you can register new
|
|
12
|
-
chip types with `register_attachment` (see [Full configuration](#full-configuration))
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
chip types with `register_attachment` (see [Full configuration](#full-configuration)).
|
|
13
|
+
A `:text` chip resolves to an escaped string. An `:html` chip splices rich
|
|
14
|
+
content in before sanitization.
|
|
15
15
|
|
|
16
16
|
Liquid is **optional**. The default renderer is plain, injection-safe string
|
|
17
17
|
substitution and pulls in no template engine.
|
|
@@ -44,8 +44,8 @@ in your entrypoint:
|
|
|
44
44
|
|
|
45
45
|
```js
|
|
46
46
|
// app/javascript/application.js
|
|
47
|
+
import * as Lexxy from "lexxy"
|
|
47
48
|
import VariableExtension from "lexxy-variables"
|
|
48
|
-
import * as Lexxy from "@37signals/lexxy"
|
|
49
49
|
|
|
50
50
|
Lexxy.configure({ global: { extensions: [ VariableExtension ] } })
|
|
51
51
|
```
|
|
@@ -54,16 +54,25 @@ Lexxy.configure({ global: { extensions: [ VariableExtension ] } })
|
|
|
54
54
|
npm package. Install it alongside Lexxy:
|
|
55
55
|
|
|
56
56
|
```sh
|
|
57
|
-
yarn add
|
|
57
|
+
yarn add @37signals/lexxy lexxy-variables
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
and register the extension
|
|
60
|
+
and register the extension in your JavaScript.
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
// app/javascript/application.js
|
|
64
|
+
import * as Lexxy from "@37signals/lexxy"
|
|
65
|
+
import VariableExtension from "lexxy-variables"
|
|
66
|
+
|
|
67
|
+
Lexxy.configure({ global: { extensions: [ VariableExtension ] } })
|
|
68
|
+
```
|
|
61
69
|
|
|
62
70
|
## Minimal configuration
|
|
63
71
|
|
|
64
72
|
`catalog` is the list users pick from in the editor. `assigns` is the lookup that
|
|
65
73
|
turns a key into a value at render time. `catalog` is required and `assigns` is
|
|
66
|
-
optional. Leave it out and the gem reads `value` straight off the catalog item
|
|
74
|
+
optional. Leave it out and the gem reads `value` straight off the catalog item,
|
|
75
|
+
or supply values per render (see [Examples](#examples)).
|
|
67
76
|
|
|
68
77
|
Put the `configure` block in an initializer, e.g. `config/initializers/lexxy_variables.rb`:
|
|
69
78
|
|
|
@@ -73,9 +82,6 @@ LexxyVariables.configure do |c|
|
|
|
73
82
|
end
|
|
74
83
|
```
|
|
75
84
|
|
|
76
|
-
The gem adds two view helpers, one for each side of the workflow: one to author
|
|
77
|
-
content and one to display it.
|
|
78
|
-
|
|
79
85
|
On the **editor page** (the form where content is composed), render the prompt
|
|
80
86
|
*inside* the Lexxy editor. The editor extension looks for the `<lexxy-prompt>`
|
|
81
87
|
within the `<lexxy-editor>` element, so it must be nested in the `rich_text_area`
|
|
@@ -98,10 +104,11 @@ for picking from the same list. Inserted variables appear as chips in the editor
|
|
|
98
104
|
</p>
|
|
99
105
|
|
|
100
106
|
On the **display page** (where the saved content is shown to readers), resolve
|
|
101
|
-
the stored rich text
|
|
107
|
+
the stored rich text with `with_variables`. This is what swaps each variable
|
|
108
|
+
chip for its value:
|
|
102
109
|
|
|
103
110
|
```erb
|
|
104
|
-
<%=
|
|
111
|
+
<%= @record.body.with_variables %>
|
|
105
112
|
```
|
|
106
113
|
|
|
107
114
|
Each chip resolves to its value, so the reader sees finished text:
|
|
@@ -113,15 +120,149 @@ Each chip resolves to its value, so the reader sees finished text:
|
|
|
113
120
|
`@record` and `:body` are placeholders. Use whatever model and Action Text
|
|
114
121
|
attribute hold your content.
|
|
115
122
|
|
|
123
|
+
## Examples
|
|
124
|
+
|
|
125
|
+
### Simple replacement from a model
|
|
126
|
+
|
|
127
|
+
First and last name variables, with the values supplied at render time. No Liquid needed. The `catalog` lists the two variables so they appear in the editor:
|
|
128
|
+
|
|
129
|
+
```ruby
|
|
130
|
+
# config/initializers/lexxy_variables.rb
|
|
131
|
+
LexxyVariables.configure do |c|
|
|
132
|
+
c.catalog = [
|
|
133
|
+
{ key: "first_name", name: "First name" },
|
|
134
|
+
{ key: "last_name", name: "Last name" }
|
|
135
|
+
]
|
|
136
|
+
end
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Editor page:
|
|
140
|
+
|
|
141
|
+
```erb
|
|
142
|
+
<%= form_with model: @message do |form| %>
|
|
143
|
+
<%= form.rich_text_area :body do %>
|
|
144
|
+
<%= lexxy_variables_prompt %>
|
|
145
|
+
<% end %>
|
|
146
|
+
<%= form.submit %>
|
|
147
|
+
<% end %>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Display page:
|
|
151
|
+
|
|
152
|
+
```erb
|
|
153
|
+
<%= @message.body.with_variables(
|
|
154
|
+
first_name: @user.first_name,
|
|
155
|
+
last_name: @user.last_name) %>
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
The catalog entries have no `value` because it's supplied at render time, so the same saved content renders differently per user. Values are escaped for HTML automatically. When a variable name would collide with `context:` or `locale:`, use an `assigns:` hash instead:
|
|
159
|
+
|
|
160
|
+
```erb
|
|
161
|
+
<%= @message.body.with_variables(assigns: { locale: @user.locale }) %>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Static values from config
|
|
165
|
+
|
|
166
|
+
When a value is the same for everyone, it can live on the catalog item itself. With no `assigns` set, the gem reads `value` off the catalog and `with_variables` takes no arguments:
|
|
167
|
+
|
|
168
|
+
```ruby
|
|
169
|
+
LexxyVariables.configure do |c|
|
|
170
|
+
c.catalog = [ { key: "company", name: "Company", value: "Acme" } ]
|
|
171
|
+
end
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
```erb
|
|
175
|
+
<%= @message.body.with_variables %>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### Liquid drops and dotted access
|
|
179
|
+
|
|
180
|
+
Liquid enables dotted access like `{{ user.first_name }}`, filters, and drops that expose a whole object. A drop is a small class that defines which methods Liquid can call:
|
|
181
|
+
|
|
182
|
+
```ruby
|
|
183
|
+
# app/drops/user_drop.rb
|
|
184
|
+
class UserDrop < Liquid::Drop
|
|
185
|
+
def initialize(user) = @user = user
|
|
186
|
+
|
|
187
|
+
def first_name = @user.first_name
|
|
188
|
+
def full_name = @user.full_name
|
|
189
|
+
def email = @user.email
|
|
190
|
+
end
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
The dotted keys go in the catalog, the Liquid renderer is used, and `assigns` returns the drop under the name the keys use (`user`):
|
|
194
|
+
|
|
195
|
+
```ruby
|
|
196
|
+
LexxyVariables.configure do |c|
|
|
197
|
+
c.catalog = [
|
|
198
|
+
{ key: "user.first_name", name: "First name" },
|
|
199
|
+
{ key: "user.full_name", name: "Full name" },
|
|
200
|
+
{ key: "user.email", name: "Email" }
|
|
201
|
+
]
|
|
202
|
+
|
|
203
|
+
c.renderer = LexxyVariables::Renderers::Liquid.new
|
|
204
|
+
|
|
205
|
+
c.assigns = ->(_used_keys) { { "user" => UserDrop.new(Current.user) } }
|
|
206
|
+
end
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
```erb
|
|
210
|
+
<%= @message.body.with_variables %>
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
A `user.first_name` chip becomes `{{ user.first_name }}`, which Liquid runs through the drop. Liquid can only call the methods the drop defines. Return raw values and let the gem handle the escaping.
|
|
214
|
+
|
|
215
|
+
## Plain text and Markdown
|
|
216
|
+
|
|
217
|
+
`with_variables` returns a plain `ActionText::Content` with every chip
|
|
218
|
+
resolved, so Action Text's own conversions chain from it:
|
|
219
|
+
|
|
220
|
+
```ruby
|
|
221
|
+
@message.body.with_variables(first_name: @user.first_name).to_plain_text
|
|
222
|
+
# => "Hi Ada, welcome aboard!"
|
|
223
|
+
|
|
224
|
+
@message.body.with_variables(first_name: "Ada").to_markdown # Rails 8.2+
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Each format handles its own escaping. Values come out raw in `to_plain_text`
|
|
228
|
+
and `to_markdown`, and escaped in HTML. No view is required, so it works in
|
|
229
|
+
mailers (the text part of an email), background jobs, and exports:
|
|
230
|
+
|
|
231
|
+
```ruby
|
|
232
|
+
mail.text_part = @message.body.with_variables(assigns).to_plain_text
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Rendering works the same as on any rich text body. During a request Rails
|
|
236
|
+
renders it with the current controller, so helpers and URLs resolve as usual.
|
|
237
|
+
Outside a request it uses Rails' offline renderer.
|
|
238
|
+
|
|
239
|
+
## Locales
|
|
240
|
+
|
|
241
|
+
`with_variables` takes a `locale:`. Resolution runs inside `I18n.with_locale`,
|
|
242
|
+
so anything that calls `I18n.t` along the way (assigns, resolvers, drops) sees
|
|
243
|
+
that locale. Leave it off to use the current locale. The previous locale is
|
|
244
|
+
restored afterward.
|
|
245
|
+
|
|
246
|
+
```ruby
|
|
247
|
+
@message.body.with_variables(locale: recipient.locale).to_plain_text
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
`with_variables` resolves right away, but the conversion you chain on it runs
|
|
251
|
+
later under whatever locale is current then. If the content has attachments
|
|
252
|
+
with translated partials, wrap the conversion too:
|
|
253
|
+
|
|
254
|
+
```ruby
|
|
255
|
+
resolved = @message.body.with_variables(locale: :fr)
|
|
256
|
+
I18n.with_locale(:fr) { resolved.to_s }
|
|
257
|
+
```
|
|
258
|
+
|
|
116
259
|
## Full configuration
|
|
117
260
|
|
|
118
|
-
`context` is yours to define. The gem passes it untouched to your catalog,
|
|
119
|
-
assigns, and resolve callables, so put whatever they need in it. That might be a
|
|
120
|
-
tenant, `nil`, or any object.
|
|
261
|
+
`context` is yours to define. The gem passes it untouched to your catalog, assigns, and resolve callables, so put whatever they need in it. That might be a tenant, `nil`, or any object.
|
|
121
262
|
|
|
122
263
|
```ruby
|
|
123
264
|
LexxyVariables.configure do |c|
|
|
124
|
-
# What users can insert
|
|
265
|
+
# What users can insert. The {{ prompt and the toolbar dropdown read this.
|
|
125
266
|
c.catalog = ->(context) { context.variables + BuiltinVariable.all }
|
|
126
267
|
|
|
127
268
|
# What each used key resolves to at render time.
|
|
@@ -130,7 +271,7 @@ LexxyVariables.configure do |c|
|
|
|
130
271
|
# Opt into Liquid for dotted access, drops, and filters.
|
|
131
272
|
c.renderer = LexxyVariables::Renderers::Liquid.new
|
|
132
273
|
|
|
133
|
-
# A second chip type
|
|
274
|
+
# A second chip type. Snippets expand to rich HTML instead of an escaped value.
|
|
134
275
|
c.register_attachment(
|
|
135
276
|
content_type: "application/vnd.actiontext.snippet",
|
|
136
277
|
renders_as: :html,
|
|
@@ -145,24 +286,19 @@ end
|
|
|
145
286
|
| Option | Default | What it does |
|
|
146
287
|
| --- | --- | --- |
|
|
147
288
|
| `catalog` | `[]` | The insertable items shown in the `{{` prompt and the toolbar dropdown. A list, a zero-arg lambda, or a `->(context)` lambda. Items respond to `#key` and `#name`, and optionally `#value` and `#attachable_sgid`. |
|
|
148
|
-
| `assigns` | reads `#value` off catalog items | The render-time lookup. A `->(context, used_keys)` or `->(used_keys)` lambda that receives only the keys used in the content being rendered and returns a `{ key => value }` hash. |
|
|
149
|
-
| `renderer` | `Renderers::Substitution.new` | How
|
|
289
|
+
| `assigns` | reads `#value` off catalog items | The render-time lookup. A `->(context, used_keys)` or `->(used_keys)` lambda that receives only the keys used in the content being rendered and returns a `{ key => value }` hash. Per-render values can also be passed straight to `with_variables` (see [Examples](#examples)). |
|
|
290
|
+
| `renderer` | `Renderers::Substitution.new` | How a chip's key becomes a value. The default is a plain hash lookup with no template engine. Swap in `Renderers::Liquid.new` for dotted access, drops, and filters. |
|
|
150
291
|
| `sort` | `:name` | How the catalog is ordered in the prompt and dropdown. `:name` (case-insensitive alphabetical), `:key`, `false` to keep the catalog's given order, or a lambda (a `->(item)` sort key or a `->(a, b)` comparator). |
|
|
151
292
|
| `max_fragment_depth` | `1` | How many levels of `renders_as: :html` chips expand. The default resolves the variables inside a snippet but drops a snippet nested inside another snippet. Raise it to allow deeper nesting. |
|
|
152
|
-
| `
|
|
153
|
-
| `register_attachment(content_type:, resolve:, renders_as:, label:)` | variable type pre-registered | Adds or replaces a chip type. `renders_as:` is `:text` (default, the resolver returns a key whose escaped value is substituted in) or `:html` (splices rich HTML in pre-sanitize, resolving inner `:text` chips in the same pass, bounded by `max_fragment_depth`). `label:` is the badge shown in the prompt when the list mixes types. Re-registering a content type (including the built-in variable type) replaces it, which is how you'd swap in a custom variable resolver. |
|
|
293
|
+
| `register_attachment(content_type:, resolve:, renders_as:, label:)` | variable type pre-registered | Adds or replaces a chip type. `renders_as:` is `:text` (default, the resolver returns a key whose value is substituted in as inert text) or `:html` (splices rich HTML in pre-sanitize, resolving inner `:text` chips in the same pass, bounded by `max_fragment_depth`). `label:` is the badge shown in the prompt when the list mixes types. Re-registering a content type (including the built-in variable type) replaces it, which is how you'd swap in a custom variable resolver. |
|
|
154
294
|
|
|
155
|
-
###
|
|
295
|
+
### Prompt options
|
|
156
296
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
empty state, and `render_lexxy_content` can render under a specific locale by
|
|
160
|
-
wrapping the whole pass in `I18n.with_locale`.
|
|
297
|
+
`lexxy_variables_prompt` takes `context:` (see [Multi-tenancy](#multi-tenancy))
|
|
298
|
+
and lets you change the trigger characters and the empty state:
|
|
161
299
|
|
|
162
300
|
```erb
|
|
163
301
|
<%= lexxy_variables_prompt(trigger: "%%", empty_results: t(".no_variables")) %>
|
|
164
|
-
|
|
165
|
-
<%= render_lexxy_content(@record.body, locale: recipient.locale) %>
|
|
166
302
|
```
|
|
167
303
|
|
|
168
304
|
## Multi-tenancy
|
|
@@ -177,7 +313,7 @@ LexxyVariables.configure do |c|
|
|
|
177
313
|
end
|
|
178
314
|
```
|
|
179
315
|
|
|
180
|
-
|
|
316
|
+
Pass the tenant on the editor page:
|
|
181
317
|
|
|
182
318
|
```erb
|
|
183
319
|
<%= form.rich_text_area :body do %>
|
|
@@ -188,7 +324,7 @@ Both view helpers take the same `context:`. Pass the tenant on the editor page:
|
|
|
188
324
|
and again on the display page:
|
|
189
325
|
|
|
190
326
|
```erb
|
|
191
|
-
<%=
|
|
327
|
+
<%= @record.body.with_variables(context: ActsAsTenant.current_tenant) %>
|
|
192
328
|
```
|
|
193
329
|
|
|
194
330
|
Or skip `context` entirely and rely on acts_as_tenant scoping queries to the
|
|
@@ -256,14 +392,16 @@ popup and the dropdown:
|
|
|
256
392
|
|
|
257
393
|
## Security model
|
|
258
394
|
|
|
259
|
-
- Every
|
|
260
|
-
author can't fake a substitution by typing the token pattern into the body.
|
|
261
|
-
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
395
|
+
- Every resolution gets a fresh random nonce that guards the placeholder tokens,
|
|
396
|
+
so an author can't fake a substitution by typing the token pattern into the body.
|
|
397
|
+
- Resolved values are injected as DOM text nodes, never parsed as markup. HTML
|
|
398
|
+
output escapes them at serialization and still runs the sanitizer at render
|
|
399
|
+
time, so a value can't reintroduce markup. Plain-text and Markdown output read
|
|
400
|
+
them raw. An `:html` chip is spliced in before that render-time sanitization,
|
|
401
|
+
so the sanitizer still scrubs it.
|
|
402
|
+
- Only the Liquid renderer runs a template engine, and it only ever parses chip
|
|
403
|
+
keys, never body text, so `{{ }}` or `{% %}` an author types stays literal. The
|
|
404
|
+
default renderer runs no engine at all, so there's nothing there to inject into.
|
|
267
405
|
|
|
268
406
|
## Contributing
|
|
269
407
|
|
|
@@ -14,20 +14,18 @@ module LexxyVariables
|
|
|
14
14
|
# renderer: Renderers::Substitution (default, no Liquid) or Renderers::Liquid.
|
|
15
15
|
# max_fragment_depth: how deep :html chips (e.g. snippets) expand. The
|
|
16
16
|
# default of 1 resolves a snippet's inner variables and drops nested snippets.
|
|
17
|
-
# content_layout: the ActionText content layout wrapper for rendered output.
|
|
18
17
|
# sort: how the catalog is ordered in the prompt and dropdown. Defaults to
|
|
19
18
|
# :name (case-insensitive alphabetical). Use :key to sort by key, false to
|
|
20
19
|
# preserve the catalog's given order, or a callable: a ->(item) sort key, or
|
|
21
20
|
# a ->(a, b) comparator.
|
|
22
21
|
class Configuration
|
|
23
|
-
attr_accessor :assigns, :renderer, :
|
|
22
|
+
attr_accessor :assigns, :renderer, :max_fragment_depth, :sort
|
|
24
23
|
attr_reader :registry
|
|
25
24
|
attr_writer :catalog
|
|
26
25
|
|
|
27
26
|
def initialize
|
|
28
27
|
@registry = Registry.new
|
|
29
28
|
@renderer = Renderers::Substitution.new
|
|
30
|
-
@content_layout = "layouts/action_text/contents/content"
|
|
31
29
|
@max_fragment_depth = 1
|
|
32
30
|
@catalog = []
|
|
33
31
|
@sort = :name
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
module LexxyVariables
|
|
2
|
-
#
|
|
3
|
-
#
|
|
2
|
+
# Editor-side view helpers. LexxyVariables::Engine includes this module into
|
|
3
|
+
# Action View when the host app boots, so lexxy_variables_prompt and
|
|
4
|
+
# lexxy_variable_chip are callable from any view with no setup. `context` is
|
|
5
|
+
# opaque to the gem and is passed straight through to the host's catalog.
|
|
4
6
|
module Helper
|
|
5
|
-
def render_lexxy_content(rich_text, context: nil, locale: I18n.locale)
|
|
6
|
-
LexxyVariables::Pipeline.new(self).call(rich_text, context: context, locale: locale)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
7
|
# Renders the <lexxy-prompt> the editor extension reads, built from the
|
|
10
8
|
# configured catalog. `context` is passed to the catalog callable.
|
|
11
9
|
def lexxy_variables_prompt(context: nil, trigger: "{{", empty_results: "No variables found")
|
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
module LexxyVariables
|
|
2
2
|
module Renderers
|
|
3
|
-
# Opt-in renderer that resolves
|
|
3
|
+
# Opt-in renderer that resolves each key through Liquid, enabling dotted
|
|
4
4
|
# access, drops (e.g. {{ company.name }}), and filters. Requires the `liquid`
|
|
5
5
|
# gem. It is loaded here, when a host instantiates this renderer, so apps on
|
|
6
6
|
# the default renderer never pull it in.
|
|
7
7
|
#
|
|
8
|
-
# Security:
|
|
9
|
-
#
|
|
10
|
-
#
|
|
11
|
-
#
|
|
8
|
+
# Security: only the chip's key is parsed as a Liquid template, never body
|
|
9
|
+
# text, so {{ }} or {% %} an author types stays literal. The resolved value
|
|
10
|
+
# is injected as a DOM text node and escaped per output format by the
|
|
11
|
+
# resolver, so drops must NOT pre-escape their values.
|
|
12
12
|
#
|
|
13
13
|
# `assigns` is the Hash passed to Liquid: string values and/or Liquid::Drop
|
|
14
|
-
# instances.
|
|
15
|
-
# html_safe after sanitization.
|
|
14
|
+
# instances.
|
|
16
15
|
class Liquid
|
|
17
16
|
def initialize(error_mode: :lax)
|
|
18
17
|
require "liquid"
|
|
19
18
|
@error_mode = error_mode
|
|
20
19
|
end
|
|
21
20
|
|
|
22
|
-
def
|
|
23
|
-
|
|
24
|
-
html = html.gsub(Placeholder.pattern(nonce)) { "{{ #{$1} }}" }
|
|
25
|
-
|
|
26
|
-
::Liquid::Template.parse(html, error_mode: @error_mode).render(assigns)
|
|
21
|
+
def resolve_value(key, assigns)
|
|
22
|
+
::Liquid::Template.parse("{{ #{key} }}", error_mode: @error_mode).render(assigns)
|
|
27
23
|
end
|
|
28
24
|
end
|
|
29
25
|
end
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
module LexxyVariables
|
|
2
2
|
module Renderers
|
|
3
|
-
# Default renderer.
|
|
4
|
-
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
# `assigns` is a Hash of key => value. Values are coerced to escaped strings.
|
|
3
|
+
# Default renderer. Looks each key up in the assigns hash, no template
|
|
4
|
+
# engine, so author-typed text can never be interpreted as code. The value
|
|
5
|
+
# is returned raw: the resolver injects it as a DOM text node, where HTML
|
|
6
|
+
# serialization escapes it and plain-text/markdown conversions read it as-is.
|
|
9
7
|
class Substitution
|
|
10
|
-
def
|
|
11
|
-
|
|
8
|
+
def resolve_value(key, assigns)
|
|
9
|
+
assigns[key].to_s
|
|
12
10
|
end
|
|
13
11
|
end
|
|
14
12
|
end
|
|
@@ -1,41 +1,35 @@
|
|
|
1
1
|
module LexxyVariables
|
|
2
|
-
#
|
|
2
|
+
# Resolves the attachment chips in stored rich text, returning a new
|
|
3
|
+
# ActionText::Content with every chip replaced by its value. The result is a
|
|
4
|
+
# plain content object, so Action Text's own conversions chain from it:
|
|
5
|
+
# #to_s (sanitized HTML), #to_plain_text, #to_markdown, #to_html.
|
|
3
6
|
#
|
|
4
7
|
# Security invariants (do not weaken):
|
|
5
8
|
# 1. A random per-render nonce guards placeholder tokens, so an author cannot
|
|
6
9
|
# forge a substitution by typing the token pattern into the body.
|
|
7
|
-
# 2.
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
#
|
|
10
|
+
# 2. Resolved values are injected as DOM text nodes, never parsed as markup.
|
|
11
|
+
# HTML serialization escapes them, and the sanitizer still runs when the
|
|
12
|
+
# content is rendered. :html output is spliced as markup here, before that
|
|
13
|
+
# render-time sanitization, so the sanitizer cleans it too.
|
|
14
|
+
# 3. Any template-engine parsing (Liquid) sees only chip keys, never body text.
|
|
11
15
|
#
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
class Pipeline
|
|
16
|
-
def initialize(view, config = LexxyVariables.config)
|
|
17
|
-
@view = view
|
|
16
|
+
# Build a fresh Resolver per call. #call stores per-render state on the instance.
|
|
17
|
+
class Resolver
|
|
18
|
+
def initialize(config = LexxyVariables.config)
|
|
18
19
|
@config = config
|
|
19
20
|
end
|
|
20
21
|
|
|
21
|
-
def call(
|
|
22
|
-
body = rich_text&.body
|
|
23
|
-
return "".html_safe if body.blank?
|
|
24
|
-
|
|
22
|
+
def call(content, context: nil, locale: nil, assigns: {})
|
|
25
23
|
@context = context
|
|
26
24
|
@nonce = SecureRandom.hex(8)
|
|
27
25
|
@used_keys = []
|
|
28
26
|
|
|
29
27
|
I18n.with_locale(locale || I18n.locale) do
|
|
30
|
-
fragment = substitute(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
)
|
|
34
|
-
|
|
35
|
-
assigns = @config.resolve_assigns(@context, @used_keys.uniq)
|
|
36
|
-
rendered = @config.renderer.render(html, nonce: @nonce, assigns: assigns)
|
|
37
|
-
|
|
38
|
-
@view.render(layout: @config.content_layout) { rendered.html_safe }
|
|
28
|
+
fragment = substitute(content.fragment, 0)
|
|
29
|
+
resolved = @config.resolve_assigns(@context, @used_keys.uniq)
|
|
30
|
+
resolved = resolved.merge(assigns.transform_keys(&:to_s)) if assigns.any?
|
|
31
|
+
inject_values(fragment, resolved)
|
|
32
|
+
ActionText::Content.new(fragment, canonicalize: false)
|
|
39
33
|
end
|
|
40
34
|
end
|
|
41
35
|
|
|
@@ -73,6 +67,19 @@ module LexxyVariables
|
|
|
73
67
|
substitute(inner, depth + 1)
|
|
74
68
|
end
|
|
75
69
|
|
|
70
|
+
# Swaps each nonce-guarded token for its value, staying at the text-node
|
|
71
|
+
# level so values serialize as escaped text and read back raw in plain-text
|
|
72
|
+
# and markdown conversions. #substitute returned a fresh fragment, so
|
|
73
|
+
# mutating it in place is safe.
|
|
74
|
+
def inject_values(fragment, assigns)
|
|
75
|
+
pattern = Placeholder.pattern(@nonce)
|
|
76
|
+
fragment.source.traverse do |node|
|
|
77
|
+
next unless node.text? && node.content.match?(pattern)
|
|
78
|
+
|
|
79
|
+
node.content = node.content.gsub(pattern) { @config.renderer.resolve_value($1, assigns) }
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
76
83
|
# Accepts whatever a :html resolver returns (ActionText content, rich
|
|
77
84
|
# text, a Nokogiri node, or an HTML string) and coerces it to the
|
|
78
85
|
# ActionText::Fragment that #substitute needs, or nil to drop the chip.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
module LexxyVariables
|
|
2
|
+
# Mixed into ActionText::Content via the :action_text_content load hook.
|
|
3
|
+
module WithVariables
|
|
4
|
+
# Returns a new ActionText::Content with every variable chip resolved, so
|
|
5
|
+
# Action Text's own conversions chain from the result:
|
|
6
|
+
#
|
|
7
|
+
# @post.body.with_variables(first_name: "Ada").to_plain_text
|
|
8
|
+
# @post.body.with_variables(context: tenant).to_s
|
|
9
|
+
# @post.body.with_variables.to_markdown # on Rails versions that ship it
|
|
10
|
+
#
|
|
11
|
+
# Takes `context:`, `locale:`, and per-render values as keyword args or an
|
|
12
|
+
# `assigns:` hash.
|
|
13
|
+
def with_variables(context: nil, locale: nil, assigns: {}, **inline_assigns)
|
|
14
|
+
LexxyVariables::Resolver.new.call(
|
|
15
|
+
self, context: context, locale: locale, assigns: assigns.merge(inline_assigns)
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Mixed into ActionText::RichText via the :action_text_rich_text load hook,
|
|
21
|
+
# so `@post.body.with_variables` works straight off the association.
|
|
22
|
+
module RichTextWithVariables
|
|
23
|
+
def with_variables(context: nil, locale: nil, assigns: {}, **inline_assigns)
|
|
24
|
+
(body || ActionText::Content.new(nil, canonicalize: false))
|
|
25
|
+
.with_variables(context: context, locale: locale, assigns: assigns.merge(inline_assigns))
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
ActiveSupport.on_load(:action_text_content) { include LexxyVariables::WithVariables }
|
|
31
|
+
ActiveSupport.on_load(:action_text_rich_text) { include LexxyVariables::RichTextWithVariables }
|
data/lib/lexxy_variables.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
require "active_support"
|
|
2
|
-
require "erb"
|
|
3
2
|
require "securerandom"
|
|
4
3
|
require "nokogiri"
|
|
5
4
|
|
|
@@ -10,15 +9,16 @@ require "lexxy_variables/registry"
|
|
|
10
9
|
require "lexxy_variables/renderers/substitution"
|
|
11
10
|
require "lexxy_variables/renderers/liquid"
|
|
12
11
|
require "lexxy_variables/configuration"
|
|
13
|
-
require "lexxy_variables/
|
|
12
|
+
require "lexxy_variables/resolver"
|
|
13
|
+
require "lexxy_variables/with_variables"
|
|
14
14
|
require "lexxy_variables/attachable"
|
|
15
15
|
require "lexxy_variables/helper"
|
|
16
16
|
require "lexxy_variables/engine" if defined?(Rails::Engine)
|
|
17
17
|
|
|
18
18
|
# Insert and safely resolve variable/attachment tokens in Lexxy rich text.
|
|
19
19
|
#
|
|
20
|
-
# The gem owns the mechanism: the editor extension, the nonce-safe
|
|
21
|
-
#
|
|
20
|
+
# The gem owns the mechanism: the editor extension, the nonce-safe resolver,
|
|
21
|
+
# the attachment-type registry, and the renderers. The host app owns
|
|
22
22
|
# the policy: what variables exist (catalog), what a key resolves to (assigns),
|
|
23
23
|
# and any extra attachment types (register_attachment, e.g. snippets).
|
|
24
24
|
module LexxyVariables
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
data/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/{erb-6.0.4 → erb-6.0.5}/erb/escape.so
RENAMED
|
Binary file
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
current directory: /home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/gems/erb-6.0.5/ext/erb/escape
|
|
2
|
+
/opt/hostedtoolcache/Ruby/3.4.10/x64/bin/ruby extconf.rb
|
|
3
|
+
checking for rb_ext_ractor_safe() in ruby.h... yes
|
|
4
|
+
creating Makefile
|
|
5
|
+
|
|
6
|
+
current directory: /home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/gems/erb-6.0.5/ext/erb/escape
|
|
7
|
+
make DESTDIR\= sitearchdir\=./.gem.20260719-2315-wnl2jv sitelibdir\=./.gem.20260719-2315-wnl2jv clean
|
|
8
|
+
|
|
9
|
+
current directory: /home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/gems/erb-6.0.5/ext/erb/escape
|
|
10
|
+
make DESTDIR\= sitearchdir\=./.gem.20260719-2315-wnl2jv sitelibdir\=./.gem.20260719-2315-wnl2jv
|
|
11
|
+
compiling escape.c
|
|
12
|
+
linking shared-object erb/escape.so
|
|
13
|
+
|
|
14
|
+
current directory: /home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/gems/erb-6.0.5/ext/erb/escape
|
|
15
|
+
make DESTDIR\= sitearchdir\=./.gem.20260719-2315-wnl2jv sitelibdir\=./.gem.20260719-2315-wnl2jv install
|
|
16
|
+
/usr/bin/install -c -m 0755 escape.so ./.gem.20260719-2315-wnl2jv/erb
|
|
17
|
+
|
|
18
|
+
current directory: /home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/gems/erb-6.0.5/ext/erb/escape
|
|
19
|
+
make DESTDIR\= sitearchdir\=./.gem.20260719-2315-wnl2jv sitelibdir\=./.gem.20260719-2315-wnl2jv clean
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
current directory: /home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.
|
|
2
|
-
/opt/hostedtoolcache/Ruby/3.4.10/x64/bin/ruby -rrubygems /home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/exe/rake RUBYARCHDIR\=/home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/lexxy-0.9.
|
|
1
|
+
current directory: /home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/gems/lexxy-0.9.25/ext
|
|
2
|
+
/opt/hostedtoolcache/Ruby/3.4.10/x64/bin/ruby -rrubygems /home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/gems/rake-13.4.2/exe/rake RUBYARCHDIR\=/home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/lexxy-0.9.25 RUBYLIBDIR\=/home/runner/work/lexxy-variables/lexxy-variables/vendor/bundle/ruby/3.4.0/extensions/x86_64-linux/3.4.0/lexxy-0.9.25
|
|
Binary file
|