teepee 0.7.16 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/teepee/command-parser.rb +21 -0
- data/lib/teepee/commander.rb +97 -7
- 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: 73e4c9f9bfdf81a27259d00bfc83506d5296d091
|
4
|
+
data.tar.gz: ca33965c5c377195817a023ab06a86ba385f071a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abd50f42a45619391afa669e159abcbca1c4764950cd610e0aa473cae5c92e9b74b85593af3def0439d470b2ae621c74a9b2945de7480ce4332c9cce1b22ab4d
|
7
|
+
data.tar.gz: 2bb367a3e121cf795af6f830d7f836a21f87a15cb5664a5a9883e3ab22cfffa67b50757ab8932ab724b5682ab700a95762fb86a8b8cee62eee47af5f2c24b0c5
|
@@ -278,6 +278,17 @@ module Teepee
|
|
278
278
|
@@commander./ *numbers_from_expressions
|
279
279
|
when "%"
|
280
280
|
@@commander.% *numbers_from_expressions
|
281
|
+
when "+%"
|
282
|
+
@@commander.add_percentage *numbers_from_expressions
|
283
|
+
when "-%"
|
284
|
+
@@commander.subtract_percentage *numbers_from_expressions
|
285
|
+
when "%t",
|
286
|
+
"%total"
|
287
|
+
@@commander.percent_total *numbers_from_expressions
|
288
|
+
when "mod",
|
289
|
+
"modulus",
|
290
|
+
"modulo"
|
291
|
+
@@commander.mod *numbers_from_expressions
|
281
292
|
when "^", "**"
|
282
293
|
@@commander.** *numbers_from_expressions
|
283
294
|
when "sin", "cos", "tan",
|
@@ -310,6 +321,16 @@ module Teepee
|
|
310
321
|
@@commander.ldexp fraction, exponent
|
311
322
|
when "hypot"
|
312
323
|
@@commander.hypot numbers_from_expressions
|
324
|
+
when "true"
|
325
|
+
@@commander.true_constant
|
326
|
+
when "false"
|
327
|
+
@@commander.false_constant
|
328
|
+
when "not"
|
329
|
+
@@commander.boolean_not first_word_token
|
330
|
+
when "and"
|
331
|
+
@@commander.boolean_and expressions
|
332
|
+
when "or"
|
333
|
+
@@commander.boolean_or expressions
|
313
334
|
else
|
314
335
|
command_error "unknown command #{command.to_html}"
|
315
336
|
end
|
data/lib/teepee/commander.rb
CHANGED
@@ -71,6 +71,14 @@ module Teepee
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
+
def ensure_boolean boolean
|
75
|
+
if boolean.to_s == "true" or boolean.to_s == "false"
|
76
|
+
boolean
|
77
|
+
else
|
78
|
+
command_error "Non-boolean value."
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
74
82
|
def html_tag tag, expressions, attribs=nil
|
75
83
|
opening_tag = if attribs
|
76
84
|
attribs_string = attribs.map {|k,v| %{#{k}="#{v}"}}.join " "
|
@@ -89,7 +97,7 @@ module Teepee
|
|
89
97
|
if expressions.nil?
|
90
98
|
opening_tag
|
91
99
|
else
|
92
|
-
opening_tag + expressions.map(&:to_html).join + "</#{tag}>"
|
100
|
+
opening_tag + expressions.map(&:to_html).join.strip + "</#{tag}>"
|
93
101
|
end
|
94
102
|
end
|
95
103
|
|
@@ -108,10 +116,28 @@ module Teepee
|
|
108
116
|
elsif not id.to_s =~ /\A[0-9]+\z/
|
109
117
|
command_error "#{singular}_id: error: invalid #{singular} ID specified"
|
110
118
|
else
|
111
|
-
tb_href "
|
119
|
+
tb_href "#{plural}/#{id.to_s}/#{view}", "#{klass.to_s} ##{id.to_s}"
|
112
120
|
end
|
113
121
|
end
|
114
122
|
|
123
|
+
def left_strip expressions
|
124
|
+
while expressions.first.kind_of? WhitespaceToken
|
125
|
+
expressions.shift
|
126
|
+
end
|
127
|
+
expressions
|
128
|
+
end
|
129
|
+
|
130
|
+
def right_strip expressions
|
131
|
+
while expressions.last.kind_of? WhitespaceToken
|
132
|
+
expressions.pop
|
133
|
+
end
|
134
|
+
expressions
|
135
|
+
end
|
136
|
+
|
137
|
+
def strip expressions
|
138
|
+
left_strip right_strip expressions
|
139
|
+
end
|
140
|
+
|
115
141
|
#----------------------------------------------------------------------------
|
116
142
|
|
117
143
|
def + *numbers
|
@@ -138,12 +164,28 @@ module Teepee
|
|
138
164
|
end
|
139
165
|
end
|
140
166
|
|
167
|
+
def ** *numbers
|
168
|
+
ensure_numeric numbers.reduce :**
|
169
|
+
end
|
170
|
+
|
141
171
|
def % *numbers
|
142
|
-
ensure_numeric numbers
|
172
|
+
ensure_numeric numbers
|
173
|
+
numbers.inject { |base, percent| base*percent/100.0 }
|
143
174
|
end
|
144
175
|
|
145
|
-
def
|
146
|
-
ensure_numeric numbers
|
176
|
+
def add_percentage *numbers
|
177
|
+
ensure_numeric numbers
|
178
|
+
numbers.inject {|base, percent| base * (1+percent/100.0) }
|
179
|
+
end
|
180
|
+
|
181
|
+
def subtract_percentage *numbers
|
182
|
+
ensure_numeric numbers
|
183
|
+
numbers.inject {|base, percent| base * (1-percent/100.0) }
|
184
|
+
end
|
185
|
+
|
186
|
+
def percent_total *numbers
|
187
|
+
ensure_numeric numbers
|
188
|
+
numbers.inject {|total, part| Float(part)/Float(total)*100.0 }
|
147
189
|
end
|
148
190
|
|
149
191
|
def acos number
|
@@ -186,6 +228,40 @@ module Teepee
|
|
186
228
|
id_command_handler id, :Folder, "folder", "folders", "folders/bookmarks_inline", "bookmarks"
|
187
229
|
end
|
188
230
|
|
231
|
+
def boolean_and expressions
|
232
|
+
if expressions.empty?
|
233
|
+
"true"
|
234
|
+
elsif expressions.first.to_s == "false"
|
235
|
+
"false"
|
236
|
+
elsif expressions.first.to_s == "true" or expressions.first.kind_of? WhitespaceToken
|
237
|
+
boolean_and expressions[1..-1]
|
238
|
+
else
|
239
|
+
command_error "Not a boolean value #{expressions.first}"
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
def boolean_not expression
|
244
|
+
if expression.to_s == "true"
|
245
|
+
"false"
|
246
|
+
elsif expression.to_s == "false"
|
247
|
+
"true"
|
248
|
+
else
|
249
|
+
command_error "Not a boolean value"
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
def boolean_or expressions
|
254
|
+
if expressions.empty?
|
255
|
+
"false"
|
256
|
+
elsif expressions.first.to_s == "true"
|
257
|
+
"true"
|
258
|
+
elsif expressions.first.to_s == "false" or expressions.first.kind_of? WhitespaceToken
|
259
|
+
boolean_or expressions[1..-1]
|
260
|
+
else
|
261
|
+
command_error "Not a boolean value"
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
189
265
|
def br
|
190
266
|
html_tag :br, nil
|
191
267
|
end
|
@@ -242,6 +318,10 @@ module Teepee
|
|
242
318
|
ensure_numeric Math.erfc number
|
243
319
|
end
|
244
320
|
|
321
|
+
def false_constant
|
322
|
+
"false"
|
323
|
+
end
|
324
|
+
|
245
325
|
def folder_id id
|
246
326
|
id_command_handler id, :Folder
|
247
327
|
end
|
@@ -259,7 +339,7 @@ module Teepee
|
|
259
339
|
end
|
260
340
|
|
261
341
|
def h2 expressions
|
262
|
-
html_tag :
|
342
|
+
html_tag :h2, expressions
|
263
343
|
end
|
264
344
|
|
265
345
|
def h3 expressions
|
@@ -283,6 +363,7 @@ module Teepee
|
|
283
363
|
end
|
284
364
|
|
285
365
|
def image expressions
|
366
|
+
expressions = strip expressions
|
286
367
|
uri, *alt_text = expressions
|
287
368
|
uri = ERB::Util.html_escape uri.to_s
|
288
369
|
if not valid_uri? uri
|
@@ -291,7 +372,7 @@ module Teepee
|
|
291
372
|
if alt_text.empty?
|
292
373
|
html_tag :img, nil, {src: uri}
|
293
374
|
else
|
294
|
-
html_tag :img, nil, {src: uri, alt: alt_text}
|
375
|
+
html_tag :img, nil, {src: uri, alt: alt_text.map(&:to_s).join.strip}
|
295
376
|
end
|
296
377
|
end
|
297
378
|
end
|
@@ -349,6 +430,7 @@ module Teepee
|
|
349
430
|
end
|
350
431
|
|
351
432
|
def link expressions
|
433
|
+
expressions = strip expressions
|
352
434
|
uri, *desc = expressions
|
353
435
|
uri = ERB::Util.html_escape uri.to_s
|
354
436
|
if not valid_uri? uri
|
@@ -380,6 +462,10 @@ module Teepee
|
|
380
462
|
ensure_numeric Math.log10 number
|
381
463
|
end
|
382
464
|
|
465
|
+
def mod *numbers
|
466
|
+
ensure_numeric numbers.reduce :%
|
467
|
+
end
|
468
|
+
|
383
469
|
def nbsp
|
384
470
|
" "
|
385
471
|
end
|
@@ -456,6 +542,10 @@ module Teepee
|
|
456
542
|
ensure_numeric Math.tanh number
|
457
543
|
end
|
458
544
|
|
545
|
+
def true_constant
|
546
|
+
"true"
|
547
|
+
end
|
548
|
+
|
459
549
|
def tt expressions
|
460
550
|
html_tag :tt, expressions
|
461
551
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: teepee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Mark Gore
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|