roda 2.19.0 → 2.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG +4 -0
 - data/README.rdoc +4 -1
 - data/doc/release_notes/2.20.0.txt +5 -0
 - data/lib/roda/plugins/render.rb +8 -5
 - data/lib/roda/version.rb +1 -1
 - data/spec/plugin/_erubis_escaping_spec.rb +7 -5
 - data/spec/plugin/render_spec.rb +47 -0
 - metadata +18 -2
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: eef2a8e61f61ef63c53b1086d69a56ebfe6d8634
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 9803c11eb51c8588d8ba7c8b8c9026045ee769f4
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 82c6579b2995baf018e9115ce50dc32bb672cf9ecf7b26c82b895062e5cf86537ac2c07cd978936d64a5421989e332dfb24f2fea7fd45d07a8a5953b8eba93e6
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: c41e5dcc24f4dc2c5528556fb4c583f486e64eb7c04f988a9851d72e53ec99ea760782637084e9d83369db27a7cc3e83a37a3622e4c248654a639472ffdbc76c
         
     | 
    
        data/CHANGELOG
    CHANGED
    
    | 
         @@ -1,3 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            = 2.20.0 (2016-11-13)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            * Support :escape=>:erubi option in the render plugin to use the erubi template engine (jeremyevans)
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
       1 
5 
     | 
    
         
             
            = 2.19.0 (2016-10-14)
         
     | 
| 
       2 
6 
     | 
    
         | 
| 
       3 
7 
     | 
    
         
             
            * Don't add Content-Type/Content-Length headers for 1xx, 204, 205, 304 statuses (celsworth, jeremyevans) (#101, #102)
         
     | 
    
        data/README.rdoc
    CHANGED
    
    | 
         @@ -693,7 +693,8 @@ You can override the default rendering options by passing a hash to the plugin: 
     | 
|
| 
       693 
693 
     | 
    
         | 
| 
       694 
694 
     | 
    
         
             
              class App < Roda
         
     | 
| 
       695 
695 
     | 
    
         
             
                plugin :render,
         
     | 
| 
       696 
     | 
    
         
            -
                  :escape => true, 
     | 
| 
      
 696 
     | 
    
         
            +
                  :escape => true, # Automatically escape output in erb templates using Erubis
         
     | 
| 
      
 697 
     | 
    
         
            +
                                   # can use :erubi instead of true to use Erubi instead of Erubis
         
     | 
| 
       697 
698 
     | 
    
         
             
                  :views => 'admin_views', # Default views directory
         
     | 
| 
       698 
699 
     | 
    
         
             
                  :layout_opts => {:template=>'admin_layout',
         
     | 
| 
       699 
700 
     | 
    
         
             
                                   :ext=>'html.erb'},    # Default layout template options
         
     | 
| 
         @@ -763,6 +764,8 @@ if you have helpers that already return escaped output using a 
     | 
|
| 
       763 
764 
     | 
    
         
             
            string subclass instance.
         
     | 
| 
       764 
765 
     | 
    
         | 
| 
       765 
