curly-templates 2.4.1 → 2.5.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.md +13 -0
- data/README.md +1 -0
- data/curly-templates.gemspec +2 -2
- data/lib/curly.rb +1 -1
- data/lib/curly/presenter.rb +18 -7
- data/spec/presenter_spec.rb +19 -1
- metadata +2 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 771f76ff2fc6fc4e3947ee8a205897a9930a02cc
         | 
| 4 | 
            +
              data.tar.gz: 98c36121c84ad15081e32868ca1c8613365ea6ed
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 9893fb5b0c90b082c462128dd4bbd889d375f2913c703ae52b9d97cdb6dcf2de54f92e08032d8efd1007815a50672820bc5902a71fc5001723213719575bac29
         | 
| 7 | 
            +
              data.tar.gz: 6ba0441db8486cdf248debd4e9d7f95d5ef8eafb2cbb53153684b5367679ada012206b289285a8c65eb94455c3a33b91209457814cf46829faf76f77f179bfc3
         | 
    
        data/CHANGELOG.md
    CHANGED
    
    | @@ -1,5 +1,18 @@ | |
| 1 1 | 
             
            ### Unreleased
         | 
| 2 2 |  | 
| 3 | 
            +
            ### Curly 2.5.0 (May 19, 2015)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            * Allow passing a block as the `default:` option to `presents`.
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              ```ruby
         | 
| 8 | 
            +
              class CommentPresenter < Curly::Presenter
         | 
| 9 | 
            +
                presents :comment
         | 
| 10 | 
            +
                presents(:author) { @comment.author }
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
              ```
         | 
| 13 | 
            +
              
         | 
| 14 | 
            +
              *Steven Davidovitz & Jeremy Rodi*
         | 
| 15 | 
            +
             | 
| 3 16 | 
             
            ### Curly 2.4.0 (February 24, 2015)
         | 
