rails-multi_block_helpers 0.0.1
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 +15 -0
- data/lib/rails/multi_block_helpers.rb +4 -0
- data/lib/rails/multi_block_helpers/capture_section_helper.rb +19 -0
- data/lib/rails/multi_block_helpers/railtie.rb +7 -0
- data/lib/rails/multi_block_helpers/switch_block.rb +48 -0
- data/lib/rails/multi_block_helpers/version.rb +5 -0
- metadata +48 -0
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ZWY1MzgwODQwOWFmNTRjNzNhOGRiNzM1ZjM3MzJkOTBkZGRhMjliMA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
NjcwMzYxYWEwZDRkNzhlN2QzYTFlNjhjMzdjOTVmMzA1MTFiNTViMg==
|
7
|
+
SHA512:
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
M2VjNDdiNDczMTFjNGZlMTlkZDg1ZGE5NGNiNzYxY2Y4MzEwZTVhOGE1ZTQz
|
10
|
+
MzE2NjE4ZGU1MDdlYWYwYWQwYzY3M2YzYmEzYTg0MjZhMjZhYjIyY2QxYmFj
|
11
|
+
YmZhY2I4ZDk0NzcxZDBlOGQ3OGRkMmQzOGRkNDgwYWIzMDZlMTA=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ODQ2ODczNWUxYTA2NjAxM2Q0MTRmM2E3YTE0M2U2MWYwNGRlOTE4ZTliODRm
|
14
|
+
YTUyNTFiYjgzODg2OTU4OTllOTVhMTA2OWEwZTk4ZGZlMjAxNzdlZmNiMDdh
|
15
|
+
NTI2ZDZmODkxMTg4ODVjZjUwODQ5YjY0YWE2MGQwZmQ2ODIxNTA=
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Rails
|
2
|
+
module MultiBlockHelpers
|
3
|
+
module CaptureSectionHelper
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
|
6
|
+
included do
|
7
|
+
include SwitchBlock
|
8
|
+
end
|
9
|
+
|
10
|
+
def capture_section(section, *args)
|
11
|
+
value = nil
|
12
|
+
buffer = with_output_buffer { value = yield it_to(section) }
|
13
|
+
if string = buffer.presence || value and string.is_a?(String)
|
14
|
+
ERB::Util.html_escape string
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Courtesy of Roger Braun
|
2
|
+
# http://codebrawl.com/contests/methods-taking-multiple-blocks
|
3
|
+
# https://gist.github.com/rogerbraun/fae73df4b7063ab43c10
|
4
|
+
|
5
|
+
require 'blankslate'
|
6
|
+
|
7
|
+
module SwitchBlock
|
8
|
+
|
9
|
+
class NothingExecutedError < Exception;
|
10
|
+
end
|
11
|
+
|
12
|
+
class BlockSwitcher < BlankSlate
|
13
|
+
|
14
|
+
def initialize(x, args)
|
15
|
+
@x = x
|
16
|
+
@args = args
|
17
|
+
@ret = nil
|
18
|
+
@called = false
|
19
|
+
@callees = []
|
20
|
+
end
|
21
|
+
|
22
|
+
def ensure
|
23
|
+
raise NothingExecutedError, "Nothing got executed! Expected one of #{@callees.inspect}, but only got #{@x}" if not @called
|
24
|
+
end
|
25
|
+
|
26
|
+
def method_missing(method, *args, &block)
|
27
|
+
if (method.downcase == @x.to_sym.downcase or method == :always) or (@called == false and method == :else) then
|
28
|
+
@called = true
|
29
|
+
if args.size > 0 then
|
30
|
+
@ret = args.first.call(*@args)
|
31
|
+
else
|
32
|
+
@ret = block.call(*@args)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
# For error reporting
|
36
|
+
@callees << method
|
37
|
+
@callees.uniq!
|
38
|
+
# Always return something meaningful
|
39
|
+
@ret
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def it_to(x, *args)
|
46
|
+
BlockSwitcher.new(x, args)
|
47
|
+
end
|
48
|
+
end
|
metadata
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rails-multi_block_helpers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- stevo
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-02-20 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description: Gem allows defining helpers that accept multiple blocks
|
14
|
+
email:
|
15
|
+
- b.kosmowski@selleo.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/rails/multi_block_helpers.rb
|
21
|
+
- lib/rails/multi_block_helpers/capture_section_helper.rb
|
22
|
+
- lib/rails/multi_block_helpers/railtie.rb
|
23
|
+
- lib/rails/multi_block_helpers/switch_block.rb
|
24
|
+
- lib/rails/multi_block_helpers/version.rb
|
25
|
+
homepage: https://github.com/Selleo/rails-multi_block_helpers
|
26
|
+
licenses: []
|
27
|
+
metadata: {}
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
requirements:
|
34
|
+
- - ! '>='
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '0'
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ! '>='
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '0'
|
42
|
+
requirements: []
|
43
|
+
rubyforge_project: ! '[none]'
|
44
|
+
rubygems_version: 2.1.10
|
45
|
+
signing_key:
|
46
|
+
specification_version: 4
|
47
|
+
summary: Gem allows defining helpers that accept multiple blocks
|
48
|
+
test_files: []
|