temple 0.10.0 → 0.10.2
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/test.yml +2 -1
- data/CHANGES +9 -0
- data/lib/temple/engine.rb +1 -0
- data/lib/temple/erb/engine.rb +1 -0
- data/lib/temple/erb/parser.rb +1 -0
- data/lib/temple/erb/template.rb +1 -0
- data/lib/temple/erb/trimming.rb +1 -0
- data/lib/temple/exceptions.rb +1 -0
- data/lib/temple/filter.rb +1 -0
- data/lib/temple/filters/ambles.rb +1 -0
- data/lib/temple/filters/code_merger.rb +1 -0
- data/lib/temple/filters/control_flow.rb +1 -0
- data/lib/temple/filters/dynamic_inliner.rb +2 -1
- data/lib/temple/filters/encoding.rb +1 -0
- data/lib/temple/filters/eraser.rb +1 -0
- data/lib/temple/filters/escapable.rb +1 -0
- data/lib/temple/filters/multi_flattener.rb +1 -0
- data/lib/temple/filters/remove_bom.rb +1 -0
- data/lib/temple/filters/static_analyzer.rb +1 -0
- data/lib/temple/filters/static_merger.rb +1 -0
- data/lib/temple/filters/string_splitter.rb +1 -0
- data/lib/temple/filters/validator.rb +1 -0
- data/lib/temple/generator.rb +4 -1
- data/lib/temple/generators/array.rb +1 -0
- data/lib/temple/generators/array_buffer.rb +1 -0
- data/lib/temple/generators/erb.rb +1 -0
- data/lib/temple/generators/rails_output_buffer.rb +1 -0
- data/lib/temple/generators/string_buffer.rb +2 -1
- data/lib/temple/grammar.rb +1 -0
- data/lib/temple/html/attribute_merger.rb +1 -0
- data/lib/temple/html/attribute_remover.rb +1 -0
- data/lib/temple/html/attribute_sorter.rb +1 -0
- data/lib/temple/html/dispatcher.rb +1 -0
- data/lib/temple/html/fast.rb +1 -0
- data/lib/temple/html/filter.rb +1 -0
- data/lib/temple/html/pretty.rb +1 -0
- data/lib/temple/html/safe.rb +1 -0
- data/lib/temple/map.rb +1 -0
- data/lib/temple/mixins/dispatcher.rb +1 -0
- data/lib/temple/mixins/engine_dsl.rb +1 -0
- data/lib/temple/mixins/grammar_dsl.rb +2 -1
- data/lib/temple/mixins/options.rb +1 -0
- data/lib/temple/mixins/template.rb +1 -0
- data/lib/temple/parser.rb +1 -0
- data/lib/temple/static_analyzer.rb +1 -0
- data/lib/temple/templates/rails.rb +1 -0
- data/lib/temple/templates/tilt.rb +1 -0
- data/lib/temple/templates.rb +1 -0
- data/lib/temple/utils.rb +1 -0
- data/lib/temple/version.rb +2 -1
- data/lib/temple.rb +1 -0
- data/spec/generator_spec.rb +25 -4
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 3fdf456fd2d277a110681cc1d0dd228bba3b75306b3caa78fb12ad668a7665c6
         | 
| 4 | 
            +
              data.tar.gz: 7dfdd5001be5c652254aab301e391d7652c0bc1e44a00ee9fe5002c1899e99c1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 4d5847567944020f1be6ddf6b96b056ff0154cb26b00e71d4c736337cddc3e1ceb402ef4eabc3fa8a150ec56fd560cb0ac22358c8f1673bc2dfabb8407a482b9
         | 
| 7 | 
            +
              data.tar.gz: f8f766aeb193a7bf781297dff7628d2e9d09840a241130f4a04f60b72e16d237c965f327696788e29f58ddadc1ce843392a52619363fc19dc5da66966d42ed09
         | 
    
        data/.github/workflows/test.yml
    CHANGED
    
    
    
        data/CHANGES
    CHANGED
    
    | @@ -1,3 +1,12 @@ | |
| 1 | 
            +
            0.10.2
         | 
| 2 | 
            +
             | 
