erb_component 0.1.0 → 0.1.5

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 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: