erb_component 0.1.8 → 0.1.9

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: d4becb713a71333702f1e9666fca7490a928b957269cf5129fd78e6670d73edd
4
- data.tar.gz: e74b2838a3144406b64f07807d40da29bd52d1a833bcec7e9525c028941fa298
3
+ metadata.gz: e662fbd72853e9bfd5788ceb66debf03d28d8bb13dcbd4ed18142dc26d29332f
4
+ data.tar.gz: 0c3d0e0435280f432bc54bb14c11b1cda6e460fb678e23b53e49e6ed1ea83f1b
5
5
  SHA512:
6
- metadata.gz: 294198283f9d87a012b24fb7ae8e5d62ee1769180478170547daeed9f07069c76160801076c5b8247d20333aac57c2fb277a1a9fc9858e9c57691a8e1dc98dce
7
- data.tar.gz: 18fec35a95417996d5b9e3590186acd3540e69c2ddedee49409d17ee1cdd5c842cce39bec3d487bba7011bf9b178686e988f0bb249e15136ad13c1c5a1c70c19
6
+ metadata.gz: 6357e20fb5f55c3e4d6813ff0fb937fba43faa0b15c5fe6cfb340ad6b427e032bee671a1cb0828dd019c658b26811e4738a2510c2900bb9334838847110dedc0
7
+ data.tar.gz: 71bceefd23ee82ee445bf4ec81d4cd6852fd2476b26c9037639360792b523cbd100d83e873b180df221d19a9aa915004d9f67c79046305843dff1160e66b2107
@@ -1,7 +1,10 @@
1
1
  require "erb_component/version"
2
+ require "erb_component/req_tools"
2
3
  require 'erb'
3
4
 
4
5
  class ErbComponent
6
+ include ReqTools
7
+
5
8
  class Error < StandardError;
6
9
  end
7
10
 
@@ -19,34 +22,6 @@ class ErbComponent
19
22
  end
20
23
  end
21
24
 
22
- def path
23
- @req.path
24
- end
25
-
26
- def path_hash
27
- @path_hash ||= begin
28
- split = path.split('/')
29
- split.shift
30
-
31
- res = {}
32
- split.size.times do |i|
33
- if split[i].to_i.to_s == split[i]
34
- res[split[i - 1].singularize + "_id"] = split[i]
35
- end
36
- end
37
- res.with_indifferent_access
38
- end
39
- end
40
-
41
- def params
42
- @params ||= begin
43
- res = @req.params
44
- res.merge!(JSON.parse(req.body.read)) if req.post? || req.put? || req.patch?
45
- res.merge!(path_hash)
46
- res.with_indifferent_access
47
- end
48
- end
49
-
50
25
  def render
51
26
  str = ERB.new(template).result(binding)
52
27
  if parent
@@ -64,15 +39,16 @@ class ErbComponent
64
39
  new(req, opts).render
65
40
  end
66
41
 
42
+ def self.current_file=(file)
43
+ @current_file = file
44
+ end
45
+
46
+ def self.current_file
47
+ @current_file
48
+ end
49
+
67
50
  def template_file_path
68
- file_name = "#{self.class.name.underscore}.erb"
69
- if File.exists? "components/#{file_name}"
70
- return "components/#{file_name}"
71
- elsif File.exists? "pages/#{file_name}"
72
- return "pages/#{file_name}"
73
- else
74
- nil
75
- end
51
+ self.class.current_file.gsub('.rb', '.erb')
76
52
  end
77
53
 
78
54
  def template
@@ -80,17 +56,4 @@ class ErbComponent
80
56
  return File.read(template_file_path) if template_file_path
81
57
  fail "not found: #{template_file_path}"
82
58
  end
83
-
84
- def method_missing(m, *args, &block)
85
- return super unless m.to_s[0].upcase == m.to_s[0]
86
- m = m.to_s
87
- str = Kernel.const_defined?("#{self.class}::#{m}") ? "#{self.class}::#{m}" : m
88
- clazz = Kernel.const_get(str)
89
- if args.size > 0
90
- component = clazz.new(req, *args)
91
- else
92
- component = clazz.new(req)
93
- end
94
- component.render
95
- end
96
59
  end
@@ -0,0 +1,42 @@
1
+ module ReqTools
2
+ def path
3
+ @req.path
4
+ end
5
+
6
+ def path_hash
7
+ @path_hash ||= begin
8
+ split = path.split('/')
9
+ split.shift
10
+
11
+ res = {}
12
+ split.size.times do |i|
13
+ if split[i].to_i.to_s == split[i]
14
+ res[split[i - 1].singularize + "_id"] = split[i]
15
+ end
16
+ end
17
+ res.with_indifferent_access
18
+ end
19
+ end
20
+
21
+ def params
22
+ @params ||= begin
23
+ res = @req.params
24
+ res.merge!(JSON.parse(req.body.read)) if req.post? || req.put? || req.patch?
25
+ res.merge!(path_hash)
26
+ res.with_indifferent_access
27
+ end
28
+ end
29
+
30
+ def method_missing(m, *args, &block)
31
+ return super unless m.to_s[0].upcase == m.to_s[0]
32
+ m = m.to_s
33
+ str = Kernel.const_defined?("#{self.class}::#{m}") ? "#{self.class}::#{m}" : m
34
+ clazz = Kernel.const_get(str)
35
+ if args.size > 0
36
+ component = clazz.new(req, *args)
37
+ else
38
+ component = clazz.new(req)
39
+ end
40
+ component.render
41
+ end
42
+ end
@@ -1,3 +1,3 @@
1
1
  class ErbComponent
2
- VERSION = "0.1.8"
2
+ VERSION = "0.1.9"
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.8
4
+ version: 0.1.9
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-12-01 00:00:00.000000000 Z
11
+ date: 2019-12-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: React-style front-end components but for ERB?
14
14
  email:
@@ -26,6 +26,7 @@ files:
26
26
  - erb_component.gemspec
27
27
  - lib/erb_component.rb
28
28
  - lib/erb_component/erb_component.rb
29
+ - lib/erb_component/req_tools.rb
29
30
  - lib/erb_component/version.rb
30
31
  homepage: https://github.com/arthurkarganyan/erb_component
31
32
  licenses: