teepee 0.14.2 → 0.15.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 934a4375366a91d6eb2af5b31e9536f3913c77d2
4
- data.tar.gz: 91a64a44e704e7bdcf92ba27567e7b9d000662db
3
+ metadata.gz: 2091fbdcf89abb71108a72003d0e556cc0ae859c
4
+ data.tar.gz: 851d783a735722e9cf6eac53f62803ae677ec0a7
5
5
  SHA512:
6
- metadata.gz: 58f7eb26662febca1755054842436cb28603095246dbe1782b7b8ce8df9562b777b4cca4fe8489c0cb2063732a0b9b77fba9b344a66a801d7e9bc42e39203baa
7
- data.tar.gz: f3bb26a8c3889f8d5b2239253c142b47f4ca483ec3ce812f69523e3c2f993773597b12f19f560cdebbe968ddf009cafc9e814d631b5fdff774fa016217f146e5
6
+ metadata.gz: e733f41d8acc60cb5a1481701314e44bd2a1dc9c978e4649228dd0bbe49aa1d7df8266ed04a4f4b1baa879581ff658fbfee2cc42113eaef29c188c16506c80ae
7
+ data.tar.gz: 118aa06480c8c2a6d4c7b0d27fda745fc9cc290ab1b76533c6502be1f29be5663d85f9de2c37598bb733c7dcfc253287ddefe94ba48256475180024b2e5beff7
@@ -38,6 +38,7 @@
38
38
  module Teepee
39
39
  end
40
40
 
41
+ require 'set'
41
42
  require 'active_support/all'
42
43
  require 'monkey-patch'
43
44
 
@@ -65,6 +66,12 @@ class String
65
66
  end
66
67
  end
67
68
 
69
+ class NilClass
70
+ def to_html
71
+ ""
72
+ end
73
+ end
74
+
68
75
  require 'teepee/constants'
69
76
  require 'teepee/errors'
70
77
  require 'teepee/parser-node'
@@ -424,14 +424,22 @@ module Teepee
424
424
  @@commander.prog1_operator expressions
425
425
  when "progn"
426
426
  @@commander.progn_operator expressions
427
+ when "prognil"
428
+ @@commander.prognil expressions
427
429
  when "cond"
428
430
  @@commander.cond_operator expressions
429
431
  when "case"
430
432
  @@commander.case_operator expressions
431
433
  when "get"
432
434
  @@commander.get_operator first_word_token
433
- when "set"
434
- @@commander.set_operator expressions
435
+ when "define",
436
+ "def"
437
+ @@commander.define expressions
438
+ when "undefine",
439
+ "undef"
440
+ @@commander.undefine expressions
441
+ when "defined?"
442
+ @@commander.defined? word_tokens
435
443
  when "dotimes"
436
444
  @@commander.dotimes expressions
437
445
  else
@@ -378,6 +378,20 @@ module Teepee
378
378
  ensure_numeric Math.cosh angle.to_number
379
379
  end
380
380
 
381
+ def define expressions
382
+ variable, _, value = expressions
383
+ @variables[variable.to_html] = value
384
+ value.to_html
385
+ end
386
+
387
+ def defined? variables
388
+ if Set.new(variables.map(&:to_html)).subset? Set.new(@variables.keys)
389
+ true_constant
390
+ else
391
+ false_constant
392
+ end
393
+ end
394
+
381
395
  def degrees2radians degrees
382
396
  ensure_numeric degrees.to_number * Math::PI / 180.0
383
397
  end
@@ -461,7 +475,7 @@ module Teepee
461
475
  end
462
476
 
463
477
  def get_operator variable
464
- @variables[variable.to_s].to_html
478
+ @variables[variable.to_html].to_html
465
479
  end
466
480
 
467
481
  def greater_than numbers
@@ -697,6 +711,11 @@ module Teepee
697
711
  expressions.map(&:to_html).last
698
712
  end
699
713
 
714
+ def prognil expressions
715
+ expressions.map(&:to_html)
716
+ ""
717
+ end
718
+
700
719
  def radians2degrees radians
701
720
  ensure_numeric(radians.to_number * 180.0 / Math::PI)
702
721
  end
@@ -717,12 +736,6 @@ module Teepee
717
736
  end
718
737
  end
719
738
 
720
- def set_operator expressions
721
- variable, _, value = expressions
722
- @variables[variable.to_s] = value
723
- value.to_html
724
- end
725
-
726
739
  def sin angle
727
740
  ensure_numeric Math.sin angle.to_number
728
741
  end
@@ -799,6 +812,13 @@ module Teepee
799
812
  html_tag :u, expressions
800
813
  end
801
814
 
815
+ def undefine expressions
816
+ expressions.each do |expression|
817
+ @variables.delete expression.to_html
818
+ end
819
+ ""
820
+ end
821
+
802
822
  def unless_operator expressions
803
823
  expressions = strip expressions
804
824
  conditional = expressions.first
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teepee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.2
4
+ version: 0.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Mark Gore