teepee 0.15.0 → 0.15.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2091fbdcf89abb71108a72003d0e556cc0ae859c
4
- data.tar.gz: 851d783a735722e9cf6eac53f62803ae677ec0a7
3
+ metadata.gz: 4cf1667f856da637023b09ff20bea473e2a7afb5
4
+ data.tar.gz: 71a0186abc1b1adf0addcd8e56fdef6a88455b67
5
5
  SHA512:
6
- metadata.gz: e733f41d8acc60cb5a1481701314e44bd2a1dc9c978e4649228dd0bbe49aa1d7df8266ed04a4f4b1baa879581ff658fbfee2cc42113eaef29c188c16506c80ae
7
- data.tar.gz: 118aa06480c8c2a6d4c7b0d27fda745fc9cc290ab1b76533c6502be1f29be5663d85f9de2c37598bb733c7dcfc253287ddefe94ba48256475180024b2e5beff7
6
+ metadata.gz: d1947fa3ce5f652143f62689cd98c2c552af27d3539f4dc8dba878f26c81e6e0dfdef030c7b66ed04e495b20fb4864d6a47c50b63f9394b2832bb2aadc1cf363
7
+ data.tar.gz: 0fb35c12ad54e037c4e4605cf190ebd1c59aeed99332ecfbc5ba1fc8a9c1efe4eccca0aedeb4ce0c51cf835309a01338093d14dc9ab0cc46fb7ba038fdf8787b
@@ -46,9 +46,11 @@ require 'teepee/actionable-commander'
46
46
 
47
47
  module Teepee
48
48
  class CommandParser < ParserNode
49
+ attr_accessor :parser
49
50
  attr_reader :command, :expressions
50
51
 
51
- def initialize(command, expressions)
52
+ def initialize(parser, command, expressions)
53
+ @parser = parser
52
54
  raise ArgumentError if not command.is_a? WordToken
53
55
  @command = command
54
56
  raise ArgumentError if not expressions.is_a? Array
@@ -67,7 +69,8 @@ module Teepee
67
69
  end
68
70
 
69
71
  def to_html
70
- if @@commander.variables.include? command.word
72
+ @@commander.parser = @parser
73
+ if @parser.variables.include? command.word
71
74
  @@commander.get_operator command.word
72
75
  else
73
76
  builtins
@@ -472,7 +475,8 @@ module Teepee
472
475
  @@action_view = nil
473
476
  @@controller = nil
474
477
 
475
- def parse(tokens)
478
+ def parse(parser, tokens)
479
+ @parser = parser
476
480
  expressions = []
477
481
  rest = tokens
478
482
  backslash, command, left_brace = rest.shift(3)
@@ -481,23 +485,23 @@ module Teepee
481
485
  raise ParseError if not command.is_a? WordToken
482
486
  if not left_brace.is_a? LeftBraceToken # A command with no interior.
483
487
  rest.unshift left_brace if not left_brace.is_a? WhitespaceToken
484
- return [CommandParser.new(command, []), rest]
488
+ return [CommandParser.new(parser, command, []), rest]
485
489
  end
486
490
  while rest.length > 0
487
491
  if rest.first.is_a? WordToken or rest.first.is_a? WhitespaceToken or rest.first.is_a? PipeToken
488
492
  expressions << rest.shift
489
493
  elsif rest.first.is_a? BackslashToken
490
- result, rest = CommandParser.parse(rest)
494
+ result, rest = CommandParser.parse(parser, rest)
491
495
  expressions << result
492
496
  elsif rest.first.is_a? RightBraceToken
493
497
  right_brace = rest.shift
494
- return [CommandParser.new(command, expressions), rest]
498
+ return [CommandParser.new(parser, command, expressions), rest]
495
499
  else
496
500
  raise ParseError
497
501
  end
498
502
  end
499
503
  if right_brace.nil? # Allow a forgotten final right brace.
500
- return [CommandParser.new(command, expressions), rest]
504
+ return [CommandParser.new(parser, command, expressions), rest]
501
505
  end
502
506
  end
503
507
 
@@ -37,11 +37,10 @@
37
37
 
38
38
  module Teepee
39
39
  class Commander
40
- attr_reader :variables
40
+ attr_accessor :parser
41
41
 
42
42
  def initialize params
43
43
  # We don't use the params in the base class, but might in derived classes.
44
- @variables = Hash.new
45
44
  end
46
45
 
47
46
  def valid_uri? uri
@@ -380,12 +379,12 @@ module Teepee
380
379
 
381
380
  def define expressions
382
381
  variable, _, value = expressions
383
- @variables[variable.to_html] = value
382
+ @parser.variables[variable.to_html] = value
384
383
  value.to_html
385
384
  end
386
385
 
387
386
  def defined? variables
388
- if Set.new(variables.map(&:to_html)).subset? Set.new(@variables.keys)
387
+ if Set.new(variables.map(&:to_html)).subset? Set.new(@parser.variables.keys)
389
388
  true_constant
390
389
  else
391
390
  false_constant
@@ -475,7 +474,7 @@ module Teepee
475
474
  end
476
475
 
477
476
  def get_operator variable
478
- @variables[variable.to_html].to_html
477
+ @parser.variables[variable.to_html].to_html
479
478
  end
480
479
 
481
480
  def greater_than numbers
@@ -814,7 +813,7 @@ module Teepee
814
813
 
815
814
  def undefine expressions
816
815
  expressions.each do |expression|
817
- @variables.delete expression.to_html
816
+ @parser.variables.delete expression.to_html
818
817
  end
819
818
  ""
820
819
  end
@@ -49,7 +49,8 @@ module Teepee
49
49
  class ParagraphParser < ParserNode
50
50
  attr_reader :expressions, :tokens
51
51
 
52
- def initialize(tokens)
52
+ def initialize(parser, tokens)
53
+ @parser = parser
53
54
  raise ArgumentError if not tokens.is_a? Array
54
55
  tokens.each {|token| raise ArgumentError if not token.kind_of? ParserNode}
55
56
  @tokens = tokens
@@ -65,7 +66,7 @@ module Teepee
65
66
  elsif rest.first.is_a? WhitespaceToken
66
67
  @expressions << rest.shift
67
68
  elsif rest.first.is_a? BackslashToken
68
- command, rest = CommandParser.parse(rest)
69
+ command, rest = CommandParser.parse(@parser, rest)
69
70
  @expressions << command
70
71
  else
71
72
  return self
@@ -53,6 +53,7 @@ require 'teepee/paragraph-parser'
53
53
 
54
54
  module Teepee
55
55
  class Parser < ParserNode
56
+ attr_accessor :variables
56
57
  attr_reader :paragraphs, :split_tokens, :text, :tokenizer
57
58
 
58
59
  def tokens
@@ -60,6 +61,7 @@ module Teepee
60
61
  end
61
62
 
62
63
  def initialize(text)
64
+ @variables = Hash.new
63
65
  @text = text
64
66
  @tokenizer = Tokenizer.new text
65
67
  parse
@@ -67,7 +69,7 @@ module Teepee
67
69
 
68
70
  def parse
69
71
  @split_tokens = tokens.split {|token| token.class == EmptyNewlinesToken}
70
- @paragraphs = @split_tokens.map {|split_tokens| ParagraphParser.new split_tokens}
72
+ @paragraphs = @split_tokens.map {|split_tokens| ParagraphParser.new(self, split_tokens)}
71
73
  end
72
74
 
73
75
  def to_html
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.15.0
4
+ version: 0.15.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christopher Mark Gore