general 2.0.2 → 2.0.3
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/exp/expected/applied4.txt +3 -0
- data/exp/expected/applied5.txt +11 -0
- data/exp/expected/default4.txt +3 -0
- data/exp/expected/default5.txt +11 -0
- data/exp/out/sample4.txt +3 -0
- data/exp/out/sample5.txt +11 -0
- data/exp/templates/sample0a.general +7 -0
- data/exp/templates/sample4.general +3 -0
- data/exp/templates/sample5.general +3 -0
- data/exp/templates/sub/sample_base.general +1 -0
- data/lib/gprepartials/gextend.rb +1 -1
- data/lib/gprepartials/ginclude.rb +1 -1
- data/lib/gtemplates/gmeta.rb +11 -7
- data/spec/gtemplate_gio_spec.rb +31 -1
- metadata +12 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f610cd0c2d52fe794bdfe47dce873c4aa170818e
|
4
|
+
data.tar.gz: 8233a86e36c631edf9d030e7017c7177781013a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e283ae5ffec30b14e89410034c1aef4a7a902563db1459d26cccfafbc9cf244aa99610891afb859e1cfad22e2e4e7b48f36ebb0414574ce5cdb98b242eca9d89
|
7
|
+
data.tar.gz: dcb1a5a856a29e2acbb3dee59490d54b6d88bcfb346089129926ba7b9b19ab59506fb2763aaefb5d5cf4bf2b528196f1a754e9a6e56957fd36dbdc228f64916c
|
data/exp/out/sample4.txt
ADDED
data/exp/out/sample5.txt
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
There once was a bloke named @(name: richard hammond -> capitalize all), who hated @(food: beets). He didn't go to @(place -> capitalize).
|
data/lib/gprepartials/gextend.rb
CHANGED
@@ -29,7 +29,7 @@ module General
|
|
29
29
|
# Created: 1 - 30 - 2017
|
30
30
|
class GExtend < GPrePartial
|
31
31
|
# Regular expression matches GExtend
|
32
|
-
REGEX = /\A@@extend\s+(?<filename>\w+)\r?\n
|
32
|
+
REGEX = /\A@@extend\s+(?<filename>\w+(\/\w+)*?)(\r?\n)+/
|
33
33
|
|
34
34
|
# Read filename
|
35
35
|
attr :filename
|
data/lib/gtemplates/gmeta.rb
CHANGED
@@ -26,9 +26,9 @@ module General
|
|
26
26
|
# Author: Anshul Kharbanda
|
27
27
|
# Created: 1 - 31 - 2016
|
28
28
|
class GMeta < GTemplate
|
29
|
-
def self.load
|
29
|
+
def self.load path
|
30
30
|
# Read file
|
31
|
-
string = IO.read
|
31
|
+
string = IO.read path
|
32
32
|
|
33
33
|
# Prepartial types
|
34
34
|
ptypes = [
|
@@ -46,7 +46,9 @@ module General
|
|
46
46
|
prepart = ptypes.find { |ptype| m = ptype::REGEX.match(string) }
|
47
47
|
|
48
48
|
# Raise error if no matching prepart can be found
|
49
|
-
|
49
|
+
if prepart.nil?
|
50
|
+
raise GError.new "Unmatched prepartial at #{(string.length <= 5 ? string : string[0..5] + "...").inspect}"
|
51
|
+
end
|
50
52
|
|
51
53
|
# Add the partial to the array
|
52
54
|
preparts << prepart.new(m)
|
@@ -63,23 +65,25 @@ module General
|
|
63
65
|
|
64
66
|
# Run extend algorithm (throw error if extend is found elsewhere)
|
65
67
|
if extindex == 0
|
66
|
-
GMeta.load(extindex.filename).gextend(preparts)
|
68
|
+
preparts = GMeta.load(preparts[extindex].filename+General::GIO::EXTENSION).gextend(preparts[1..-1])
|
67
69
|
elsif !extindex.nil? && extindex > 0
|
68
70
|
raise GError.new "@@extend prepartial needs to be at beginning of template."
|
69
71
|
end
|
70
72
|
|
71
73
|
# Check for multiple yields
|
72
74
|
yields = preparts.find_all{ |prepart| prepart.is_a? General::GYield }
|
73
|
-
|
75
|
+
if yields.length > 1
|
76
|
+
raise GError.new "@@yield prepartial can only appear ONCE!"
|
77
|
+
end
|
74
78
|
|
75
79
|
# Find the yield
|
76
80
|
yindex = preparts.index{ |prepart| prepart.is_a? General::GYield }
|
77
81
|
|
78
82
|
# Return a new meta file if yield is found. Else default is end.
|
79
83
|
unless yindex.nil?
|
80
|
-
return self.new preparts[0...yindex], preparts[(yindex + 1)..-1],
|
84
|
+
return self.new preparts[0...yindex], preparts[(yindex + 1)..-1], path
|
81
85
|
else
|
82
|
-
return self.new preparts, [],
|
86
|
+
return self.new preparts, [], path
|
83
87
|
end
|
84
88
|
end
|
85
89
|
|
data/spec/gtemplate_gio_spec.rb
CHANGED
@@ -30,19 +30,27 @@ describe General::GIO do
|
|
30
30
|
@gio1 = General::GIO.load("exp/templates/sample1" + General::GIO::EXTENSION)
|
31
31
|
@gio2 = General::GIO.load("exp/templates/sample2" + General::GIO::EXTENSION)
|
32
32
|
@gio3 = General::GIO.load("exp/templates/sample3" + General::GIO::EXTENSION)
|
33
|
+
@gio4 = General::GIO.load("exp/templates/sample4" + General::GIO::EXTENSION)
|
34
|
+
@gio5 = General::GIO.load("exp/templates/sample5" + General::GIO::EXTENSION)
|
33
35
|
|
34
36
|
@out1 = "exp/out/sample1.txt"
|
35
37
|
@out2 = "exp/out/sample2.txt"
|
36
38
|
@out3 = "exp/out/sample3.txt"
|
39
|
+
@out4 = "exp/out/sample4.txt"
|
40
|
+
@out5 = "exp/out/sample5.txt"
|
37
41
|
@outF = 3
|
38
42
|
|
39
43
|
@default_text1 = IO.read "exp/expected/default1.txt"
|
40
44
|
@default_text2 = IO.read "exp/expected/default2.txt"
|
41
45
|
@default_text3 = IO.read "exp/expected/default3.txt"
|
46
|
+
@default_text4 = IO.read "exp/expected/default4.txt"
|
47
|
+
@default_text5 = IO.read "exp/expected/default5.txt"
|
42
48
|
|
43
49
|
@applied_text1 = IO.read "exp/expected/applied1.txt"
|
44
50
|
@applied_text2 = IO.read "exp/expected/applied2.txt"
|
45
|
-
@applied_text3 = IO.read "exp/expected/applied3.txt"
|
51
|
+
@applied_text3 = IO.read "exp/expected/applied3.txt"
|
52
|
+
@applied_text4 = IO.read "exp/expected/applied4.txt"
|
53
|
+
@applied_text5 = IO.read "exp/expected/applied5.txt"
|
46
54
|
end
|
47
55
|
|
48
56
|
# Describe General::GIO::load
|
@@ -57,6 +65,8 @@ describe General::GIO do
|
|
57
65
|
expect(@gio1).to be_an_instance_of General::GIO
|
58
66
|
expect(@gio2).to be_an_instance_of General::GIO
|
59
67
|
expect(@gio3).to be_an_instance_of General::GIO
|
68
|
+
expect(@gio4).to be_an_instance_of General::GIO
|
69
|
+
expect(@gio5).to be_an_instance_of General::GIO
|
60
70
|
end
|
61
71
|
|
62
72
|
it "cannot load GMeta file (with @@yield defined)" do
|
@@ -91,26 +101,36 @@ describe General::GIO do
|
|
91
101
|
@gio1.write @out1, @default_data
|
92
102
|
@gio2.write @out2, @default_data
|
93
103
|
@gio3.write @out3, @default_data
|
104
|
+
@gio4.write @out4, @default_data
|
105
|
+
@gio5.write @out5, @default_data
|
94
106
|
|
95
107
|
expect(IO.read @out1).to eql @default_text1
|
96
108
|
expect(IO.read @out2).to eql @default_text2
|
97
109
|
expect(IO.read @out3).to eql @default_text3
|
110
|
+
expect(IO.read @out4).to eql @default_text4
|
111
|
+
expect(IO.read @out5).to eql @default_text5
|
98
112
|
end
|
99
113
|
|
100
114
|
it "writes the default data to the given file io" do
|
101
115
|
File.open(@out1, "w+") { |ios| @gio1.write ios, @default_data }
|
102
116
|
File.open(@out2, "w+") { |ios| @gio2.write ios, @default_data }
|
103
117
|
File.open(@out3, "w+") { |ios| @gio3.write ios, @default_data }
|
118
|
+
File.open(@out4, "w+") { |ios| @gio4.write ios, @default_data }
|
119
|
+
File.open(@out5, "w+") { |ios| @gio5.write ios, @default_data }
|
104
120
|
|
105
121
|
expect(IO.read @out1).to eql @default_text1
|
106
122
|
expect(IO.read @out2).to eql @default_text2
|
107
123
|
expect(IO.read @out3).to eql @default_text3
|
124
|
+
expect(IO.read @out4).to eql @default_text4
|
125
|
+
expect(IO.read @out5).to eql @default_text5
|
108
126
|
end
|
109
127
|
|
110
128
|
it "raises TypeError if target is not string or io" do
|
111
129
|
expect{ @gio1.write @outF, @default_data }.to raise_error TypeError
|
112
130
|
expect{ @gio2.write @outF, @default_data }.to raise_error TypeError
|
113
131
|
expect{ @gio3.write @outF, @default_data }.to raise_error TypeError
|
132
|
+
expect{ @gio4.write @outF, @default_data }.to raise_error TypeError
|
133
|
+
expect{ @gio5.write @outF, @default_data }.to raise_error TypeError
|
114
134
|
end
|
115
135
|
end
|
116
136
|
|
@@ -121,26 +141,36 @@ describe General::GIO do
|
|
121
141
|
@gio1.write @out1, @applied_data
|
122
142
|
@gio2.write @out2, @applied_data
|
123
143
|
@gio3.write @out3, @applied_data
|
144
|
+
@gio4.write @out4, @applied_data
|
145
|
+
@gio5.write @out5, @applied_data
|
124
146
|
|
125
147
|
expect(IO.read @out1).to eql @applied_text1
|
126
148
|
expect(IO.read @out2).to eql @applied_text2
|
127
149
|
expect(IO.read @out3).to eql @applied_text3
|
150
|
+
expect(IO.read @out4).to eql @applied_text4
|
151
|
+
expect(IO.read @out4).to eql @applied_text4
|
128
152
|
end
|
129
153
|
|
130
154
|
it "writes the given data to the given file io" do
|
131
155
|
File.open(@out1, "w+") { |ios| @gio1.write ios, @applied_data }
|
132
156
|
File.open(@out2, "w+") { |ios| @gio2.write ios, @applied_data }
|
133
157
|
File.open(@out3, "w+") { |ios| @gio3.write ios, @applied_data }
|
158
|
+
File.open(@out4, "w+") { |ios| @gio4.write ios, @applied_data }
|
159
|
+
File.open(@out5, "w+") { |ios| @gio5.write ios, @applied_data }
|
134
160
|
|
135
161
|
expect(IO.read @out1).to eql @applied_text1
|
136
162
|
expect(IO.read @out2).to eql @applied_text2
|
137
163
|
expect(IO.read @out3).to eql @applied_text3
|
164
|
+
expect(IO.read @out4).to eql @applied_text4
|
165
|
+
expect(IO.read @out5).to eql @applied_text5
|
138
166
|
end
|
139
167
|
|
140
168
|
it "raises TypeError if target is not string or io" do
|
141
169
|
expect{ @gio1.write @outF, @applied_data }.to raise_error TypeError
|
142
170
|
expect{ @gio2.write @outF, @applied_data }.to raise_error TypeError
|
143
171
|
expect{ @gio3.write @outF, @applied_data }.to raise_error TypeError
|
172
|
+
expect{ @gio4.write @outF, @applied_data }.to raise_error TypeError
|
173
|
+
expect{ @gio5.write @outF, @applied_data }.to raise_error TypeError
|
144
174
|
end
|
145
175
|
end
|
146
176
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: general
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anshul Kharbanda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -39,20 +39,30 @@ files:
|
|
39
39
|
- exp/expected/applied1.txt
|
40
40
|
- exp/expected/applied2.txt
|
41
41
|
- exp/expected/applied3.txt
|
42
|
+
- exp/expected/applied4.txt
|
43
|
+
- exp/expected/applied5.txt
|
42
44
|
- exp/expected/default1.txt
|
43
45
|
- exp/expected/default2.txt
|
44
46
|
- exp/expected/default3.txt
|
47
|
+
- exp/expected/default4.txt
|
48
|
+
- exp/expected/default5.txt
|
45
49
|
- exp/out/sample1.txt
|
46
50
|
- exp/out/sample2.txt
|
47
51
|
- exp/out/sample3.txt
|
52
|
+
- exp/out/sample4.txt
|
53
|
+
- exp/out/sample5.txt
|
48
54
|
- exp/templates/sample0.general
|
55
|
+
- exp/templates/sample0a.general
|
49
56
|
- exp/templates/sample1.general
|
50
57
|
- exp/templates/sample2.general
|
51
58
|
- exp/templates/sample3.general
|
59
|
+
- exp/templates/sample4.general
|
60
|
+
- exp/templates/sample5.general
|
52
61
|
- exp/templates/sampleE0.general
|
53
62
|
- exp/templates/sampleE1.general
|
54
63
|
- exp/templates/sampleE2.general
|
55
64
|
- exp/templates/sampleE3.general
|
65
|
+
- exp/templates/sub/sample_base.general
|
56
66
|
- lib/gdothash.rb
|
57
67
|
- lib/general.rb
|
58
68
|
- lib/gerror.rb
|