Module: ZSTDS::Stream::WriterHelpers

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

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



86
87
88
# File 'lib/zstds/stream/writer_helpers.rb', line 86

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

Instance Method Details

#<<(object) ⇒ Object



12
13
14
# File 'lib/zstds/stream/writer_helpers.rb', line 12

def <<(object)
  write object
end


16
17
18
19
20
21
22
23
24
25
# File 'lib/zstds/stream/writer_helpers.rb', line 16

def print(*objects, field_separator: $OUTPUT_FIELD_SEPARATOR, record_separator: $OUTPUT_RECORD_SEPARATOR)
  objects.each do |object|
    write object
    write field_separator unless field_separator.nil?
  end

  write record_separator unless record_separator.nil?

  nil
end

#printf(*args) ⇒ Object



27
28
29
30
31
# File 'lib/zstds/stream/writer_helpers.rb', line 27

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

  nil
end

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



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/zstds/stream/writer_helpers.rb', line 33

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

  object
end

#puts(*objects) ⇒ Object



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

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