erb_asterisk 0.0.5 → 0.0.6
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 +4 -4
- data/README.md +31 -14
- data/exe/erb_asterisk +4 -0
- data/lib/erb_asterisk/version.rb +1 -1
- data/lib/erb_asterisk.rb +67 -15
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49aa96fce97ae70a2a1b9b9c753d26de3742f204
|
4
|
+
data.tar.gz: 334f8b7138abff5373fb23fac0a505dbbe9bdd14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 349e46939692e862bbaa4a73d0a6a8791d71eceba20b035fb2f24f0a97eee3514def575d233f40c91fb223b6f79b4445e9abafb73e6ab65e57ef554133e27d5b
|
7
|
+
data.tar.gz: da0a68f914b49c0e13139099fd0da49c9475b9ddabc3f641d3b09d9c1fb44825fe4e63d8f8423c6ceaae0b6430c5c8bd4d85758e8c8351878f8e04bcb0ca3877
|
data/README.md
CHANGED
@@ -66,14 +66,14 @@ announce-holdtime = no
|
|
66
66
|
retry = 0
|
67
67
|
```
|
68
68
|
|
69
|
-
### ERB
|
69
|
+
### ERB extensions
|
70
70
|
|
71
|
-
|
71
|
+
#### Render template
|
72
72
|
```
|
73
73
|
<%= render 'template_file_name_without_ext', variable_name: variable_value %>
|
74
74
|
```
|
75
75
|
|
76
|
-
Define inclusion
|
76
|
+
#### Define inclusion to external configuration file
|
77
77
|
```
|
78
78
|
<%= include_to 'pjsip_endpoints.conf.includes' %>
|
79
79
|
```
|
@@ -88,25 +88,42 @@ pjsip_endpoints.conf.includes:
|
|
88
88
|
|
89
89
|
You can include this file to your actual pjsip_endpoints.conf.
|
90
90
|
|
91
|
-
|
91
|
+
Also, you can define priority for inclusion:
|
92
92
|
```
|
93
93
|
<%= include_to 'pjsip_endpoints.conf.includes' %>
|
94
|
-
<%=
|
95
|
-
|
96
|
-
|
94
|
+
<%= include_to 'pjsip_endpoints.conf.includes', priority: 999 %>
|
95
|
+
```
|
96
|
+
This will render to:
|
97
97
|
```
|
98
|
+
; priority: 999
|
99
|
+
#include "entities/taxi/pjsip_endpoints.conf"
|
100
|
+
#include "entities/office/pjsip_endpoints.conf"
|
101
|
+
```
|
102
|
+
|
103
|
+
#### Apply line to a tag
|
98
104
|
|
99
|
-
|
105
|
+
office/extensions.conf.erb:
|
100
106
|
```
|
101
|
-
|
102
|
-
<%=
|
103
|
-
|
104
|
-
|
107
|
+
[office-inbound]
|
108
|
+
<%= apply_line_to :global_inbound_context, 'include => office-inbound' %>
|
109
|
+
```
|
110
|
+
|
111
|
+
extensions.conf.erb:
|
112
|
+
```
|
113
|
+
[inbound]
|
114
|
+
<% yield_here :global_inbound_context %>
|
115
|
+
```
|
116
|
+
This will render to:
|
117
|
+
|
118
|
+
extensions.conf:
|
119
|
+
```
|
120
|
+
[inbound]
|
121
|
+
include => office-inbound
|
105
122
|
```
|
106
123
|
|
107
|
-
Global variables
|
124
|
+
#### Global variables
|
108
125
|
|
109
|
-
Project
|
126
|
+
Project available global variables can be defined inside file `erb_asterisk_project.rb`, e.g.:
|
110
127
|
```
|
111
128
|
OPERATORS_SIZE = 31
|
112
129
|
```
|
data/exe/erb_asterisk
CHANGED
data/lib/erb_asterisk/version.rb
CHANGED
data/lib/erb_asterisk.rb
CHANGED
@@ -4,8 +4,9 @@ require 'pathname'
|
|
4
4
|
|
5
5
|
module ErbAsterisk
|
6
6
|
# Render template
|
7
|
+
# TODO: render user defined templates
|
7
8
|
def render(template, vars = {})
|
8
|
-
tpl = File.read("#{@
|
9
|
+
tpl = File.read("#{@templates_path}/#{template}.erb")
|
9
10
|
e = ERB.new(tpl)
|
10
11
|
|
11
12
|
b = TOPLEVEL_BINDING
|
@@ -17,27 +18,50 @@ module ErbAsterisk
|
|
17
18
|
end
|
18
19
|
|
19
20
|
# Declare current config file inclusion to file_name
|
20
|
-
|
21
|
+
# args can has :priority key (larger the number - higher the priority)
|
22
|
+
def include_to(file_name, args = {})
|
21
23
|
return unless TOPLEVEL_BINDING.local_variable_defined?(:current_conf_file)
|
24
|
+
args = { priority: 0 }.merge(args)
|
22
25
|
@exports[file_name] = [] if @exports[file_name].nil?
|
26
|
+
|
23
27
|
arr = @exports[file_name]
|
24
28
|
|
25
29
|
current_conf_file = TOPLEVEL_BINDING.local_variable_get(:current_conf_file)
|
26
|
-
|
30
|
+
unless arr.index { |i| i[:file] == current_conf_file }.nil?
|
27
31
|
puts "Skip #{current_conf_file} duplicate inclusion to #{file_name}"
|
28
32
|
return
|
29
33
|
end
|
30
34
|
|
31
|
-
arr << current_conf_file
|
35
|
+
arr << { file: current_conf_file, priority: args[:priority] }
|
32
36
|
"; Included to \"#{file_name}\""
|
33
37
|
end
|
34
38
|
|
39
|
+
# Apply line to place where yield_here :tag defined
|
40
|
+
def apply_line_to(tag, line)
|
41
|
+
if @yields[tag].nil?
|
42
|
+
@yields[tag] = line
|
43
|
+
else
|
44
|
+
@yields[tag] << "\n#{line}"
|
45
|
+
end
|
46
|
+
|
47
|
+
nil
|
48
|
+
end
|
49
|
+
|
50
|
+
# Define place where put apply_line_to
|
51
|
+
def yield_here(tag)
|
52
|
+
"<%= yield_actual :#{tag} %>"
|
53
|
+
end
|
54
|
+
|
55
|
+
def yield_actual(tag)
|
56
|
+
@yields[tag]
|
57
|
+
end
|
58
|
+
|
35
59
|
def execute
|
36
60
|
init_instance
|
37
61
|
load_project_file
|
38
62
|
|
39
63
|
root = asterisk_root
|
40
|
-
@
|
64
|
+
@templates_path = "#{root}templates".freeze
|
41
65
|
|
42
66
|
render_files(root)
|
43
67
|
export_includes(root)
|
@@ -51,7 +75,8 @@ module ErbAsterisk
|
|
51
75
|
|
52
76
|
def init_instance
|
53
77
|
@exports = {}
|
54
|
-
@
|
78
|
+
@templates_path = ''
|
79
|
+
@yields = {}
|
55
80
|
end
|
56
81
|
|
57
82
|
def asterisk_root
|
@@ -65,28 +90,55 @@ module ErbAsterisk
|
|
65
90
|
end
|
66
91
|
|
67
92
|
def render_files(root)
|
93
|
+
erbs = load_erbs(root)
|
94
|
+
|
95
|
+
# It does two round of rendering because of apply_line_to and yield_here.
|
96
|
+
# First round accumulates apply_line_to declarations and converts
|
97
|
+
# yield_here to yield_actual.
|
98
|
+
render_erbs(erbs)
|
99
|
+
# Second round replaces yield_actual with accumulated apply_line_to.
|
100
|
+
render_erbs(erbs)
|
101
|
+
|
102
|
+
save_erbs(erbs)
|
103
|
+
export_includes(root)
|
104
|
+
end
|
105
|
+
|
106
|
+
def load_erbs(root)
|
107
|
+
erbs = {}
|
108
|
+
|
68
109
|
Find.find(root) do |f|
|
69
110
|
next if File.directory?(f)
|
70
|
-
next if f.start_with?(@
|
111
|
+
next if f.start_with?(@templates_path)
|
71
112
|
next unless f.end_with?('.erb')
|
72
113
|
|
73
|
-
|
114
|
+
erbs[f] = { config: f.chomp('.erb'),
|
115
|
+
content: File.read(f) }
|
116
|
+
end
|
74
117
|
|
75
|
-
|
76
|
-
|
118
|
+
erbs
|
119
|
+
end
|
77
120
|
|
78
|
-
|
121
|
+
def render_erbs(erbs)
|
122
|
+
erbs.each do |file, value|
|
123
|
+
# Declare global variable with current erb file name for include_to method:
|
124
|
+
TOPLEVEL_BINDING.local_variable_set(:current_conf_file, value[:config])
|
125
|
+
erbs[file][:content] = ERB.new(value[:content]).result
|
79
126
|
end
|
80
127
|
end
|
81
128
|
|
129
|
+
def save_erbs(erbs)
|
130
|
+
erbs.each { |_, value| File.write(value[:config], value[:content]) }
|
131
|
+
end
|
132
|
+
|
82
133
|
def export_includes(root)
|
83
134
|
@exports.each do |include_file, content|
|
84
|
-
|
85
|
-
content.
|
86
|
-
s << "
|
135
|
+
content = content.sort_by { |i| -i[:priority] }
|
136
|
+
result = content.reduce('') do |s, i|
|
137
|
+
s << "; priority: #{i[:priority]}\n" if i[:priority] != 0
|
138
|
+
s << "#include \"#{i[:file].sub(root, '')}\"\n"
|
87
139
|
end
|
88
140
|
|
89
|
-
File.write("#{root}#{include_file}",
|
141
|
+
File.write("#{root}#{include_file}", result)
|
90
142
|
end
|
91
143
|
end
|
92
144
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: erb_asterisk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artem Baikuzin
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-08-
|
11
|
+
date: 2017-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|