general 1.5.0 → 2.0.0
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/README.md +166 -20
- data/Rakefile +11 -2
- data/exp/expected/applied1.txt +1 -0
- data/exp/expected/applied2.txt +3 -0
- data/exp/expected/applied3.txt +9 -0
- data/exp/expected/default1.txt +1 -0
- data/exp/expected/default2.txt +3 -0
- data/exp/expected/default3.txt +9 -0
- data/exp/out/sample1.txt +1 -0
- data/exp/out/sample2.txt +3 -0
- data/exp/out/sample3.txt +9 -0
- data/exp/templates/sample0.general +7 -0
- data/exp/templates/sample1.general +1 -0
- data/exp/templates/sample2.general +3 -0
- data/exp/templates/sample3.general +4 -0
- data/exp/templates/sampleE0.general +7 -0
- data/exp/templates/sampleE1.general +3 -0
- data/exp/templates/sampleE2.general +3 -0
- data/exp/templates/sampleE3.general +7 -0
- data/lib/general.rb +3 -3
- data/lib/gerror.rb +33 -0
- data/lib/goperations.rb +95 -27
- data/lib/gpartials/garrayplaceholder.rb +87 -0
- data/lib/gpartials/gfullplaceholder.rb +63 -0
- data/lib/gpartials/gpartial.rb +11 -1
- data/lib/gpartials/gplaceholder.rb +1 -52
- data/lib/gpartials/gspecial.rb +81 -0
- data/lib/gpartials/gtext.rb +5 -33
- data/lib/gprepartials/gextend.rb +42 -0
- data/lib/gprepartials/ginclude.rb +47 -0
- data/lib/gprepartials/gprepartial.rb +45 -0
- data/lib/gprepartials/gpretext.rb +33 -0
- data/lib/gprepartials/gyield.rb +33 -0
- data/lib/{templates → gtemplates}/gbasetemplate.rb +46 -3
- data/lib/gtemplates/gio.rb +143 -0
- data/lib/gtemplates/gmeta.rb +106 -0
- data/lib/{templates → gtemplates}/gtemplate.rb +10 -30
- data/lib/{templates → gtemplates}/gtimeformat.rb +6 -12
- data/spec/gdothash_spec.rb +6 -10
- data/spec/goperations_spec.rb +112 -82
- data/spec/gpartial_garrayplaceholder_spec.rb +165 -0
- data/spec/gpartial_gfullplaceholder_spec.rb +82 -0
- data/spec/gpartial_gplaceholder_spec.rb +237 -0
- data/spec/gpartial_gspecial_spec.rb +88 -0
- data/spec/gpartial_gtext_spec.rb +87 -0
- data/spec/gtamplate_gtemplate_spec.rb +266 -0
- data/spec/gtemplate_gio_spec.rb +147 -0
- data/spec/gtemplate_gtimeformat_spec.rb +77 -0
- data/spec/spec_require.rb +7 -4
- metadata +41 -13
- data/exp/future.general +0 -11
- data/exp/out.txt +0 -1
- data/exp/sample.general +0 -1
- data/lib/templates/gio.rb +0 -68
- data/spec/garrayplaceholder_spec.rb +0 -163
- data/spec/gplaceholder_spec.rb +0 -300
- data/spec/gtemplates_spec.rb +0 -480
- data/spec/gtext_spec.rb +0 -150
@@ -0,0 +1,165 @@
|
|
1
|
+
# General is a templating system in ruby
|
2
|
+
# Copyright (C) 2016 Anshul Kharbanda
|
3
|
+
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
require_relative "spec_require"
|
18
|
+
|
19
|
+
# Describe General::GArrayPlaceholder
|
20
|
+
#
|
21
|
+
# Represents an array placeholder partial in a GTemplate
|
22
|
+
#
|
23
|
+
# Author: Anshul Kharbanda
|
24
|
+
# Created: 7 - 1 - 2016
|
25
|
+
describe General::GArrayPlaceholder do
|
26
|
+
before :all do
|
27
|
+
# -----------DATA-----------
|
28
|
+
|
29
|
+
@arrayname1 = :arg1
|
30
|
+
@arrayname2 = :arg2
|
31
|
+
@arrayname3 = :arg3
|
32
|
+
@hash = {
|
33
|
+
arg1: [
|
34
|
+
{ subarg: "Eeeeyyy" },
|
35
|
+
{ subarg: "Oyyyeee" },
|
36
|
+
{ subarg: "Aaayyyy" }
|
37
|
+
],
|
38
|
+
arg2: "Butter Milk Eggs Bacon Cleaner",
|
39
|
+
arg3: "Buttered Bacon, Milked Eggs, Cleaning Butter"
|
40
|
+
}
|
41
|
+
|
42
|
+
@delim = "\n"
|
43
|
+
@text1 = "Subarg: @(subarg)"
|
44
|
+
@text2 = "# @#"
|
45
|
+
@operation = :split
|
46
|
+
@arguments = [",\s*"]
|
47
|
+
|
48
|
+
# ---------------------------OUTPUT---------------------------
|
49
|
+
|
50
|
+
@out1 = @hash[@arrayname1]
|
51
|
+
.collect{|e| "Subarg: #{e[:subarg]}"}
|
52
|
+
.join(General::GArrayPlaceholder::DEFAULT_DELIMETER)
|
53
|
+
@out2 = @hash[@arrayname1]
|
54
|
+
.collect{|e| "Subarg: #{e[:subarg]}"}
|
55
|
+
.join(@delim)
|
56
|
+
@out3 = General::GOperations.send(@operation, @hash[@arrayname2])
|
57
|
+
.collect{|e| "# #{e}"}
|
58
|
+
.join(@delim)
|
59
|
+
@out4 = General::GOperations.send(@operation, @hash[@arrayname3], *@arguments)
|
60
|
+
.collect{|e| "# #{e}"}
|
61
|
+
.join(@delim)
|
62
|
+
|
63
|
+
# ------------------------------------------PARTIALS------------------------------------------
|
64
|
+
|
65
|
+
@partial1 = General::GArrayPlaceholder.new name: @arrayname1,
|
66
|
+
text: @text1
|
67
|
+
@partial2 = General::GArrayPlaceholder.new name: @arrayname1,
|
68
|
+
text: @text1,
|
69
|
+
delimeter: @delim
|
70
|
+
@partial3 = General::GArrayPlaceholder.new name: @arrayname2,
|
71
|
+
text: @text2,
|
72
|
+
delimeter: @delim,
|
73
|
+
operation: @operation
|
74
|
+
@partial4 = General::GArrayPlaceholder.new name: @arrayname3,
|
75
|
+
text: @text2,
|
76
|
+
delimeter: @delim,
|
77
|
+
operation: @operation,
|
78
|
+
arguments: @arguments.collect{|a| " \"#{a}\""}.join
|
79
|
+
|
80
|
+
# -------------------------------------------STRING-------------------------------------------
|
81
|
+
|
82
|
+
@string1 = "@[#{@arrayname1}] #{@text1} @[#{General::GArrayPlaceholder::DEFAULT_DELIMETER.inspect[1...-1]}]"
|
83
|
+
@string2 = "@[#{@arrayname1}] #{@text1} @[#{@delim.inspect[1...-1]}]"
|
84
|
+
@string3 = "@[#{@arrayname2} -> #{@operation}] #{@text2} @[#{@delim.inspect[1...-1]}]"
|
85
|
+
@string4 = "@[#{@arrayname3} -> #{@operation} #{@arguments.collect{|s| "\"#{s}\""}.join(" ")}] #{@text2} @[#{@delim.inspect[1...-1]}]"
|
86
|
+
end
|
87
|
+
|
88
|
+
# Describe General::GArrayPlaceholder::new
|
89
|
+
#
|
90
|
+
# Initializes the GPlaceholder with the given match
|
91
|
+
#
|
92
|
+
# Parameter: match - the match data from the string being parsed
|
93
|
+
describe '::new' do
|
94
|
+
it 'creates a new GArrayPlaceholder with the given input data' do
|
95
|
+
expect(@partial1).to be_an_instance_of General::GArrayPlaceholder
|
96
|
+
expect(@partial2).to be_an_instance_of General::GArrayPlaceholder
|
97
|
+
expect(@partial3).to be_an_instance_of General::GArrayPlaceholder
|
98
|
+
expect(@partial4).to be_an_instance_of General::GArrayPlaceholder
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
# Describe General::GArrayPlaceholder#apply
|
103
|
+
#
|
104
|
+
# Returns the value of the array placeholder in the given data
|
105
|
+
# formatted by the given GArrayPlaceholder and joined by the given delimeter
|
106
|
+
#
|
107
|
+
# Parameter: data - the data being applied
|
108
|
+
#
|
109
|
+
# Return: the value of the array placeholder in the given data
|
110
|
+
# formatted by the given GArrayPlaceholder and joined by the given delimeter
|
111
|
+
describe '#apply' do
|
112
|
+
it 'applies the given data array formatted according to the info in the GArrayPlaceholder' do
|
113
|
+
expect(@partial1.apply @hash).to eql @out1
|
114
|
+
expect(@partial2.apply @hash).to eql @out2
|
115
|
+
expect(@partial3.apply @hash).to eql @out3
|
116
|
+
expect(@partial4.apply @hash).to eql @out4
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
# Describe General::GArrayPlaceholder#string
|
121
|
+
#
|
122
|
+
# Returns the string representation of the GArrayPlaceholder
|
123
|
+
#
|
124
|
+
# Parameter: first - true if the GArrayPlaceholder is the first of it's time
|
125
|
+
#
|
126
|
+
# Returns: the string representation of the GArrayPlaceholder
|
127
|
+
describe '#string' do
|
128
|
+
it 'returns the string of the GArrayPlaceholder' do
|
129
|
+
expect(@partial1.string).to eql @string1
|
130
|
+
expect(@partial2.string).to eql @string2
|
131
|
+
expect(@partial3.string).to eql @string3
|
132
|
+
expect(@partial4.string).to eql @string4
|
133
|
+
expect(@partial1.string true).to eql @string1
|
134
|
+
expect(@partial2.string true).to eql @string2
|
135
|
+
expect(@partial3.string true).to eql @string3
|
136
|
+
expect(@partial4.string true).to eql @string4
|
137
|
+
expect(@partial1.string false).to eql @string1
|
138
|
+
expect(@partial2.string false).to eql @string2
|
139
|
+
expect(@partial3.string false).to eql @string3
|
140
|
+
expect(@partial4.string false).to eql @string4
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
# Describe General::GArrayPlaceholder#regex (depricated)
|
145
|
+
#
|
146
|
+
# Throws TypeError
|
147
|
+
#
|
148
|
+
# Parameter: first - true if the placeholder is the first of it's kind
|
149
|
+
describe '#regex (depricated)' do
|
150
|
+
it 'raises TypeError' do
|
151
|
+
expect { @partial1.regex }.to raise_error TypeError
|
152
|
+
expect { @partial2.regex }.to raise_error TypeError
|
153
|
+
expect { @partial3.regex }.to raise_error TypeError
|
154
|
+
expect { @partial4.regex }.to raise_error TypeError
|
155
|
+
expect { @partial1.regex true }.to raise_error TypeError
|
156
|
+
expect { @partial2.regex true }.to raise_error TypeError
|
157
|
+
expect { @partial3.regex true }.to raise_error TypeError
|
158
|
+
expect { @partial4.regex true }.to raise_error TypeError
|
159
|
+
expect { @partial1.regex false }.to raise_error TypeError
|
160
|
+
expect { @partial2.regex false }.to raise_error TypeError
|
161
|
+
expect { @partial3.regex false }.to raise_error TypeError
|
162
|
+
expect { @partial4.regex false }.to raise_error TypeError
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
# General is a templating system in ruby
|
2
|
+
# Copyright (C) 2016 Anshul Kharbanda
|
3
|
+
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
require_relative "spec_require"
|
18
|
+
|
19
|
+
# Inserts the full data value passed into the template
|
20
|
+
#
|
21
|
+
# Author: Anshul Kharbanda
|
22
|
+
# Created: 1 - 19 - 2016
|
23
|
+
describe General::GFullPlaceholder do
|
24
|
+
before :all do
|
25
|
+
@full = General::GFullPlaceholder.new({})
|
26
|
+
@data1 = "Hello World!"
|
27
|
+
end
|
28
|
+
|
29
|
+
# Describing General::GFullPlaceholder#new
|
30
|
+
#
|
31
|
+
# Creates a new GFullPlaceholder with the given match
|
32
|
+
#
|
33
|
+
# Parameter: match - the match data from the string being parsed
|
34
|
+
describe '::new' do
|
35
|
+
it 'creates a new GFullPlaceholder' do
|
36
|
+
expect(@full).to be_an_instance_of General::GFullPlaceholder
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
# Describing General::GFullPlaceholder#apply
|
41
|
+
#
|
42
|
+
# Returns a string representation of the given data
|
43
|
+
#
|
44
|
+
# Parameter: data - the data being applied
|
45
|
+
#
|
46
|
+
# Returns: a string representation of the given data
|
47
|
+
describe '#apply' do
|
48
|
+
it 'returns a string representation of the entire data value given' do
|
49
|
+
expect(@full.apply @data1).to eql @data1
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Describing General::GFullPlaceholder#string
|
54
|
+
#
|
55
|
+
# Returns a string representation of the GFullPlaceholder
|
56
|
+
#
|
57
|
+
# Parameter: first - true if this is the first in a given template
|
58
|
+
#
|
59
|
+
# Returns: a string representation of the GFullPlaceholder
|
60
|
+
describe '#string' do
|
61
|
+
it 'returns a string reprsentation of the GFullPlaceholder' do
|
62
|
+
expect(@full.string).to eql General::GFullPlaceholder::STRING
|
63
|
+
expect(@full.string true).to eql General::GFullPlaceholder::STRING
|
64
|
+
expect(@full.string false).to eql General::GFullPlaceholder::STRING
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Describing General::GFullPlaceholder#regex (depricated)
|
69
|
+
#
|
70
|
+
# Raises TypeError
|
71
|
+
#
|
72
|
+
# Parameter: first - true if this is the first in a given template
|
73
|
+
#
|
74
|
+
# Raises: TypeError
|
75
|
+
describe '#regex (depricated)' do
|
76
|
+
it 'raises TypeError' do
|
77
|
+
expect{@full.regex}.to raise_error TypeError
|
78
|
+
expect{@full.regex true}.to raise_error TypeError
|
79
|
+
expect{@full.regex false}.to raise_error TypeError
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,237 @@
|
|
1
|
+
# General is a templating system in ruby
|
2
|
+
# Copyright (C) 2016 Anshul Kharbanda
|
3
|
+
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
require_relative "spec_require"
|
18
|
+
|
19
|
+
# Represents a placeholder partial in a GTemplate
|
20
|
+
#
|
21
|
+
# Author: Anshul Kharbanda
|
22
|
+
# Created: 7 - 1 - 2016
|
23
|
+
describe General::GPlaceholder do
|
24
|
+
before :all do
|
25
|
+
# Placename
|
26
|
+
@placename1 = :plac1
|
27
|
+
@placename2 = :plac2
|
28
|
+
@placename3 = :plac3
|
29
|
+
@placename4 = :plac4
|
30
|
+
@placename5 = :"plac5.subarg"
|
31
|
+
|
32
|
+
# Hash
|
33
|
+
@hash = General::GDotHash.new
|
34
|
+
@hash[@placename1] = "foobar"
|
35
|
+
@hash[@placename3] = "barbaz"
|
36
|
+
@hash[@placename4] = "jujar"
|
37
|
+
@hash[@placename5] = "dudar"
|
38
|
+
|
39
|
+
# Default hash
|
40
|
+
@defaults = General::GDotHash.new
|
41
|
+
|
42
|
+
# ------------PLACEHOLDER------------
|
43
|
+
@result1 = @hash[@placename1]
|
44
|
+
@partial1 = General::GPlaceholder.new [
|
45
|
+
[:name, @placename1]
|
46
|
+
].to_h, @defaults
|
47
|
+
@string1 = "@(#{@placename1})"
|
48
|
+
@string_first1 = "@(#{@placename1})"
|
49
|
+
@regex1 = "\\k<#{@placename1}>"
|
50
|
+
@regex_first1 = "(?<#{@placename1}>.*)"
|
51
|
+
|
52
|
+
# --------------DEFAULT--------------
|
53
|
+
@default2 = "foo2"
|
54
|
+
@result2 = "foo2"
|
55
|
+
@partial2 = General::GPlaceholder.new [
|
56
|
+
[:name, @placename2],
|
57
|
+
[:default, @default2]
|
58
|
+
].to_h, @defaults
|
59
|
+
@string2 = "@(#{@placename2})"
|
60
|
+
@string_first2 = "@(#{@placename2}:" \
|
61
|
+
+ " #{@default2})"
|
62
|
+
@regex2 = "\\k<#{@placename2}>"
|
63
|
+
@regex_first2 = "(?<#{@placename2}>.*)"
|
64
|
+
|
65
|
+
# -------------OPERATION-------------
|
66
|
+
@operation3 = "capitalize"
|
67
|
+
@result3 = General::GOperations.send(
|
68
|
+
@operation3.to_sym,
|
69
|
+
@hash[@placename3]
|
70
|
+
)
|
71
|
+
@partial3 = General::GPlaceholder.new [
|
72
|
+
[:name, @placename3],
|
73
|
+
[:operation, @operation3]
|
74
|
+
].to_h, @defaults
|
75
|
+
@string3 = "@(#{@placename3})"
|
76
|
+
@string_first3 = "@(#{@placename3}" \
|
77
|
+
+ " -> #{@operation3})"
|
78
|
+
@regex3 = "\\k<#{@placename3}>"
|
79
|
+
@regex_first3 = "(?<#{@placename3}>.*)"
|
80
|
+
|
81
|
+
# -------------ARGUMENTS-------------
|
82
|
+
@operation4 = "capitalize"
|
83
|
+
@arguments4 = ["all"]
|
84
|
+
@result4 = General::GOperations.send(
|
85
|
+
@operation4.to_sym,
|
86
|
+
@hash[@placename4],
|
87
|
+
*@arguments4
|
88
|
+
)
|
89
|
+
@partial4 = General::GPlaceholder.new [
|
90
|
+
[:name, @placename4],
|
91
|
+
[:operation, @operation4],
|
92
|
+
[:arguments, @arguments4.join(" ")]
|
93
|
+
].to_h, @defaults
|
94
|
+
@string4 = "@(#{@placename4})"
|
95
|
+
@string_first4 = "@(#{@placename4}" \
|
96
|
+
+ " -> #{@operation4} " \
|
97
|
+
+ "#{@arguments4.collect {|s| "\"#{s}\""}.join " "})"
|
98
|
+
@regex4 = "\\k<#{@placename4}>"
|
99
|
+
@regex_first4 = "(?<#{@placename4}>.*)"
|
100
|
+
|
101
|
+
# -----------DOT NOTATION------------
|
102
|
+
keys = @placename5.to_s.split(".").collect(&:to_sym)
|
103
|
+
@result5 = @hash[keys[0]][keys[1]]
|
104
|
+
@partial5 = General::GPlaceholder.new [
|
105
|
+
[:name, @placename5]
|
106
|
+
].to_h, @defaults
|
107
|
+
@string5 = "@(#{@placename5})"
|
108
|
+
@string_first5 = "@(#{@placename5})"
|
109
|
+
@regex5 = "\\k<#{@placename5}>"
|
110
|
+
@regex_first5 = "(?<#{@placename5}>.*)"
|
111
|
+
end
|
112
|
+
|
113
|
+
# Describe General::GPlaceholder::new
|
114
|
+
#
|
115
|
+
# Initializes the GPlaceholder with the given match
|
116
|
+
#
|
117
|
+
# Parameter: match - the match data from the string being parsed
|
118
|
+
describe '::new' do
|
119
|
+
it 'creaes a GPlaceholder with the given data' do
|
120
|
+
# -------------------------------------PLACEHOLDER---------------------------------------
|
121
|
+
expect(@partial1).to be_an_instance_of General::GPlaceholder
|
122
|
+
expect(@partial1.instance_variable_get :@name).to eql @placename1
|
123
|
+
expect(@partial1.instance_variable_get :@operation).to be_nil
|
124
|
+
expect(@partial1.instance_variable_get :@arguments).to be_empty
|
125
|
+
|
126
|
+
# ---------------------------------------DEFAULT-----------------------------------------
|
127
|
+
expect(@partial2).to be_an_instance_of General::GPlaceholder
|
128
|
+
expect(@partial2.instance_variable_get :@name).to eql @placename2
|
129
|
+
expect(@partial2.instance_variable_get :@operation).to be_nil
|
130
|
+
expect(@partial2.instance_variable_get :@arguments).to be_empty
|
131
|
+
expect(@defaults[@placename2]).to eql @default2
|
132
|
+
|
133
|
+
# --------------------------------------OPERATION----------------------------------------
|
134
|
+
expect(@partial3).to be_an_instance_of General::GPlaceholder
|
135
|
+
expect(@partial3.instance_variable_get :@name).to eql @placename3
|
136
|
+
expect(@partial3.instance_variable_get :@operation).to eql @operation3
|
137
|
+
expect(@partial3.instance_variable_get :@arguments).to be_empty
|
138
|
+
|
139
|
+
# --------------------------------------ARGUMENTS----------------------------------------
|
140
|
+
expect(@partial4).to be_an_instance_of General::GPlaceholder
|
141
|
+
expect(@partial4.instance_variable_get :@name).to eql @placename4
|
142
|
+
expect(@partial4.instance_variable_get :@operation).to eql @operation4
|
143
|
+
expect(@partial4.instance_variable_get :@arguments).to eql @arguments4
|
144
|
+
|
145
|
+
# -------------------------------------DOT NOTATION--------------------------------------
|
146
|
+
expect(@partial5).to be_an_instance_of General::GPlaceholder
|
147
|
+
expect(@partial5.instance_variable_get :@name).to eql @placename5
|
148
|
+
expect(@partial5.instance_variable_get :@operation).to be_nil
|
149
|
+
expect(@partial5.instance_variable_get :@arguments).to be_empty
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
# Describe General::GPlaceholder#apply
|
154
|
+
#
|
155
|
+
# Returns the value of the placeholder in the given data
|
156
|
+
# with the given operation performed on it
|
157
|
+
#
|
158
|
+
# Parameter: data - the data being applied
|
159
|
+
#
|
160
|
+
# Return: the value of the placeholder in the given data
|
161
|
+
# with the given operation performed on it
|
162
|
+
describe '#apply' do
|
163
|
+
it 'returns the value in the data/default at the name (with operation and arguments applied if given)' do
|
164
|
+
expect(@partial1.apply @hash).to eql @result1
|
165
|
+
expect(@partial2.apply @hash).to eql @result2
|
166
|
+
expect(@partial3.apply @hash).to eql @result3
|
167
|
+
expect(@partial4.apply @hash).to eql @result4
|
168
|
+
expect(@partial5.apply @hash).to eql @result5
|
169
|
+
end
|
170
|
+
end
|
171
|
+
|
172
|
+
# Describe General::GTemplate#string
|
173
|
+
#
|
174
|
+
# Returns the string representation of the placeholder
|
175
|
+
#
|
176
|
+
# Parameter: first - true if the placeholder is the first of its kind in the GTemplate
|
177
|
+
#
|
178
|
+
# Return: the string representation of the placeholder
|
179
|
+
describe '#string' do
|
180
|
+
# -------------------------------------NO FIRST---------------------------------------
|
181
|
+
it 'returns the first string representation of the placeholder by default' do
|
182
|
+
expect(@partial1.string).to eql @string_first1
|
183
|
+
expect(@partial2.string).to eql @string_first2
|
184
|
+
expect(@partial3.string).to eql @string_first3
|
185
|
+
expect(@partial4.string).to eql @string_first4
|
186
|
+
end
|
187
|
+
|
188
|
+
# ------------------------------------TRUE FIRST--------------------------------------
|
189
|
+
it 'returns the first string representation of the placeholder when first is true' do
|
190
|
+
expect(@partial1.string true).to eql @string_first1
|
191
|
+
expect(@partial2.string true).to eql @string_first2
|
192
|
+
expect(@partial3.string true).to eql @string_first3
|
193
|
+
expect(@partial4.string true).to eql @string_first4
|
194
|
+
end
|
195
|
+
|
196
|
+
# -----------------------------------FALSE FIRST--------------------------------------
|
197
|
+
it 'returns the string representation of the placeholder when first is false' do
|
198
|
+
expect(@partial1.string false).to eql @string1
|
199
|
+
expect(@partial2.string false).to eql @string2
|
200
|
+
expect(@partial3.string false).to eql @string3
|
201
|
+
expect(@partial4.string false).to eql @string4
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
# Describe General::GTemplate#regex (depricated)
|
206
|
+
#
|
207
|
+
# Returns the string as a regex
|
208
|
+
#
|
209
|
+
# Parameter: first - true if the placeholder is the first of its kind in the GTemplate
|
210
|
+
#
|
211
|
+
# Returns: the string as a regex
|
212
|
+
describe '#regex (depricated)' do
|
213
|
+
# -------------------------------------NO FIRST---------------------------------------
|
214
|
+
it 'returns the first regex representation of the placeholder by default' do
|
215
|
+
expect(@partial1.regex).to eql @regex_first1
|
216
|
+
expect(@partial2.regex).to eql @regex_first2
|
217
|
+
expect(@partial3.regex).to eql @regex_first3
|
218
|
+
expect(@partial4.regex).to eql @regex_first4
|
219
|
+
end
|
220
|
+
|
221
|
+
# ------------------------------------TRUE FIRST--------------------------------------
|
222
|
+
it 'returns the first regex representation of the placeholder when first is true' do
|
223
|
+
expect(@partial1.regex true).to eql @regex_first1
|
224
|
+
expect(@partial2.regex true).to eql @regex_first2
|
225
|
+
expect(@partial3.regex true).to eql @regex_first3
|
226
|
+
expect(@partial4.regex true).to eql @regex_first4
|
227
|
+
end
|
228
|
+
|
229
|
+
# -----------------------------------FALSE FIRST--------------------------------------
|
230
|
+
it 'returns the regex representation of the placeholder when first is false' do
|
231
|
+
expect(@partial1.regex false).to eql @regex1
|
232
|
+
expect(@partial2.regex false).to eql @regex2
|
233
|
+
expect(@partial3.regex false).to eql @regex3
|
234
|
+
expect(@partial4.regex false).to eql @regex4
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# General is a templating system in ruby
|
2
|
+
# Copyright (C) 2016 Anshul Kharbanda
|
3
|
+
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
require_relative "spec_require"
|
18
|
+
|
19
|
+
# Describe General::GSpecial
|
20
|
+
#
|
21
|
+
# Represents a special character in a GTemplate
|
22
|
+
#
|
23
|
+
# Author: Anshul Kharbanda
|
24
|
+
# Created: 7 - 1 - 2016
|
25
|
+
describe General::GSpecial do
|
26
|
+
before :all do
|
27
|
+
@key = "at"
|
28
|
+
@text = "@"
|
29
|
+
@regex = /@/
|
30
|
+
@partial = General::GSpecial.new key: @key
|
31
|
+
end
|
32
|
+
|
33
|
+
# Describe General::GSpecial::new
|
34
|
+
#
|
35
|
+
# Creates the GSpecial with the given match
|
36
|
+
#
|
37
|
+
# Parameter: match - the match object of the GSpecial
|
38
|
+
describe '::new' do
|
39
|
+
it 'creates the GSpecial with the given match object' do
|
40
|
+
expect(@partial).to be_an_instance_of General::GSpecial
|
41
|
+
expect(@partial.name).to eql General::GSpecial::PTNAME
|
42
|
+
expect(@partial.instance_variable_get :@text).to eql @text
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# Describe General::GSpecial#regex
|
47
|
+
#
|
48
|
+
# Returns the special character
|
49
|
+
#
|
50
|
+
# Parameter: data - the data to apply to the partial
|
51
|
+
#
|
52
|
+
# Returns: the special character
|
53
|
+
describe '#apply' do
|
54
|
+
it 'returns the special character' do
|
55
|
+
expect(@partial.apply({})).to eql @text
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Describe General::GSpecial#string
|
60
|
+
#
|
61
|
+
# Returns the string representation of the GSpecial
|
62
|
+
#
|
63
|
+
# Parameter: first - true if this partial is the first of it's kind in a GTemplate
|
64
|
+
#
|
65
|
+
# Returns: the string representation of the GSpecial
|
66
|
+
describe '#string' do
|
67
|
+
it 'returns the string representation of the GSpecial' do
|
68
|
+
expect(@partial.string).to eql "@#{@key};"
|
69
|
+
expect(@partial.string false).to eql "@#{@key};"
|
70
|
+
expect(@partial.string true).to eql "@#{@key};"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# Describe General::GSpecial#regex (depricated)
|
75
|
+
#
|
76
|
+
# Returns the GSpecial as a regex
|
77
|
+
#
|
78
|
+
# Parameter: first - true if this partial is the first of it's kind in a GTemplate
|
79
|
+
#
|
80
|
+
# Returns: the GSpecial as a regex
|
81
|
+
describe '#regex (depricated)' do
|
82
|
+
it 'returns the regex representation of the GSpecial' do
|
83
|
+
expect(@partial.regex).to eql @regex
|
84
|
+
expect(@partial.regex false).to eql @regex
|
85
|
+
expect(@partial.regex true).to eql @regex
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# General is a templating system in ruby
|
2
|
+
# Copyright (C) 2016 Anshul Kharbanda
|
3
|
+
#
|
4
|
+
# This program is free software: you can redistribute it and/or modify
|
5
|
+
# it under the terms of the GNU General Public License as published by
|
6
|
+
# the Free Software Foundation, either version 3 of the License, or
|
7
|
+
# (at your option) any later version.
|
8
|
+
#
|
9
|
+
# This program is distributed in the hope that it will be useful,
|
10
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
11
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
12
|
+
# GNU General Public License for more details.
|
13
|
+
#
|
14
|
+
# You should have received a copy of the GNU General Public License
|
15
|
+
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
16
|
+
|
17
|
+
require_relative "spec_require"
|
18
|
+
|
19
|
+
# Describe General::GText
|
20
|
+
#
|
21
|
+
# Represents a plain text partial in a GTemplate
|
22
|
+
#
|
23
|
+
# Author: Anshul Kharbanda
|
24
|
+
# Created: 7 - 1 - 2016
|
25
|
+
describe General::GText do
|
26
|
+
before :all do
|
27
|
+
@text = "foobar"
|
28
|
+
@regex = "foobar"
|
29
|
+
@partial = General::GText.new @text
|
30
|
+
end
|
31
|
+
|
32
|
+
# Describe General::GText::new
|
33
|
+
#
|
34
|
+
# Creates the GText with the given match
|
35
|
+
#
|
36
|
+
# Parameter: match - the match object of the GText
|
37
|
+
describe '::new' do
|
38
|
+
it 'creates the GText with the given to_s representable object' do
|
39
|
+
expect(@partial).to be_an_instance_of General::GText
|
40
|
+
expect(@partial.name).to eql General::GText::PTNAME
|
41
|
+
expect(@partial.instance_variable_get :@text).to eql @text
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Describe General::GText#apply
|
46
|
+
#
|
47
|
+
# Returns the text
|
48
|
+
#
|
49
|
+
# Parameter: data - the data to apply to the partial
|
50
|
+
#
|
51
|
+
# Returns: the text
|
52
|
+
describe '#apply' do
|
53
|
+
it 'returns the GText string, given a hash of data' do
|
54
|
+
expect(@partial.apply @hash).to eql @text
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
# Describe General::GText#string
|
59
|
+
#
|
60
|
+
# Returns the text as a string
|
61
|
+
#
|
62
|
+
# Parameter: first - true if this partial is the first of it's kind in a GTemplate
|
63
|
+
#
|
64
|
+
# Returns: the text as a string
|
65
|
+
describe '#string' do
|
66
|
+
it 'returns the string representation of the GText' do
|
67
|
+
expect(@partial.string).to eql @text
|
68
|
+
expect(@partial.string true).to eql @text
|
69
|
+
expect(@partial.string false).to eql @text
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# Describe General::GText#regex (depricated)
|
74
|
+
#
|
75
|
+
# Returns the text as a regex
|
76
|
+
#
|
77
|
+
# Parameter: first - true if this partial is the first of it's kind in a GTemplate
|
78
|
+
#
|
79
|
+
# Returns: the text as a regex
|
80
|
+
describe '#regex (depricated)' do
|
81
|
+
it 'returns the regex representation of the GText' do
|
82
|
+
expect(@partial.regex).to eql @regex
|
83
|
+
expect(@partial.regex true).to eql @regex
|
84
|
+
expect(@partial.regex false).to eql @regex
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|