| 4 17 |  | 
| 5 18 | 
             
            * Add an `exposes_helper` class methods to Curly::Presenter. This allows exposing
         | 
    
        data/README.md
    CHANGED
    
    | @@ -702,6 +702,7 @@ Thanks to [Zendesk](http://zendesk.com/) for sponsoring the work on Curly. | |
| 702 702 | 
             
            - Alisson Cavalcante Agiani ([@thelinuxlich](https://github.com/thelinuxlich))
         | 
| 703 703 | 
             
            - Łukasz Niemier ([@hauleth](https://github.com/hauleth))
         | 
| 704 704 | 
             
            - Cristian Planas ([@Gawyn](https://github.com/Gawyn))
         | 
| 705 | 
            +
            - Steven Davidovitz ([@steved](https://github.com/steved))
         | 
| 705 706 |  | 
| 706 707 |  | 
| 707 708 | 
             
            Build Status
         | 
    
        data/curly-templates.gemspec
    CHANGED
    
    | @@ -4,8 +4,8 @@ Gem::Specification.new do |s| | |
| 4 4 | 
             
              s.rubygems_version = '1.3.5'
         | 
| 5 5 |  | 
| 6 6 | 
             
              s.name              = 'curly-templates'
         | 
| 7 | 
            -
              s.version           = '2. | 
| 8 | 
            -
              s.date              = '2015- | 
| 7 | 
            +
              s.version           = '2.5.0'
         | 
| 8 | 
            +
              s.date              = '2015-05-19'
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.summary     = "Free your views!"
         | 
| 11 11 | 
             
              s.description = "A view layer for your Rails apps that separates structure and logic."
         | 
    
        data/lib/curly.rb
    CHANGED
    
    
    
        data/lib/curly/presenter.rb
    CHANGED
    
    | @@ -48,7 +48,11 @@ module Curly | |
| 48 48 | 
             
                  self.class.presented_names.each do |name|
         | 
| 49 49 | 
             
                    value = options.fetch(name) do
         | 
| 50 50 | 
             
                      default_values.fetch(name) do
         | 
| 51 | 
            -
                         | 
| 51 | 
            +
                        block = default_blocks.fetch(name) do
         | 
| 52 | 
            +
                          raise ArgumentError.new("required identifier `#{name}` missing")
         | 
| 53 | 
            +
                        end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
                        instance_exec(name, &block)
         | 
| 52 56 | 
             
                      end
         | 
| 53 57 | 
             
                    end
         | 
| 54 58 |  | 
| @@ -281,17 +285,23 @@ module Curly | |
| 281 285 | 
             
                    [name, version, dependency_cache_keys].flatten.join("/")
         | 
| 282 286 | 
             
                  end
         | 
| 283 287 |  | 
| 284 | 
            -
                  def presents(*args)
         | 
| 285 | 
            -
                    options  | 
| 288 | 
            +
                  def presents(*args, **options, &block)
         | 
| 289 | 
            +
                    if options.key?(:default) && block_given?
         | 
| 290 | 
            +
                      raise ArgumentError,  "Cannot provide both `default:` and block"
         | 
| 291 | 
            +
                    end
         | 
| 286 292 |  | 
| 287 293 | 
             
                    self.presented_names += args.map(&:to_s)
         | 
| 288 294 |  | 
| 289 295 | 
             
                    if options.key?(:default)
         | 
| 290 | 
            -
                       | 
| 291 | 
            -
                         | 
| 296 | 
            +
                      args.each do |arg|
         | 
| 297 | 
            +
                        self.default_values = default_values.merge(arg.to_s => options[:default]).freeze
         | 
| 292 298 | 
             
                      end
         | 
| 299 | 
            +
                    end
         | 
| 293 300 |  | 
| 294 | 
            -
             | 
| 301 | 
            +
                    if block_given?
         | 
| 302 | 
            +
                      args.each do |arg|
         | 
| 303 | 
            +
                        self.default_blocks = default_blocks.merge(arg.to_s => block).freeze
         | 
| 304 | 
            +
                      end
         | 
| 295 305 | 
             
                    end
         | 
| 296 306 | 
             
                  end
         | 
| 297 307 |  | 
| @@ -308,10 +318,11 @@ module Curly | |
| 308 318 |  | 
| 309 319 | 
             
                private
         | 
| 310 320 |  | 
| 311 | 
            -
                class_attribute :presented_names, :default_values
         | 
| 321 | 
            +
                class_attribute :presented_names, :default_values, :default_blocks
         | 
| 312 322 |  | 
| 313 323 | 
             
                self.presented_names = [].freeze
         | 
| 314 324 | 
             
                self.default_values = {}.freeze
         | 
| 325 | 
            +
                self.default_blocks = {}.freeze
         | 
| 315 326 |  | 
| 316 327 | 
             
                delegate :render, to: :@_context
         | 
| 317 328 |  | 
    
        data/spec/presenter_spec.rb
    CHANGED
    
    | @@ -11,8 +11,11 @@ describe Curly::Presenter do | |
| 11 11 |  | 
| 12 12 | 
             
                presents :midget, :clown, default: nil
         | 
| 13 13 | 
             
                presents :elephant, default: "Dumbo"
         | 
| 14 | 
            +
                presents :puma, default: -> { 'block' }
         | 
| 15 | 
            +
                presents(:lion) { @elephant.upcase }
         | 
| 16 | 
            +
                presents(:something) { self }
         | 
| 14 17 |  | 
| 15 | 
            -
                attr_reader :midget, :clown, :elephant
         | 
| 18 | 
            +
                attr_reader :midget, :clown, :elephant, :puma, :lion, :something
         | 
| 16 19 | 
             
              end
         | 
| 17 20 |  | 
| 18 21 | 
             
              class FrenchCircusPresenter < CircusPresenter
         | 
| @@ -49,10 +52,25 @@ describe Curly::Presenter do | |
| 49 52 | 
             
                  # Make sure subclasses can change default values.
         | 
| 50 53 | 
             
                  french_presenter = FrenchCircusPresenter.new(context)
         | 
| 51 54 | 
             
                  french_presenter.elephant.should == "Babar"
         | 
| 55 | 
            +
                  french_presenter.lion.should == 'BABAR'
         | 
| 56 | 
            +
                  french_presenter.puma.should be_a Proc
         | 
| 52 57 |  | 
| 53 58 | 
             
                  # The subclass shouldn't change the superclass' defaults, though.
         | 
| 54 59 | 
             
                  presenter = CircusPresenter.new(context)
         | 
| 55 60 | 
             
                  presenter.elephant.should == "Dumbo"
         | 
| 61 | 
            +
                  presenter.lion.should == 'DUMBO'
         | 
| 62 | 
            +
                  presenter.puma.should be_a Proc
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                it "doesn't call a block if given as a value for identifiers" do
         | 
| 66 | 
            +
                  lion = proc { 'Simba' }
         | 
| 67 | 
            +
                  presenter = CircusPresenter.new(context, lion: lion)
         | 
| 68 | 
            +
                  presenter.lion.should be lion
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                it "calls default blocks in the instance of the presenter" do
         | 
| 72 | 
            +
                  presenter = CircusPresenter.new(context)
         | 
| 73 | 
            +
                  presenter.something.should be presenter
         | 
| 56 74 | 
             
                end
         | 
| 57 75 | 
             
              end
         | 
| 58 76 |  | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: curly-templates
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 2. | 
| 4 | 
            +
              version: 2.5.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Daniel Schierbeck
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-05-19 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: actionpack
         |