erb_component 0.1.0 → 0.1.5

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
2
  SHA256:
3
- metadata.gz: 223e207e1ff4bdd26ad16c9fda8ff8b804506ced105a6cf8242e7c872ba2780d
4
- data.tar.gz: 318703247572e8a03b39a414287f5c6430fc65c5f4ee33402a79ea479242b4e7
3
+ metadata.gz: 9e48ccbfc0ce46abcce8ecedab8dd8b56e64254b242ba52e919429c4aba0e362
4
+ data.tar.gz: c976659b689ad129f06160d1423af4f4ad168209af878c81cf647f4c0257b9b8
5
5
  SHA512:
6
- metadata.gz: 4d272a5d9824698fbf27fdc85519061f433cb1fc36a1ad27bb3c6723cadc83dbde7bbb0693493a34b17047c7838a5f42fbb2e2f308ac5edf292becb7ea049d2d
7
- data.tar.gz: 5e2f784830f8fc862a1a326f8d6af5dcff7066ece78a161a546db7cec25ec2df7f86489d361b009d5c5f4dcc3447f15d56e29792117a94e69f344228b53362dc
6
+ metadata.gz: df51f06dd8f67c0dbeacbee4267de9107268b29b4b7bfbedaae273774924940d5c3f5de767e8c31e9fa2f6157a0d5dae80e363ca9cabaff62dbeaabbc233b190
7
+ data.tar.gz: 0b54f5577b6ee16e915dd33cd0931d950bd8726a59091c0e2dc471cc327b3af4df4eb3f88fe968a6ad61c32ca9467e4b7dabbd492f3a9c93255d74ca185d03d9
@@ -2,41 +2,62 @@ require "erb_component/version"
2
2
  require 'erb'
3
3
 
4
4
  class ErbComponent
5
- class Error < StandardError; end
5
+ class Error < StandardError;
6
+ end
7
+
8
+ attr_reader :req, :parent
6
9
 
7
- attr_reader :params, :path, :parent
10
+ def initialize(req)
11
+ @req = req
12
+ @parent = self.class.superclass == ErbComponent ? nil : self.class.superclass.new(req)
13
+ end
8
14
 
9
- def initialize(opts = {})
10
- @params = opts[:params] || {}
11
- @path = opts[:path]
12
- @parent = self.class.superclass == ErbComponent ? nil : self.class.superclass.new(opts)
15
+ def path
16
+ @req.path
17
+ end
18
+
19
+ def params
20
+ @req.params
13
21
  end
14
22
 
15
23
  def render
16
24
  str = ERB.new(template).result(binding)
17
- parent ? parent.render.gsub("{{VIEW}}", str) : str
25
+ parent ? parent.render.gsub("{{VIEW}}", str).gsub("{{view}}", str) : str
18
26
  end
19
27
 
20
28
  def self.render(opts = {})
21
29
  new(opts).render
22
30
  end
23
31
 
32
+ def template_file_path
33
+ @template_file_path ||= begin
34
+ file_name = "#{self.class.name.underscore}.erb"
35
+ if File.exists? "components/#{file_name}"
36
+ return "components/#{file_name}"
37
+ elsif File.exists? "pages/#{file_name}"
38
+ return "pages/#{file_name}"
39
+ else
40
+ nil
41
+ end
42
+ end
43
+ end
44
+
24
45
  def template
25
- a = "components/#{self.class.name.underscore}.erb"
26
- return File.read a if File.exists? a
27
- fail 'not found'
46
+ if template_file_path
47
+ File.read template_file_path
48
+ end
49
+ fail "not found: #{template_file_path}"
28
50
  end
29
51
 
30
52
  def method_missing(m, *args, &block)
31
- possible_const = "#{self.class}::#{m}"
32
- clazz = if Kernel.const_defined?(possible_const)
33
- Kernel.const_get possible_const
34
- else
35
- Kernel.const_get m.to_s
36
- end
53
+ m = m.to_s
54
+ str = Kernel.const_defined?("#{self.class}::#{m}") ? "#{self.class}::#{m}" : m
55
+ clazz = Kernel.const_get(str)
37
56
  opts = {path: path, params: params}
38
57
  opts.merge!(args[0]) if args.size > 0
39
58
  component = clazz.new(opts)
40
59
  component.render
60
+ rescue
61
+ super
41
62
  end
42
63
  end
@@ -1,3 +1,3 @@
1
1
  class ErbComponent
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: erb_component
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arthur Karganyan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-11-18 00:00:00.000000000 Z
11
+ date: 2019-11-20 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: React-style front-end components but for ERB?
14
14
  email: