Sha256: 3e96e912f8da3be8a602f23e7742b7c73d65e0b6a68c984e9bb7e05de2a613c3
Contents?: true
Size: 1.44 KB
Versions: 19
Compression:
Stored size: 1.44 KB
Contents
# frozen_string_literal: true class Code class Node class String < Node class Part < Node class Code < Node def initialize(parsed) @code = Node::Code.new(parsed) end def evaluate(**args) @code.evaluate(**args) end end class Text < Node def initialize(parsed) @text = parsed end def evaluate(**_args) ::Code::Object::String.new( @text .gsub('\n', "\n") .gsub('\r', "\r") .gsub('\t', "\t") .gsub('\b', "\b") .gsub('\f', "\f") .gsub('\a', "\a") .gsub('\e', "\e") ) end end def initialize(parsed) if parsed.key?(:text) @part = Node::String::Part::Text.new(parsed.delete(:text)) elsif parsed.key?(:code) @part = Node::String::Part::Code.new(parsed.delete(:code)) end super(parsed) end def evaluate(**args) @part.evaluate(**args) end end def initialize(parsed) parsed = [] if parsed == "" @parts = parsed.map { |part| Node::String::Part.new(part) } end def evaluate(**args) ::Code::Object::String.new( @parts.map { |part| part.evaluate(**args) }.map(&:to_s).join ) end end end end
Version data entries
19 entries across 19 versions & 1 rubygems