12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
# File 'lib/rapis/converter.rb', line 12
def to_dsl(hash)
exclude_key = proc do |k|
if ['in'].include?(k)
true
elsif (k.include?('/') and not k =~ /^\//)
true
elsif ['-', '.'].any? {|i| k.include?(i) } and k != 'x-amazon-apigateway-integration'
true
else
false
end
end
key_conv = proc do |k|
k = k.to_s
if k =~ /^\//
proc do |v, nested|
if nested
"path #{k.inspect} #{v}"
else
"path #{k.inspect}, #{v}"
end
end
elsif k =~ /^\d{3}$/
proc do |v, nested|
if nested
"code #{k} #{v}"
else
"code #{k}, #{v}"
end
end
else
CHANGE_SETS.each { |f,t| k = k.gsub(f,t) }
k
end
end
value_conv = proc do |v|
if v.kind_of?(String) and v =~ /\A(?:0|[1-9]\d*)\Z/
v.to_i
else
v
end
end
dsl = Dslh.deval(
hash,
exclude_key: exclude_key,
key_conv: key_conv,
value_conv: value_conv)
dsl.gsub!(/^/, ' ').strip!
<<-EOS
rest_api do
#{dsl}
end
EOS
end
|