terrascript 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/terrascript.rb +42 -14
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a82a83d476331a0d279f31854598ae9ca3f18df09a610973798221564e40c08e
4
- data.tar.gz: a0ca074f292a87f79c8a8fb3bea2b0631dfcc1e482934eb82402ed06c1e147d4
3
+ metadata.gz: 96f4fa5aed583625a0a2c81174e4d5e0c49355b7c99bed2f3c9a0f5b74f879de
4
+ data.tar.gz: a93586dcc687695c605ab8dfa34cad6830c30fd5a28b37a6f5995291250acfce
5
5
  SHA512:
6
- metadata.gz: bfff4a2a1b061fb57fe1b33ca14c87c0eb41e148916d728fa959af2a9e51ef62eb583b942b0573c0a542bfcc9de9ebc276af8ecf4f434d541b6dedd987a2e4fa
7
- data.tar.gz: 9f4a3cf889816a7ebc08ba45492ad903e4c975237eef44ac8adfedc194839487eb710b3134ddaabe44df54de5656b8e4a4a22430b0cb4629e2cfa9d25d75296f
6
+ metadata.gz: eac07d66a93a3cc33b14e5153a730e3df37b8f49e14799ddc749ef6cf1514c152809fb07188af6e440080d87bcd503a1edbffd49b01ff2d2d9791c084df9c184
7
+ data.tar.gz: e3418a950257c17ec385defdd7b985db8d868cba4faff9b0d16e30b6dafb1b809097a21741afa274fb733113e063d46de89553ade7ac099054fc1082bed4fac0
data/lib/terrascript.rb CHANGED
@@ -1,12 +1,6 @@
1
-
1
+ require 'stringio'
2
2
 
3
3
  class Transform
4
- def transform
5
- s = $stdout
6
- $stdout = @out
7
- eval("lambda { |#{@argName}|\n#{@body}\n}").call(@arg)
8
- $stdout = s
9
- end
10
4
 
11
5
  def initialize(inFd, outFd = $stdout)
12
6
  @in = inFd
@@ -15,6 +9,7 @@ class Transform
15
9
  @argName = "block"
16
10
  @arg = ""
17
11
  @body = ""
12
+ @depth = 0
18
13
  end
19
14
 
20
15
  def process
@@ -23,11 +18,33 @@ class Transform
23
18
  end
24
19
  end
25
20
 
26
- def processLine(line)
21
+ protected def transform
22
+ s = $stdout
23
+ $stdout = @out
24
+
25
+ # process nested directives
26
+ if @arg.include? "@inline"
27
+ stream = StringIO.new(@arg)
28
+ outStream = StringIO.new
29
+ Transform.new(stream, outStream).process
30
+ @arg = outStream.string
31
+ end
32
+
33
+ eval("lambda { |#{@argName}|\n#{@body}\n}").call(@arg)
34
+
35
+ $stdout = s
36
+ end
37
+
38
+ protected def keyword?(line, s)
39
+ line.lstrip.start_with? ("@" << s)
40
+ end
41
+
42
+ protected def processLine(line)
27
43
  case @mode
28
44
 
29
45
  when :read
30
- if line.lstrip.start_with?("@inline")
46
+ case
47
+ when keyword?(line, "inline")
31
48
  args = line.split(' ')
32
49
  if !args[1].nil?
33
50
  @argName = args[1]
@@ -38,11 +55,22 @@ class Transform
38
55
  end
39
56
 
40
57
  when :arg
41
- if line.lstrip.start_with?("@end")
42
- transform
43
- @arg = ""
44
- @body = ""
45
- @mode = :read
58
+ case
59
+ when keyword?(line, "end")
60
+ if @depth == 0
61
+ transform
62
+ @arg = ""
63
+ @body = ""
64
+ @mode = :read
65
+ else
66
+ @depth = @depth - 1
67
+ @arg << line
68
+ end
69
+
70
+ when keyword?(line, "inline")
71
+ @depth = @depth + 1
72
+ @arg << line
73
+
46
74
  else
47
75
  @arg << line
48
76
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: terrascript
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marcin Chmiel