general 1.2.7 → 1.2.8
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/lib/gpartials.rb +12 -10
- data/lib/gtemplate.rb +44 -49
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6fc766e79d0ec1c3e71a07ac54fa1193b3b88c43
|
4
|
+
data.tar.gz: fa31d5069f16b9bcf189fcefd01d170d95cf5866
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4075d13c08a615e5c2a8b98e25cefce84f4204cd934e89b1f69950d93b1584521b8b3a44513cbb7db94b3892834940463a53006c6ae8a34536c65a4eb54b9fc
|
7
|
+
data.tar.gz: 5e5d75fa9e38506bd9422f9a6879dcbdfa369c85857f20707b999c0e7b7cae0e5df0856453687b0369a50e7810d8c6b17f7cf1bd4e06d7010674d99a62810e5d
|
data/lib/gpartials.rb
CHANGED
@@ -29,8 +29,8 @@ module General
|
|
29
29
|
# Initializes the GPartialString with the given string
|
30
30
|
#
|
31
31
|
# Parameter: string - the string value of the GPartialString
|
32
|
-
def initialize(string)
|
33
|
-
@string = string
|
32
|
+
def initialize(string, match=nil)
|
33
|
+
@string = match ? string[0...match.begin(0)] : string
|
34
34
|
end
|
35
35
|
|
36
36
|
# Returns the string
|
@@ -54,17 +54,19 @@ module General
|
|
54
54
|
# Created: 7 - 1 - 2016
|
55
55
|
class GPlaceholder
|
56
56
|
# Regular expression that matches placeholders
|
57
|
-
REGEX = /@\((?<name>[a-zA-Z]\w*)\s*(\:\s*(?<default>.*?))?\s*(->\s*(?<operation>[
|
57
|
+
REGEX = /@\((?<name>[a-zA-Z]\w*)\s*(\:\s*(?<default>.*?))?\s*(->\s*(?<operation>[\w+\s+]+))?\)/
|
58
58
|
|
59
59
|
# Read name
|
60
60
|
attr :name
|
61
61
|
|
62
62
|
# Initializes the GPlaceholder with the given match
|
63
63
|
#
|
64
|
-
# Parameter: match
|
65
|
-
|
64
|
+
# Parameter: match - the match data from the string being parsed
|
65
|
+
# Parameter: defaults - the hash of default data from the GTemplate
|
66
|
+
def initialize match, defaults
|
66
67
|
@name = match[:name].to_sym
|
67
68
|
@operation = match[:operation]
|
69
|
+
@defaults = defaults
|
68
70
|
end
|
69
71
|
|
70
72
|
# Returns the value of the placeholder in the given data
|
@@ -75,11 +77,11 @@ module General
|
|
75
77
|
# Return: the value of the placeholder in the given data
|
76
78
|
# with the given operation performed on it
|
77
79
|
def apply data
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
80
|
+
# Get value from either data or defaults
|
81
|
+
value = data[@name] || @defaults[@name]
|
82
|
+
|
83
|
+
# Return value (operation performed if one is defined)
|
84
|
+
return (@operation ? General::GOperations.send(@operation, value) : value).to_s
|
83
85
|
end
|
84
86
|
|
85
87
|
# Returns the string representation of the placeholder
|
data/lib/gtemplate.rb
CHANGED
@@ -31,9 +31,9 @@ module General
|
|
31
31
|
#
|
32
32
|
# Parameter: string - the string being converted to a template
|
33
33
|
def initialize string
|
34
|
-
# The string gets split into
|
35
|
-
@
|
36
|
-
@defaults
|
34
|
+
# The string gets split into partials by placeholder and array template
|
35
|
+
@partials = []
|
36
|
+
@defaults = {}
|
37
37
|
|
38
38
|
parse_string string
|
39
39
|
end
|
@@ -41,7 +41,9 @@ module General
|
|
41
41
|
# Returns a string representation of the string
|
42
42
|
#
|
43
43
|
# Return: a string representation of the string
|
44
|
-
def to_s
|
44
|
+
def to_s
|
45
|
+
return @partials.collect(&:to_s).join
|
46
|
+
end
|
45
47
|
|
46
48
|
# Applies the given data to the template and returns the generated string
|
47
49
|
#
|
@@ -49,11 +51,7 @@ module General
|
|
49
51
|
#
|
50
52
|
# Return: string of the template with the given data applied
|
51
53
|
def apply data={}
|
52
|
-
|
53
|
-
applied_data = @defaults.merge data.to_hash
|
54
|
-
|
55
|
-
# Apply each part
|
56
|
-
return @parts.inject("") { |string, part| string += part.apply(applied_data) }
|
54
|
+
return @partials.collect { |partial| partial.apply(data) }.join
|
57
55
|
end
|
58
56
|
|
59
57
|
# Applies each data structure in the array independently to the template
|
@@ -74,56 +72,53 @@ module General
|
|
74
72
|
# Parameter: string - the string to check for a placeholder
|
75
73
|
#
|
76
74
|
# Return: true if given string has a placeholder
|
77
|
-
def
|
78
|
-
|
79
|
-
|
80
|
-
return !
|
75
|
+
def has_next string
|
76
|
+
next_p = General::GPlaceholder::REGEX =~ string
|
77
|
+
next_a = General::GArrayPlaceholder::REGEX =~ string
|
78
|
+
return !((next_p.nil? || next_p < 0) && (next_a.nil? || next_a < 0))
|
79
|
+
end
|
80
|
+
|
81
|
+
# Returns true if the next placeholder is an aray placeholder
|
82
|
+
#
|
83
|
+
# Parameter: string - the string to check for an array placeholder
|
84
|
+
#
|
85
|
+
# Return: true if the next placeholder is an aray placeholder
|
86
|
+
def next_array_placeholder string
|
87
|
+
next_p = General::GPlaceholder::REGEX =~ string
|
88
|
+
next_a = General::GArrayPlaceholder::REGEX =~ string
|
89
|
+
return !(next_a.nil? || next_p.nil?) && next_a < next_p
|
81
90
|
end
|
82
91
|
|
83
92
|
# Parses the string into General template data
|
84
93
|
#
|
85
94
|
# Parameter: string - the string to parse
|
86
95
|
def parse_string string
|
87
|
-
# While there is still a placeholder in string
|
88
|
-
while
|
89
|
-
#
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
# If found only placeholder (or if found placeholder before array placeholder)
|
107
|
-
# Process placeholder
|
108
|
-
elsif !(next_a.nil? || next_p.nil?) && next_p < next_a || next_a.nil?
|
109
|
-
# Split match and add previous part
|
110
|
-
match = General::GPlaceholder::REGEX.match string
|
111
|
-
@parts << General::GPartialString.new(string[0...match.begin(0)])
|
112
|
-
|
113
|
-
# Add placeholder
|
114
|
-
@parts << General::GPlaceholder.new(match)
|
115
|
-
|
116
|
-
# Push default information
|
117
|
-
@defaults[match[:name].to_sym] ||= match[:default]
|
118
|
-
end
|
119
|
-
|
120
|
-
# Trim string
|
121
|
-
string = string[match.end(0)..-1]
|
96
|
+
# While there is still a placeholder or array placeholder in string
|
97
|
+
while has_next string
|
98
|
+
# If next is array placeholder, process array placeholder
|
99
|
+
if next_array_placeholder string
|
100
|
+
# Split match and add partials
|
101
|
+
match = General::GArrayPlaceholder::REGEX.match string
|
102
|
+
@partials << General::GPartialString.new(string, match) \
|
103
|
+
<< General::GArrayPlaceholder.new(match)
|
104
|
+
|
105
|
+
# Else process placeholder
|
106
|
+
else
|
107
|
+
# Split match and add partials
|
108
|
+
match = General::GPlaceholder::REGEX.match string
|
109
|
+
@partials << General::GPartialString.new(string, match) \
|
110
|
+
<< General::GPlaceholder.new(match, @defaults)
|
111
|
+
|
112
|
+
# Push default information
|
113
|
+
@defaults[match[:name].to_sym] ||= match[:default]
|
122
114
|
end
|
115
|
+
|
116
|
+
# Trim string
|
117
|
+
string = string[match.end(0)..-1]
|
123
118
|
end
|
124
119
|
|
125
120
|
# Add end of string
|
126
|
-
@
|
121
|
+
@partials << General::GPartialString.new(string)
|
127
122
|
end
|
128
123
|
end
|
129
124
|
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: 1.2.
|
4
|
+
version: 1.2.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anshul Kharbanda
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-07-
|
11
|
+
date: 2016-07-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|