nginx-conf 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6f428df41ca4fdf007279f386b1efe23ccba81eb
4
+ data.tar.gz: 045fafa381b8a44ca5b790ae1f02be08afaa9b7b
5
+ SHA512:
6
+ metadata.gz: 18415d25a1ac4a365eec3a513bfee2f86787d92baf80266924889dfa3ae0f3e37ca6550412936c1f0e683e7dd841ee29757aa1e28c09118924354cf8b9766114
7
+ data.tar.gz: 05a447cf9c90681c8fdf00dcd102a2e8d12c032c1fe2ff4125f4ad393ed9a1801a35739979a7870152788adfd8c0bea6d0d385fd42b66961369e49013d2aa143
@@ -0,0 +1,52 @@
1
+ class Compiler
2
+ @@spaces = ' ' * 4
3
+
4
+ def compile hash
5
+ @indents = 0
6
+ compile_hash_without_brackets hash
7
+ end
8
+
9
+ def compile_elem object
10
+ case object
11
+ when Hash
12
+ compile_hash object
13
+ when Array
14
+ object.map{ |o| compile_elem(o) }.join(' ')
15
+ when -> (o) { o.respond_to? :to_s }
16
+ object.to_s
17
+ else
18
+ exit "You sucks!"
19
+ end
20
+ end
21
+
22
+ def compile_hash hash
23
+ s = "{\n"
24
+ @indents += 1
25
+ s += compile_hash_without_brackets hash
26
+ @indents -= 1
27
+ s + indent('}')
28
+ end
29
+
30
+ def compile_hash_without_brackets hash
31
+ hash.map do |key, values|
32
+ s = case key
33
+ when :servers
34
+ values.map do |config|
35
+ compile_hash_item :server, [config]
36
+ end.join()
37
+ else
38
+ compile_hash_item key, values
39
+ end
40
+
41
+ indent(s) + "\n"
42
+ end.join()
43
+ end
44
+
45
+ def compile_hash_item key, values
46
+ key.to_s + ' ' + compile_elem(values) + (values[-1].is_a?(Hash) ? "" : ";")
47
+ end
48
+
49
+ def indent line
50
+ @@spaces * @indents + line
51
+ end
52
+ end
@@ -0,0 +1,17 @@
1
+ require_relative 'compiler'
2
+
3
+
4
+ class NginxConf
5
+ def initialize hash
6
+ raise unless !hash.has_key?(:http)
7
+ @hash = hash.merge({http: {servers: []}})
8
+ end
9
+
10
+ def add_server hash
11
+ @hash[:http][:servers].push(hash)
12
+ end
13
+
14
+ def compile
15
+ Compiler.new.compile(@hash)
16
+ end
17
+ end
data/lib/nginx-conf.rb ADDED
@@ -0,0 +1 @@
1
+ require_relative 'nginx-conf/conf'
metadata ADDED
@@ -0,0 +1,47 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nginx-conf
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Yota Toyama
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-15 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: nginx.conf generator which tries to exploit expressiveness of built-in
14
+ types
15
+ email: raviqqe@gmail.com
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/nginx-conf.rb
21
+ - lib/nginx-conf/compiler.rb
22
+ - lib/nginx-conf/conf.rb
23
+ homepage: https://github.com/raviqqe/nginx-conf.rb
24
+ licenses:
25
+ - Unlicense
26
+ metadata: {}
27
+ post_install_message:
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubyforge_project:
43
+ rubygems_version: 2.6.4
44
+ signing_key:
45
+ specification_version: 4
46
+ summary: nginx.conf generator
47
+ test_files: []