erbh 0.1.1 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 43de1298fd45161b5d945c7d5b5fe79ec7ea8f15
4
- data.tar.gz: 80b9a5ab3e7b97465ce5402625505272ab80a536
2
+ SHA256:
3
+ metadata.gz: 98cbbc2921e1e7a2aefba8a5d244bb78812f3ee80867a42d0cc48adec28bc018
4
+ data.tar.gz: 1ba181caf6958354559daec2d235477a8c9c9c5684ea0ca77d6823bd482f6a57
5
5
  SHA512:
6
- metadata.gz: 6049c0f5c3a4ef613a3eadbc6c145a088b767039cbba4d0e86ab42e0dba45803c7dc09b59b4d52364d9a85f67e418936c8301b32c5fe3eec4b4eaadcb27c6420
7
- data.tar.gz: e3add65547cdff12ad4908c9c46877d01c5b86dfd636f8678a874f3678bdd983d3731df36dcae14e6515c4f9dff85e9f3a12a410d9e02ace632bd187068ddee1
6
+ metadata.gz: d8beb88372c4dbb22116cb8e86e87d45d511081df7689792c1795427f5210e37a3b48369bc7eb83710b181a4bf4b2bd4b3f48a93490a39c72cc4abd36ff9cc76
7
+ data.tar.gz: f034c69fade99a81fdd91e876f04b6a11f18b2173eb9f02fff3af0c74d3697b9732821dfeaee508544eb6af7de8788a5679d7a2b961a37e4889d51a77151b7cf
@@ -0,0 +1,29 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ build:
9
+ runs-on: ubuntu-latest
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ ruby:
14
+ - "2.6"
15
+ - "2.7"
16
+ - "3.0"
17
+ - "3.1"
18
+ env:
19
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
20
+ steps:
21
+ - uses: actions/checkout@v2
22
+ - uses: ruby/setup-ruby@v1
23
+ with:
24
+ ruby-version: ${{ matrix.ruby }}
25
+ bundler-cache: true
26
+ - name: Run tests
27
+ run: ${{ matrix.env }} bundle exec rake
28
+ env:
29
+ BUNDLE_GEMFILE: ${{ matrix.gemfile }}
data/.rubocop.yml ADDED
@@ -0,0 +1,12 @@
1
+ AllCops:
2
+ Exclude:
3
+ - "gemfiles/**/*"
4
+ - "vendor/bundle/**/*"
5
+ TargetRubyVersion: 2.6
6
+ NewCops: enable
7
+ Metrics/AbcSize:
8
+ Enabled: false
9
+ Metrics/BlockLength:
10
+ Enabled: false
11
+ Metrics/MethodLength:
12
+ Enabled: false
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in erbh.gemspec
data/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Simple ERB helper.
4
4
 
