Module: BRS::Stream::WriterHelpers

Included in:
Writer
Defined in:
lib/brs/stream/writer_helpers.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



88
89
90
# File 'lib/brs/stream/writer_helpers.rb', line 88

def self.included(klass)
  klass.extend ClassMethods
end

Instance Method Details

#<<(object) ⇒ Object



10
11
12
# File 'lib/brs/stream/writer_helpers.rb', line 10

def <<(object)
  write object
end


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/brs/stream/writer_helpers.rb', line 14

def print(*objects)
  if objects.empty?
    write $LAST_READ_LINE unless $LAST_READ_LINE.nil?
    return nil
  end

  objects.each do |object|
    write object
    write $OUTPUT_FIELD_SEPARATOR unless $OUTPUT_FIELD_SEPARATOR.nil?
  end

  write $OUTPUT_RECORD_SEPARATOR unless $OUTPUT_RECORD_SEPARATOR.nil?

  nil
end

#printf(*args) ⇒ Object



30
31
32
33
34
# File 'lib/brs/stream/writer_helpers.rb', line 30

def printf(*args)
  write sprintf(*args)

  nil
end

#putc(object, encoding: ::Encoding::BINARY) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/brs/stream/writer_helpers.rb', line 36

def putc(object, encoding: ::Encoding::BINARY)
  if object.is_a? ::Numeric
    write object.chr(encoding)
  elsif object.is_a? ::String
    write object[0]
  else
    raise ValidateError, "invalid object: \"#{object}\" for putc"
  end

  object
end

#puts(*objects) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/brs/stream/writer_helpers.rb', line 48

def puts(*objects)
  objects.each do |object|
    if object.is_a? ::Array
      puts(*object)
      next
    end

    source  = object.to_s
    newline = "\n".encode source.encoding

    # Do not add newline if source ends with newline.
    if source.end_with? newline
      write source
    else
      write source + newline
    end
  end

  nil
end