Sha256: 5290b04ff9fa81f082904e8f1d86230dc11ef54e138d91381449c76d92f701d7
Contents?: true
Size: 1.65 KB
Versions: 3
Compression:
Stored size: 1.65 KB
Contents
# frozen_string_literal: true class Code class Node class String < Node class Part < Node class Code < Node def initialize(parsed) return if parsed.blank? @code = Node::Code.new(parsed.presence) end def evaluate(**args) @code&.evaluate(**args) || Object::Nothing.new end end class Text < Node def initialize(parsed) return if parsed.blank? @text = parsed end def evaluate(**_args) ::Code::Object::String.new( @text .to_s .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) return if parsed.blank? if parsed.key?(:text) @part = Node::String::Part::Text.new(parsed.delete(:text).presence) elsif parsed.key?(:code) @part = Node::String::Part::Code.new(parsed.delete(:code).presence) end end def evaluate(**args) @part&.evaluate(**args) || Object::Nothing.new end end def initialize(parsed) return if parsed.blank? @parts = (parsed.presence || []).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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
code-ruby-0.13.1 | lib/code/node/string.rb |
code-ruby-0.13.0 | lib/code/node/string.rb |
code-ruby-0.12.0 | lib/code/node/string.rb |