erbh 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +24 -0
  3. data/erbh.gemspec +1 -1
  4. data/lib/erbh.rb +13 -1
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 43de1298fd45161b5d945c7d5b5fe79ec7ea8f15
4
- data.tar.gz: 80b9a5ab3e7b97465ce5402625505272ab80a536
3
+ metadata.gz: 3365c9260853a05f9f9e69d4c1aee71475705608
4
+ data.tar.gz: 5d8499f8c432d2fffe5ce2add7a4ac23b9ce7514
5
5
  SHA512:
6
- metadata.gz: 6049c0f5c3a4ef613a3eadbc6c145a088b767039cbba4d0e86ab42e0dba45803c7dc09b59b4d52364d9a85f67e418936c8301b32c5fe3eec4b4eaadcb27c6420
7
- data.tar.gz: e3add65547cdff12ad4908c9c46877d01c5b86dfd636f8678a874f3678bdd983d3731df36dcae14e6515c4f9dff85e9f3a12a410d9e02ace632bd187068ddee1
6
+ metadata.gz: 18fc7f6b4249c8229adc6c90b0b9fb99404432e9d8c88eb68fbb7b0bb666815d365b44f5e565fa3325610532fecf7297c53cac0865f192b65a72f06d14c3d971
7
+ data.tar.gz: dc219ac729cbd8af9c80206895b272070358a6185a5e1093a7b90ce07ae2032ea8c659918b7837130b602c8dfaab7104cf9ce6fcdf2e8a51404641857fc9bb28
data/README.md CHANGED
@@ -36,3 +36,27 @@ erbh(<<-EOS, {foo: 1..3}, trim_mode: '-')
36
36
  EOS
37
37
  #=> "1\n2\n3\n"
38
38
  ```
39
+
40
+ ### Define helper method
41
+
42
+ ```ruby
43
+ require 'erbh'
44
+ include ERBh
45
+
46
+ ERBh.define_method(:concat) {|a, b| a + b }
47
+
48
+ erbh('<%= concat @foo, @bar %>', foo: 'a', bar: 'b')
49
+ #=> "ab"
50
+
51
+ ERBh.define_method(:chomp) do |obj|
52
+ if obj.nil?
53
+ @_erbout.sub!(/,\s*\z/, '')
54
+ ''
55
+ else
56
+ obj
57
+ end
58
+ end
59
+
60
+ erbh('100, <%= chomp @foo %>', foo: nil)
61
+ #=> "100"
62
+ ```
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  Gem::Specification.new do |spec|
3
3
  spec.name = 'erbh'
4
- spec.version = '0.1.1'
4
+ spec.version = '0.1.2'
5
5
  spec.authors = ['Genki Sugawara']
6
6
  spec.email = ['sugawara@cookpad.com']
7
7
 
@@ -1,6 +1,12 @@
1
1
  require 'erb'
2
2
 
3
3
  module ERBh
4
+ @@methods = {}
5
+
6
+ def self.define_method(name, &block)
7
+ @@methods[name] = block
8
+ end
9
+
4
10
  def erbh(str, variables = {}, options = {})
5
11
  options = {
6
12
  :safe_level => nil,
@@ -14,8 +20,14 @@ module ERBh
14
20
  context.instance_variable_set("@#{name}", value)
15
21
  end
16
22
 
23
+ class << context
24
+ @@methods.each do |name, block|
25
+ define_method(name, &block)
26
+ end
27
+ end
28
+
17
29
  context.instance_eval do
18
- erb = ERB.new(str, *options.values_at(:safe_level, :trim_mode, :eoutvar))
30
+ erb = ERB.new("<% @#{options[:eoutvar]} = #{options[:eoutvar]} %>" + str, *options.values_at(:safe_level, :trim_mode, :eoutvar))
19
31
  erb.result(binding)
20
32
  end
21
33
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erbh
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-10 00:00:00.000000000 Z
11
+ date: 2016-04-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler