erb_asterisk 0.0.12 → 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +39 -5
- data/lib/erb_asterisk/inclusion.rb +22 -0
- data/lib/erb_asterisk/render.rb +20 -0
- data/lib/erb_asterisk/utils.rb +14 -0
- data/lib/erb_asterisk/version.rb +1 -1
- data/lib/erb_asterisk/yields.rb +46 -0
- data/lib/erb_asterisk.rb +14 -64
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3a6778b40d23d7041aba395f23ba8f43dbebfec9
|
4
|
+
data.tar.gz: b36f903921fba2bec91860612bec8caae9c3bfe9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bb2a7800da7b7945397bdb3c06895ac6c7af75f5c67ab76ee17dd0c7f03af4bec8bcfbf114fa82b61fad0a9a342936140169d4cfc06bb48e3891d7a8dd1a4d4
|
7
|
+
data.tar.gz: 452ee0b49ba80154632295e4ec6d10ee9ed1aa00bac205907f8a643f6053fc568b32a70f45a7646446d93da0abf899f254c417acfe0c70cece3259cd3843fbf0
|
data/README.md
CHANGED
@@ -68,12 +68,12 @@ retry = 0
|
|
68
68
|
|
69
69
|
### ERB extensions
|
70
70
|
|
71
|
-
####
|
71
|
+
#### render: render template
|
72
72
|
```
|
73
73
|
<%= render 'template_file_name_without_ext', variable_name: variable_value %>
|
74
74
|
```
|
75
75
|
|
76
|
-
####
|
76
|
+
#### include_to: define inclusion to external configuration file
|
77
77
|
```
|
78
78
|
<%= include_to 'pjsip_endpoints.conf.includes' %>
|
79
79
|
```
|
@@ -88,7 +88,7 @@ pjsip_endpoints.conf.includes:
|
|
88
88
|
|
89
89
|
You can include this file to your actual pjsip_endpoints.conf.
|
90
90
|
|
91
|
-
Also, you can define priority for inclusion:
|
91
|
+
Also, you can define `priority` argument for inclusion:
|
92
92
|
```
|
93
93
|
<%= include_to 'pjsip_endpoints.conf.includes' %>
|
94
94
|
<%= include_to 'pjsip_endpoints.conf.includes', priority: 999 %>
|
@@ -100,7 +100,7 @@ This will render to:
|
|
100
100
|
#include "entities/office/pjsip_endpoints.conf"
|
101
101
|
```
|
102
102
|
|
103
|
-
####
|
103
|
+
#### apply_line_to: apply line to a tag
|
104
104
|
|
105
105
|
office/extensions.conf.erb:
|
106
106
|
```
|
@@ -122,7 +122,38 @@ extensions.conf:
|
|
122
122
|
include => office-inbound
|
123
123
|
```
|
124
124
|
|
125
|
-
####
|
125
|
+
#### content_for: apply block to a tag
|
126
|
+
office/extensions.conf.erb:
|
127
|
+
```
|
128
|
+
<% content_for :global_outbound_context do %>
|
129
|
+
<% exten = 'super_extension-' -%>
|
130
|
+
exten => _<%= escape_exten exten %>X.,1,NoOp
|
131
|
+
same => n,Goto(another-extension,${EXTEN:<%= exten.size %>},1)
|
132
|
+
<% end %>
|
133
|
+
```
|
134
|
+
|
135
|
+
extensions.conf.erb:
|
136
|
+
```
|
137
|
+
[outbound]
|
138
|
+
<%= yield_here :global_outbound_context %>
|
139
|
+
```
|
140
|
+
|
141
|
+
extensions.conf:
|
142
|
+
```
|
143
|
+
[outbound]
|
144
|
+
; Yield for :outbound
|
145
|
+
exten => _super_e[x]te[n]sio[n]-X.,1,NoOp
|
146
|
+
same => n,Goto(another-extension,${EXTEN:16},1)
|
147
|
+
```
|
148
|
+
|
149
|
+
`apply_line_to` and `content_for` can has `priority` argument, just like `include_to` method:
|
150
|
+
```
|
151
|
+
<% content_for :global_outbound_context, priority: 999 do %>
|
152
|
+
...
|
153
|
+
<% apply_line_to :outbound_glob, 'include => outbound', priority: -10 %>
|
154
|
+
```
|
155
|
+
|
156
|
+
#### escape_exten: escape special symbols in extension name
|
126
157
|
```
|
127
158
|
exten => _<%= escape_exten 'LongExtension1234!' %>-X.,1,NoOp
|
128
159
|
```
|
@@ -137,6 +168,9 @@ exten => _Lo[n]gE[x]te[n]sio[n]1234[!]-X.,1,NoOp
|
|
137
168
|
Project available global variables can be defined inside file `erb_asterisk_project.rb`, e.g.:
|
138
169
|
```
|
139
170
|
OPERATORS_SIZE = 31
|
171
|
+
|
172
|
+
LAN = '192.168.1.0/255.255.255.0'
|
173
|
+
EXTERNAL_HOST = 'no-ip.some.host.eg'
|
140
174
|
```
|
141
175
|
|
142
176
|
### Command line arguments
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module ErbAsterisk
|
2
|
+
module Inclusion
|
3
|
+
# Declare current config file inclusion to file_name
|
4
|
+
# args can has :priority key (larger the number - higher the priority)
|
5
|
+
def include_to(file_name, args = {})
|
6
|
+
return unless TOPLEVEL_BINDING.local_variable_defined?(:current_conf_file)
|
7
|
+
default_args!(args)
|
8
|
+
@exports[file_name] = [] if @exports[file_name].nil?
|
9
|
+
|
10
|
+
arr = @exports[file_name]
|
11
|
+
|
12
|
+
current_conf_file = TOPLEVEL_BINDING.local_variable_get(:current_conf_file)
|
13
|
+
unless arr.index { |i| i[:file] == current_conf_file }.nil?
|
14
|
+
puts "Skip #{current_conf_file} duplicate inclusion to #{file_name}"
|
15
|
+
return
|
16
|
+
end
|
17
|
+
|
18
|
+
arr << { file: current_conf_file, priority: args[:priority] }
|
19
|
+
"; Included to \"#{file_name}\""
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module ErbAsterisk
|
2
|
+
module Render
|
3
|
+
# Render template
|
4
|
+
def render(template, vars = {})
|
5
|
+
old_erb_output = @erb_output
|
6
|
+
@erb_output = ''
|
7
|
+
|
8
|
+
erb = new_erb(read_template(template))
|
9
|
+
|
10
|
+
b = binding
|
11
|
+
vars.each do |name, value|
|
12
|
+
b.local_variable_set(name, value)
|
13
|
+
end
|
14
|
+
|
15
|
+
r = erb.result(b)
|
16
|
+
@erb_output = old_erb_output
|
17
|
+
r
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module ErbAsterisk
|
2
|
+
module Utils
|
3
|
+
# Escape special symbols in extension name
|
4
|
+
#
|
5
|
+
# vnov -> v[n]on
|
6
|
+
# LongExtension1234! -> Lo[n]gE[x]te[n]sio[n]1234[!]
|
7
|
+
#
|
8
|
+
def escape_exten(exten)
|
9
|
+
exten.each_char.reduce('') do |s, c|
|
10
|
+
s << (%w(x z n . !).include?(c.downcase) ? "[#{c}]" : c)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/lib/erb_asterisk/version.rb
CHANGED
@@ -0,0 +1,46 @@
|
|
1
|
+
module ErbAsterisk
|
2
|
+
module Yields
|
3
|
+
# Apply line to place where yield_here :tag defined
|
4
|
+
def apply_line_to(tag, line, args = {})
|
5
|
+
default_args!(args)
|
6
|
+
apply_to_yields(:line, tag, line, args[:priority])
|
7
|
+
"; Applied \"#{line}\" to :#{tag}"
|
8
|
+
end
|
9
|
+
|
10
|
+
# Apply block to yield_here
|
11
|
+
def content_for(tag, args = {})
|
12
|
+
default_args!(args)
|
13
|
+
old_output = @erb_output
|
14
|
+
@erb_output = ''
|
15
|
+
apply_to_yields(:block, tag, yield, args[:priority])
|
16
|
+
@erb_output = old_output
|
17
|
+
end
|
18
|
+
|
19
|
+
# Define place where put apply_line_to
|
20
|
+
def yield_here(tag)
|
21
|
+
"<%= yield_actual :#{tag} %>"
|
22
|
+
end
|
23
|
+
|
24
|
+
def yield_actual(tag)
|
25
|
+
"; Yield for :#{tag}\n" << output_yield(tag)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def apply_to_yields(type, tag, content, priority)
|
31
|
+
@yields[tag] = [] if @yields[tag].nil?
|
32
|
+
@yields[tag] << { content: content, priority: priority, type: type }
|
33
|
+
end
|
34
|
+
|
35
|
+
def output_yield(tag)
|
36
|
+
a = @yields[tag]
|
37
|
+
a = a.sort_by { |i| -i[:priority] }
|
38
|
+
result = a.reduce('') do |s, i|
|
39
|
+
s << "; priority: #{i[:priority]}\n" if i[:priority] != 0
|
40
|
+
s << "#{i[:content]}\n"
|
41
|
+
end
|
42
|
+
|
43
|
+
result
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
data/lib/erb_asterisk.rb
CHANGED
@@ -2,69 +2,16 @@ require 'erb'
|
|
2
2
|
require 'find'
|
3
3
|
require 'pathname'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
e = new_erb(tpl)
|
10
|
-
|
11
|
-
b = binding
|
12
|
-
vars.each do |name, value|
|
13
|
-
b.local_variable_set(name, value)
|
14
|
-
end
|
15
|
-
|
16
|
-
e.result(b)
|
17
|
-
end
|
18
|
-
|
19
|
-
# Declare current config file inclusion to file_name
|
20
|
-
# args can has :priority key (larger the number - higher the priority)
|
21
|
-
def include_to(file_name, args = {})
|
22
|
-
return unless TOPLEVEL_BINDING.local_variable_defined?(:current_conf_file)
|
23
|
-
args = { priority: 0 }.merge(args)
|
24
|
-
@exports[file_name] = [] if @exports[file_name].nil?
|
25
|
-
|
26
|
-
arr = @exports[file_name]
|
27
|
-
|
28
|
-
current_conf_file = TOPLEVEL_BINDING.local_variable_get(:current_conf_file)
|
29
|
-
unless arr.index { |i| i[:file] == current_conf_file }.nil?
|
30
|
-
puts "Skip #{current_conf_file} duplicate inclusion to #{file_name}"
|
31
|
-
return
|
32
|
-
end
|
33
|
-
|
34
|
-
arr << { file: current_conf_file, priority: args[:priority] }
|
35
|
-
"; Included to \"#{file_name}\""
|
36
|
-
end
|
37
|
-
|
38
|
-
# Apply line to place where yield_here :tag defined
|
39
|
-
def apply_line_to(tag, line)
|
40
|
-
if @yields[tag].nil?
|
41
|
-
@yields[tag] = line
|
42
|
-
else
|
43
|
-
@yields[tag] << "\n#{line}"
|
44
|
-
end
|
5
|
+
require 'erb_asterisk/render'
|
6
|
+
require 'erb_asterisk/inclusion'
|
7
|
+
require 'erb_asterisk/yields'
|
8
|
+
require 'erb_asterisk/utils'
|
45
9
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
"<%= yield_actual :#{tag} %>"
|
52
|
-
end
|
53
|
-
|
54
|
-
def yield_actual(tag)
|
55
|
-
"; Yield for :#{tag}\n" << @yields[tag]
|
56
|
-
end
|
57
|
-
|
58
|
-
# Escape special symbols in extension name
|
59
|
-
#
|
60
|
-
# vnov -> v[n]on
|
61
|
-
# LongExtension1234! -> Lo[n]gE[x]te[n]sio[n]1234[!]
|
62
|
-
#
|
63
|
-
def escape_exten(exten)
|
64
|
-
exten.each_char.reduce('') do |s, c|
|
65
|
-
s << (ERB_ASTERISK_PATTERNS.include?(c.downcase) ? "[#{c}]" : c)
|
66
|
-
end
|
67
|
-
end
|
10
|
+
module ErbAsterisk
|
11
|
+
include Render
|
12
|
+
include Inclusion
|
13
|
+
include Yields
|
14
|
+
include Utils
|
68
15
|
|
69
16
|
def execute(opts)
|
70
17
|
init_instance(opts)
|
@@ -82,7 +29,6 @@ module ErbAsterisk
|
|
82
29
|
ERB_PROJECT_FILE = './erb_asterisk_project.rb'.freeze
|
83
30
|
ERB_ASTERISK_CONF = 'asterisk.conf'.freeze
|
84
31
|
ERB_ASTERISK_DIR = 'asterisk/'.freeze
|
85
|
-
ERB_ASTERISK_PATTERNS = %w(x z n . !)
|
86
32
|
|
87
33
|
def init_instance(opts)
|
88
34
|
@exports = {}
|
@@ -168,6 +114,10 @@ module ErbAsterisk
|
|
168
114
|
end
|
169
115
|
|
170
116
|
def new_erb(content)
|
171
|
-
ERB.new(content, nil, '-')
|
117
|
+
ERB.new(content, nil, '-', '@erb_output')
|
118
|
+
end
|
119
|
+
|
120
|
+
def default_args!(args)
|
121
|
+
args[:priority] = 0 if args[:priority].nil?
|
172
122
|
end
|
173
123
|
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.13
|
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-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: slop
|
@@ -113,7 +113,11 @@ files:
|
|
113
113
|
- exe/erb_asterisk
|
114
114
|
- lib/erb_asterisk.rb
|
115
115
|
- lib/erb_asterisk/arg_parser.rb
|
116
|
+
- lib/erb_asterisk/inclusion.rb
|
117
|
+
- lib/erb_asterisk/render.rb
|
118
|
+
- lib/erb_asterisk/utils.rb
|
116
119
|
- lib/erb_asterisk/version.rb
|
120
|
+
- lib/erb_asterisk/yields.rb
|
117
121
|
homepage: https://github.com/ybinzu/erb_asterisk
|
118
122
|
licenses:
|
119
123
|
- MIT
|