766 
     | 
    
         
             
            This support requires {Erubis}[http://www.kuwata-lab.com/erubis/].
         
     | 
| 
      
 767 
     | 
    
         
            +
            You can use <tt>:escape=>:erubi</tt> to use {Erubi}[https://github.com/jeremyevans/erubi],
         
     | 
| 
      
 768 
     | 
    
         
            +
            a simplified fork of Erubis.
         
     | 
| 
       766 
769 
     | 
    
         | 
| 
       767 
770 
     | 
    
         
             
            === Security Related HTTP Headers
         
     | 
| 
       768 
771 
     | 
    
         | 
    
        data/lib/roda/plugins/render.rb
    CHANGED
    
    | 
         @@ -58,10 +58,10 @@ class Roda 
     | 
|
| 
       58 
58 
     | 
    
         
             
                #            templates, defaults to 'erb'.
         
     | 
| 
       59 
59 
     | 
    
         
             
                # :escape :: Use Roda's Erubis escaping support, which makes <tt><%= %></tt> escape output,
         
     | 
| 
       60 
60 
     | 
    
         
             
                #            <tt><%== %></tt> not escape output, and handles postfix conditions inside
         
     | 
| 
       61 
     | 
    
         
            -
                #            <tt><%= %></tt> tags.
         
     | 
| 
      
 61 
     | 
    
         
            +
                #            <tt><%= %></tt> tags.  Can have a value of :erubi to use Erubi escaping support.
         
     | 
| 
       62 
62 
     | 
    
         
             
                # :escape_safe_classes :: String subclasses that should not be HTML escaped when used in
         
     | 
| 
       63 
     | 
    
         
            -
                #                         <tt><%= %></tt> tags, when :escape is used. Can be an array for multiple classes.
         
     | 
| 
       64 
     | 
    
         
            -
                # :escaper :: Object used for escaping output of <tt><%= %></tt>, when :escape is used,
         
     | 
| 
      
 63 
     | 
    
         
            +
                #                         <tt><%= %></tt> tags, when :escape=>true is used. Can be an array for multiple classes.
         
     | 
| 
      
 64 
     | 
    
         
            +
                # :escaper :: Object used for escaping output of <tt><%= %></tt>, when :escape=>true is used,
         
     | 
| 
       65 
65 
     | 
    
         
             
                #             overriding the default.  If given, object should respond to +escape_xml+ with
         
     | 
| 
       66 
66 
     | 
    
         
             
                #             a single argument and return an output string.
         
     | 
| 
       67 
67 
     | 
    
         
             
                # :layout :: The base name of the layout file, defaults to 'layout'.  This can be provided as a hash
         
     | 
| 
         @@ -146,7 +146,7 @@ class Roda 
     | 
|
| 
       146 
146 
     | 
    
         
             
                  OPTS={}.freeze
         
     | 
| 
       147 
147 
     | 
    
         | 
| 
       148 
148 
     | 
    
         
             
                  def self.load_dependencies(app, opts=OPTS)
         
     | 
| 
       149 
     | 
    
         
            -
                    if opts[:escape]
         
     | 
| 
      
 149 
     | 
    
         
            +
                    if opts[:escape] && opts[:escape] != :erubi
         
     | 
| 
       150 
150 
     | 
    
         
             
                      app.plugin :_erubis_escaping
         
     | 
| 
       151 
151 
     | 
    
         
             
                    end
         
     | 
| 
       152 
152 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -199,7 +199,10 @@ class Roda 
     | 
|
| 
       199 
199 
     | 
    
         
             
                    if RUBY_VERSION >= "1.9" && !template_opts.has_key?(:default_encoding)
         
     | 
| 
       200 
200 
     | 
    
         
             
                      template_opts[:default_encoding] = Encoding.default_external
         
     | 
| 
       201 
201 
     | 
    
         
             
                    end
         
     | 
| 
       202 
     | 
    
         
            -
                    if opts[:escape]
         
     | 
| 
      
 202 
     | 
    
         
            +
                    if opts[:escape] == :erubi
         
     | 
| 
      
 203 
     | 
    
         
            +
                      require 'tilt/erubi'
         
     | 
| 
      
 204 
     | 
    
         
            +
                      template_opts[:escape] = true
         
     | 
| 
      
 205 
     | 
    
         
            +
                    elsif opts[:escape]
         
     | 
| 
       203 
206 
     | 
    
         
             
                      template_opts[:engine_class] = ErubisEscaping::Eruby
         
     | 
| 
       204 
207 
     | 
    
         | 
| 
       205 
208 
     | 
    
         
             
                      opts[:escaper] ||= if opts[:escape_safe_classes]
         
     | 
    
        data/lib/roda/version.rb
    CHANGED
    
    
| 
         @@ -9,15 +9,17 @@ begin 
     | 
|
| 
       9 
9 
     | 
    
         
             
              rescue LoadError
         
     | 
| 
       10 
10 
     | 
    
         
             
                # Tilt 1 support
         
     | 
| 
       11 
11 
     | 
    
         
             
              end
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
       13 
     | 
    
         
            -
              if defined?(Tilt::ErubisTemplate) && ::Tilt['erb'] != Tilt::ErubisTemplate
         
     | 
| 
       14 
     | 
    
         
            -
                # Work around error where erubis isn't set as erb template handler
         
     | 
| 
       15 
     | 
    
         
            -
                Tilt.register(Tilt::ErubisTemplate, 'erb')
         
     | 
| 
       16 
     | 
    
         
            -
              end
         
     | 
| 
       17 
12 
     | 
    
         
             
            rescue LoadError
         
     | 
| 
       18 
13 
     | 
    
         
             
              warn "tilt or erubis not installed, skipping _erubis_escaping plugin test"  
         
     | 
| 
       19 
14 
     | 
    
         
             
            else
         
     | 
| 
       20 
15 
     | 
    
         
             
            describe "_erubis_escaping plugin" do
         
     | 
| 
      
 16 
     | 
    
         
            +
              before do
         
     | 
| 
      
 17 
     | 
    
         
            +
                if defined?(Tilt::ErubisTemplate) && ::Tilt['erb'] != Tilt::ErubisTemplate
         
     | 
| 
      
 18 
     | 
    
         
            +
                  # Set erubis as default erb template handler
         
     | 
| 
      
 19 
     | 
    
         
            +
                  Tilt.register(Tilt::ErubisTemplate, 'erb')
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       21 
23 
     | 
    
         
             
              it "should escape inside <%= %> and not inside <%== %>, and handle postfix conditionals" do
         
     | 
| 
       22 
24 
     | 
    
         
             
                app(:bare) do
         
     | 
| 
       23 
25 
     | 
    
         
             
                  plugin :render, :escape=>true
         
     | 
    
        data/spec/plugin/render_spec.rb
    CHANGED
    
    | 
         @@ -549,3 +549,50 @@ describe "render plugin" do 
     | 
|
| 
       549 
549 
     | 
    
         | 
| 
       550 
550 
     | 
    
         
             
            end
         
     | 
| 
       551 
551 
     | 
    
         
             
            end
         
     | 
| 
      
 552 
     | 
    
         
            +
             
     | 
| 
      
 553 
     | 
    
         
            +
            begin
         
     | 
| 
      
 554 
     | 
    
         
            +
              require 'tilt'
         
     | 
| 
      
 555 
     | 
    
         
            +
              require 'tilt/erubi'
         
     | 
| 
      
 556 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 557 
     | 
    
         
            +
              warn "tilt 2 or erubi not installed, skipping render :escape=>:erubi test"  
         
     | 
| 
      
 558 
     | 
    
         
            +
            else
         
     | 
| 
      
 559 
     | 
    
         
            +
            describe "_erubis_escaping plugin" do
         
     | 
| 
      
 560 
     | 
    
         
            +
              before do
         
     | 
| 
      
 561 
     | 
    
         
            +
                if defined?(Tilt::ErubiTemplate) && ::Tilt['erb'] != Tilt::ErubiTemplate
         
     | 
| 
      
 562 
     | 
    
         
            +
                  # Set erubi as default erb template handler
         
     | 
| 
      
 563 
     | 
    
         
            +
                  Tilt.register(Tilt::ErubiTemplate, 'erb')
         
     | 
| 
      
 564 
     | 
    
         
            +
                end
         
     | 
| 
      
 565 
     | 
    
         
            +
              end
         
     | 
| 
      
 566 
     | 
    
         
            +
             
     | 
| 
      
 567 
     | 
    
         
            +
              it "should escape inside <%= %> and not inside <%== %>, and handle postfix conditionals" do
         
     | 
| 
      
 568 
     | 
    
         
            +
                app(:bare) do
         
     | 
| 
      
 569 
     | 
    
         
            +
                  plugin :render, :escape=>:erubi
         
     | 
| 
      
 570 
     | 
    
         
            +
             
     | 
| 
      
 571 
     | 
    
         
            +
                  route do |r|
         
     | 
| 
      
 572 
     | 
    
         
            +
                    render(:inline=>'<%= "<>" %> <%== "<>" %><%= "<>" if false %>')
         
     | 
| 
      
 573 
     | 
    
         
            +
                  end
         
     | 
| 
      
 574 
     | 
    
         
            +
                end
         
     | 
| 
      
 575 
     | 
    
         
            +
             
     | 
| 
      
 576 
     | 
    
         
            +
                body.must_equal '<> <>'
         
     | 
| 
      
 577 
     | 
    
         
            +
              end
         
     | 
| 
      
 578 
     | 
    
         
            +
             
     | 
| 
      
 579 
     | 
    
         
            +
              it "should allow for per-branch escaping via set_view options" do
         
     | 
| 
      
 580 
     | 
    
         
            +
                app(:bare) do
         
     | 
| 
      
 581 
     | 
    
         
            +
                  plugin :render, :escape=>:erubi
         
     | 
| 
      
 582 
     | 
    
         
            +
                  plugin :view_options
         
     | 
| 
      
 583 
     | 
    
         
            +
             
     | 
| 
      
 584 
     | 
    
         
            +
                  route do |r|
         
     | 
| 
      
 585 
     | 
    
         
            +
                    set_view_options :template_opts=>{:escape=>false}
         
     | 
| 
      
 586 
     | 
    
         
            +
                    r.is 'a' do
         
     | 
| 
      
 587 
     | 
    
         
            +
                      set_view_options :template_opts=>{:engine_class=>render_opts[:template_opts][:engine_class]}
         
     | 
| 
      
 588 
     | 
    
         
            +
                      render(:inline=>'<%= "<>" %>')
         
     | 
| 
      
 589 
     | 
    
         
            +
                    end
         
     | 
| 
      
 590 
     | 
    
         
            +
                    render(:inline=>'<%= "<>" %>')
         
     | 
| 
      
 591 
     | 
    
         
            +
                  end
         
     | 
| 
      
 592 
     | 
    
         
            +
                end
         
     | 
| 
      
 593 
     | 
    
         
            +
             
     | 
| 
      
 594 
     | 
    
         
            +
                body('/a').must_equal '<>'
         
     | 
| 
      
 595 
     | 
    
         
            +
                body.must_equal '<>'
         
     | 
| 
      
 596 
     | 
    
         
            +
              end
         
     | 
| 
      
 597 
     | 
    
         
            +
            end
         
     | 
| 
      
 598 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: roda
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.20.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Jeremy Evans
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2016- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2016-11-13 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: rack
         
     | 
| 
         @@ -80,6 +80,20 @@ dependencies: 
     | 
|
| 
       80 
80 
     | 
    
         
             
                - - ">="
         
     | 
| 
       81 
81 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
82 
     | 
    
         
             
                    version: '0'
         
     | 
| 
      
 83 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 84 
     | 
    
         
            +
              name: erubi
         
     | 
| 
      
 85 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 86 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 87 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 88 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 89 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
      
 90 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 91 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 92 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 93 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 94 
     | 
    
         
            +
                - - ">="
         
     | 
| 
      
 95 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 96 
     | 
    
         
            +
                    version: '0'
         
     | 
| 
       83 
97 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
98 
     | 
    
         
             
              name: haml
         
     | 
| 
       85 
99 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
         @@ -185,6 +199,7 @@ extra_rdoc_files: 
     | 
|
| 
       185 
199 
     | 
    
         
             
            - doc/release_notes/2.17.0.txt
         
     | 
| 
       186 
200 
     | 
    
         
             
            - doc/release_notes/2.18.0.txt
         
     | 
| 
       187 
201 
     | 
    
         
             
            - doc/release_notes/2.19.0.txt
         
     | 
| 
      
 202 
     | 
    
         
            +
            - doc/release_notes/2.20.0.txt
         
     | 
| 
       188 
203 
     | 
    
         
             
            files:
         
     | 
| 
       189 
204 
     | 
    
         
             
            - CHANGELOG
         
     | 
| 
       190 
205 
     | 
    
         
             
            - MIT-LICENSE
         
     | 
| 
         @@ -208,6 +223,7 @@ files: 
     | 
|
| 
       208 
223 
     | 
    
         
             
            - doc/release_notes/2.18.0.txt
         
     | 
| 
       209 
224 
     | 
    
         
             
            - doc/release_notes/2.19.0.txt
         
     | 
| 
       210 
225 
     | 
    
         
             
            - doc/release_notes/2.2.0.txt
         
     | 
| 
      
 226 
     | 
    
         
            +
            - doc/release_notes/2.20.0.txt
         
     | 
| 
       211 
227 
     | 
    
         
             
            - doc/release_notes/2.3.0.txt
         
     | 
| 
       212 
228 
     | 
    
         
             
            - doc/release_notes/2.4.0.txt
         
     | 
| 
       213 
229 
     | 
    
         
             
            - doc/release_notes/2.5.0.txt
         
     |