| 3 | 
            +
              * Fix Sinatra capture_generator problem (#145)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            0.10.1
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              * Use specified :capture_generator for nested captures (#112, #144)
         | 
| 8 | 
            +
              * Compatibility with frozen string literals
         | 
| 9 | 
            +
             | 
| 1 10 | 
             
            0.10.0
         | 
| 2 11 |  | 
| 3 12 | 
             
              * Regression: Revert changes to :capture_generator since 0.8.2 (#112, #113, #137)
         | 
    
        data/lib/temple/engine.rb
    CHANGED
    
    
    
        data/lib/temple/erb/engine.rb
    CHANGED
    
    
    
        data/lib/temple/erb/parser.rb
    CHANGED
    
    
    
        data/lib/temple/erb/template.rb
    CHANGED
    
    
    
        data/lib/temple/erb/trimming.rb
    CHANGED
    
    
    
        data/lib/temple/exceptions.rb
    CHANGED
    
    
    
        data/lib/temple/filter.rb
    CHANGED
    
    
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            module Temple
         | 
| 2 3 | 
             
              module Filters
         | 
| 3 4 | 
             
                # Inlines several static/dynamic into a single dynamic.
         | 
| @@ -36,7 +37,7 @@ module Temple | |
| 36 37 | 
             
                          # another one, we add both then.
         | 
| 37 38 | 
             
                          state = :single
         | 
| 38 39 | 
             
                          prev = [exp]
         | 
| 39 | 
            -
                          curr = [:dynamic, '"']
         | 
| 40 | 
            +
                          curr = [:dynamic, '"'.dup]
         | 
| 40 41 | 
             
                        when :single
         | 
| 41 42 | 
             
                          # Yes! We found another one. Add the current dynamic to the result.
         | 
| 42 43 | 
             
                          state = :several
         | 
    
        data/lib/temple/generator.rb
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            module Temple
         | 
| 2 3 | 
             
              # Abstract generator base class
         | 
| 3 4 | 
             
              # Generators should inherit this class and
         | 
| @@ -54,7 +55,9 @@ module Temple | |
| 54 55 | 
             
                end
         | 
| 55 56 |  | 
| 56 57 | 
             
                def on_capture(name, exp)
         | 
| 57 | 
            -
                  capture_generator.new( | 
| 58 | 
            +
                  capture_generator.new(capture_generator: options[:capture_generator],
         | 
| 59 | 
            +
                                        freeze_static: options[:freeze_static],
         | 
| 60 | 
            +
                                        buffer: name).call(exp)
         | 
| 58 61 | 
             
                end
         | 
| 59 62 |  | 
| 60 63 | 
             
                def on_static(text)
         | 
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            module Temple
         | 
| 2 3 | 
             
              module Generators
         | 
| 3 4 | 
             
                # Implements a string buffer.
         | 
| @@ -10,7 +11,7 @@ module Temple | |
| 10 11 | 
             
                # @api public
         | 
| 11 12 | 
             
                class StringBuffer < ArrayBuffer
         | 
| 12 13 | 
             
                  def create_buffer
         | 
| 13 | 
            -
                    "#{buffer} = ''"
         | 
| 14 | 
            +
                    "#{buffer} = ''.dup"
         | 
| 14 15 | 
             
                  end
         | 
| 15 16 |  | 
| 16 17 | 
             
                  def return_buffer
         | 
    
        data/lib/temple/grammar.rb
    CHANGED
    
    
    
        data/lib/temple/html/fast.rb
    CHANGED
    
    
    
        data/lib/temple/html/filter.rb
    CHANGED
    
    
    
        data/lib/temple/html/pretty.rb
    CHANGED
    
    
    
        data/lib/temple/html/safe.rb
    CHANGED
    
    
    
        data/lib/temple/map.rb
    CHANGED
    
    
| @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 1 2 | 
             
            module Temple
         | 
| 2 3 | 
             
              module Mixins
         | 
| 3 4 | 
             
                # @api private
         | 
| @@ -67,7 +68,7 @@ module Temple | |
| 67 68 | 
             
                        unmatched.reverse_each do |u|
         | 
| 68 69 | 
             
                          entry = u if u.flatten.size < entry.flatten.size
         | 
| 69 70 | 
             
                        end
         | 
| 70 | 
            -
                        raise(InvalidExpression, PP.pp(entry.last, "#{@grammar}::#{entry.first} did not match\n"))
         | 
| 71 | 
            +
                        raise(InvalidExpression, PP.pp(entry.last, "#{@grammar}::#{entry.first} did not match\n".dup))
         | 
| 71 72 | 
             
                      end
         | 
| 72 73 | 
             
                    end
         | 
| 73 74 |  | 
    
        data/lib/temple/parser.rb
    CHANGED
    
    
    
        data/lib/temple/templates.rb
    CHANGED
    
    
    
        data/lib/temple/utils.rb
    CHANGED
    
    
    
        data/lib/temple/version.rb
    CHANGED
    
    
    
        data/lib/temple.rb
    CHANGED
    
    
    
        data/spec/generator_spec.rb
    CHANGED
    
    | @@ -22,6 +22,12 @@ class SimpleGenerator < Temple::Generator | |
| 22 22 | 
             
              end
         | 
| 23 23 | 
             
            end
         | 
| 24 24 |  | 
| 25 | 
            +
            class SimpleCaptureGenerator < SimpleGenerator
         | 
| 26 | 
            +
              def preamble
         | 
| 27 | 
            +
                "#{buffer} = CAPTURE_BUFFER"
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
            end
         | 
| 30 | 
            +
             | 
| 25 31 | 
             
            describe Temple::Generator do
         | 
| 26 32 | 
             
              it 'should compile simple expressions' do
         | 
| 27 33 | 
             
                gen = SimpleGenerator.new
         | 
| @@ -62,6 +68,21 @@ describe Temple::Generator do | |
| 62 68 | 
             
                  'foo << (D:dynamic); C:code; foo; VAR << (S:after); VAR')
         | 
| 63 69 | 
             
              end
         | 
| 64 70 |  | 
| 71 | 
            +
              it 'should compile nested captures with the same capture_generator' do
         | 
| 72 | 
            +
                gen = SimpleGenerator.new(buffer: "VAR", capture_generator: SimpleCaptureGenerator)
         | 
| 73 | 
            +
                expect(gen.call(
         | 
| 74 | 
            +
                  [:capture, "foo", [:multi,
         | 
| 75 | 
            +
                    [:static, "a"],
         | 
| 76 | 
            +
                    [:capture, "bar", [:multi,
         | 
| 77 | 
            +
                      [:static, "b"],
         | 
| 78 | 
            +
                      [:capture, "baz", [:multi,
         | 
| 79 | 
            +
                        [:static, "c"],
         | 
| 80 | 
            +
                      ]]
         | 
| 81 | 
            +
                    ]]
         | 
| 82 | 
            +
                  ]]
         | 
| 83 | 
            +
                )).to eq "VAR = BUFFER; foo = CAPTURE_BUFFER; foo << (S:a); bar = CAPTURE_BUFFER; bar << (S:b); baz = CAPTURE_BUFFER; baz << (S:c); baz; bar; foo; VAR"
         | 
| 84 | 
            +
              end
         | 
| 85 | 
            +
             | 
| 65 86 | 
             
              it 'should compile newlines' do
         | 
| 66 87 | 
             
                gen = SimpleGenerator.new(buffer: "VAR")
         | 
| 67 88 | 
             
                expect(gen.call([:multi,
         | 
| @@ -115,16 +136,16 @@ describe Temple::Generators::StringBuffer do | |
| 115 136 | 
             
                gen = Temple::Generators::StringBuffer.new(freeze_static: false)
         | 
| 116 137 | 
             
                expect(gen.call([:static,  'test'])).to eq('_buf = "test"')
         | 
| 117 138 | 
             
                expect(gen.call([:dynamic, 'test'])).to eq('_buf = (test).to_s')
         | 
| 118 | 
            -
                expect(gen.call([:code,    'test'])).to eq('_buf = \'\'; test; _buf')
         | 
| 139 | 
            +
                expect(gen.call([:code,    'test'])).to eq('_buf = \'\'.dup; test; _buf')
         | 
| 119 140 |  | 
| 120 | 
            -
                expect(gen.call([:multi, [:static, 'a'], [:static,  'b']])).to eq('_buf = \'\'; _buf << ("a"); _buf << ("b"); _buf')
         | 
| 121 | 
            -
                expect(gen.call([:multi, [:static, 'a'], [:dynamic, 'b']])).to eq('_buf = \'\'; _buf << ("a"); _buf << ((b).to_s); _buf')
         | 
| 141 | 
            +
                expect(gen.call([:multi, [:static, 'a'], [:static,  'b']])).to eq('_buf = \'\'.dup; _buf << ("a"); _buf << ("b"); _buf')
         | 
| 142 | 
            +
                expect(gen.call([:multi, [:static, 'a'], [:dynamic, 'b']])).to eq('_buf = \'\'.dup; _buf << ("a"); _buf << ((b).to_s); _buf')
         | 
| 122 143 | 
             
              end
         | 
| 123 144 |  | 
| 124 145 | 
             
              it 'should freeze static' do
         | 
| 125 146 | 
             
                gen = Temple::Generators::StringBuffer.new(freeze_static: true)
         | 
| 126 147 | 
             
                expect(gen.call([:static,  'test'])).to eq('_buf = "test"')
         | 
| 127 | 
            -
                expect(gen.call([:multi, [:dynamic, '1'], [:static,  'test']])).to eq('_buf = \'\'; _buf << ((1).to_s); _buf << ("test".freeze); _buf')
         | 
| 148 | 
            +
                expect(gen.call([:multi, [:dynamic, '1'], [:static,  'test']])).to eq('_buf = \'\'.dup; _buf << ((1).to_s); _buf << ("test".freeze); _buf')
         | 
| 128 149 | 
             
              end
         | 
| 129 150 | 
             
            end
         | 
| 130 151 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: temple
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.10. | 
| 4 | 
            +
              version: 0.10.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Magnus Holm
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date: 2023- | 
| 12 | 
            +
            date: 2023-05-27 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: tilt
         |