5
- [![Build Status](https://travis-ci.org/winebarrel/erbh.svg?branch=master)](https://travis-ci.org/winebarrel/erbh)
5
+ [![test](https://github.com/winebarrel/erbh/actions/workflows/test.yml/badge.svg)](https://github.com/winebarrel/erbh/actions/workflows/test.yml)
6
6
 
7
7
  ## Installation
8
8
 
@@ -29,10 +29,34 @@ include ERBh
29
29
  erbh('<%= @foo %>, <%= @bar %>', foo: 100, bar: 'zoo')
30
30
  #=> "100, zoo"
31
31
 
32
- erbh(<<-EOS, {foo: 1..3}, trim_mode: '-')
33
- <%- @foo.each do |i| -%>
32
+ erbh(<<-EOS, {foo: 1..3}, trim_mode: '%')
33
+ % @foo.each do |i|
34
34
  <%= i %>
35
- <%- end -%>
35
+ % end
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
+ ```
data/Rakefile CHANGED
@@ -1,6 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
5
+ require 'rubocop/rake_task'
3
6
 
4
7
  RSpec::Core::RakeTask.new(:spec)
5
8
 
6
- task :default => :spec
9
+ RuboCop::RakeTask.new do |task|
10
+ task.options = %w[-c .rubocop.yml]
11
+ end
12
+
13
+ task default: %i[rubocop spec]
data/erbh.gemspec CHANGED
@@ -1,12 +1,13 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  Gem::Specification.new do |spec|
3
4
  spec.name = 'erbh'
4
- spec.version = '0.1.1'
5
+ spec.version = '0.2.1'
5
6
  spec.authors = ['Genki Sugawara']
6
- spec.email = ['sugawara@cookpad.com']
7
+ spec.email = ['sugawara@winebarrel.jp']
7
8
 
8
- spec.summary = %q{Simple ERB helper.}
9
- spec.description = %q{Simple ERB helper.}
9
+ spec.summary = 'Simple ERB helper.'
10
+ spec.description = 'Simple ERB helper.'
10
11
  spec.homepage = 'https://github.com/winebarrel/erbh'
11
12
  spec.license = 'MIT'
12
13
 
@@ -15,7 +16,14 @@ Gem::Specification.new do |spec|
15
16
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
16
17
  spec.require_paths = ['lib']
17
18
 
19
+ spec.required_ruby_version = '>= 2.6'
20
+
18
21
  spec.add_development_dependency 'bundler'
19
22
  spec.add_development_dependency 'rake'
20
23
  spec.add_development_dependency 'rspec', '~> 3.0'
24
+ spec.add_development_dependency 'rubocop', '1.24.1'
25
+ spec.add_development_dependency 'rubocop-rake'
26
+ spec.add_development_dependency 'rubocop-rspec'
27
+
28
+ spec.metadata['rubygems_mfa_required'] = 'true'
21
29
  end
data/lib/erbh.rb CHANGED
@@ -1,22 +1,44 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'erb'
2
4
 
3
- module ERBh
4
- def erbh(str, variables = {}, options = {})
5
- options = {
6
- :safe_level => nil,
7
- :trim_mode => nil,
8
- :eoutvar => '_erbout',
9
- }.merge(options)
5
+ module ERBh # rubocop:disable Style/Documentation
6
+ @methods = {}
7
+
8
+ @default_options = {
9
+ trim_mode: '-',
10
+ eoutvar: '_erbout'
11
+ }
12
+
13
+ def self.define_method(name, &block)
14
+ @methods[name] = block
15
+ end
16
+
17
+ def self.default_options
18
+ @default_options
19
+ end
20
+
21
+ def self.erbh_methods
22
+ @methods
23
+ end
10
24
 
25
+ def erbh(str, variables = {}, options = {})
26
+ options = ERBh.default_options.merge(options)
11
27
  context = Object.new
12
28
 
13
29
  variables.each do |name, value|
14
30
  context.instance_variable_set("@#{name}", value)
15
31
  end
16
32
 
33
+ class << context
34
+ ERBh.erbh_methods.each do |name, block|
35
+ define_method(name, block)
36
+ end
37
+ end
38
+
17
39
  context.instance_eval do
18
- erb = ERB.new(str, *options.values_at(:safe_level, :trim_mode, :eoutvar))
19
- erb.result(binding)
40
+ erb = ERB.new("<% @#{options[:eoutvar]} = #{options[:eoutvar]} %>\n" + str, **options)
41
+ erb.result(binding).sub(/\A\n/, '')
20
42
  end
21
43
  end
22
44
  module_function :erbh
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.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Genki Sugawara
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-04-10 00:00:00.000000000 Z
11
+ date: 2022-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,29 +52,71 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rubocop
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 1.24.1
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 1.24.1
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop-rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-rspec
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'
55
97
  description: Simple ERB helper.
56
98
  email:
57
- - sugawara@cookpad.com
99
+ - sugawara@winebarrel.jp
58
100
  executables: []
59
101
  extensions: []
60
102
  extra_rdoc_files: []
61
103
  files:
104
+ - ".github/workflows/test.yml"
62
105
  - ".gitignore"
63
106
  - ".rspec"
64
- - ".travis.yml"
107
+ - ".rubocop.yml"
65
108
  - Gemfile
66
109
  - LICENSE.txt
67
110
  - README.md
68
111
  - Rakefile
69
- - bin/console
70
- - bin/setup
71
112
  - erbh.gemspec
72
113
  - lib/erbh.rb
73
114
  homepage: https://github.com/winebarrel/erbh
74
115
  licenses:
75
116
  - MIT
76
- metadata: {}
77
- post_install_message:
117
+ metadata:
118
+ rubygems_mfa_required: 'true'
119
+ post_install_message:
78
120
  rdoc_options: []
79
121
  require_paths:
80
122
  - lib
@@ -82,16 +124,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
124
  requirements:
83
125
  - - ">="
84
126
  - !ruby/object:Gem::Version
85
- version: '0'
127
+ version: '2.6'
86
128
  required_rubygems_version: !ruby/object:Gem::Requirement
87
129
  requirements:
88
130
  - - ">="
89
131
  - !ruby/object:Gem::Version
90
132
  version: '0'
91
133
  requirements: []
92
- rubyforge_project:
93
- rubygems_version: 2.4.5.1
94
- signing_key:
134
+ rubygems_version: 3.2.32
135
+ signing_key:
95
136
  specification_version: 4
96
137
  summary: Simple ERB helper.
97
138
  test_files: []
data/.travis.yml DELETED
@@ -1,12 +0,0 @@
1
- sudo: false
2
- language: ruby
3
- cache: bundler
4
- rvm:
5
- - 2.0.0
6
- - 2.1.8
7
- - 2.2.4
8
- - 2.3.0
9
- before_install:
10
- - gem install bundler
11
- script:
12
- - bundle exec rake
data/bin/console DELETED
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "bundler/setup"
4
- require "erbh"
5
-
6
- # You can add fixtures and/or initialization code here to make experimenting
7
- # with your gem easier. You can also use a different console, if you like.
8
-
9
- # (If you use this, don't forget to add pry to your Gemfile!)
10
- # require "pry"
11
- # Pry.start
12
-
13
- require "irb"
14
- IRB.start
data/bin/setup DELETED
@@ -1,8 +0,0 @@
1
- #!/usr/bin/env bash
2
- set -euo pipefail
3
- IFS=$'\n\t'
4
- set -vx
5
-
6
- bundle install
7
-
8
- # Do any other automated setup that you need to do here