Class: TreeSitter::Logger

Inherits:
Object
  • Object
show all
Defined in:
ext/tree_sitter/logger.c

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Object

Create a new logger.

By default, it logs to stderr.

You can provide your proper backend. You have to make sure that it exposes a printf, puts, or write (lookup is done in that specific order). StringIO is a perfect candidate.

You can also provide a format (String) if your backend supports a printf.

Examples:

backend = StringIO.new
parser.logger = TreeSitter::Logger.new(backend)

Parameters:

  • args (Array)

    The first argument is always a backend. The second argument is the format.



168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
# File 'ext/tree_sitter/logger.c', line 168

static VALUE logger_initialize(int argc, VALUE *argv, VALUE self) {
  // TODO:
  // For now, we only take:
  //   argv[0] = stream
  //   argv[1] = format : String
  // We need to add support for argv[1] : lambda/block
  //   case argv[1]
  //   in lambda => lambda
  //   in String => puts || printf || write
  //   else      => write
  //   end
  logger_t *logger = unwrap(self);

  VALUE payload;
  VALUE format;
  rb_scan_args(argc, argv, "02", &payload, &format);

  logger->format = format;

  if (argc == 0) {
    logger_initialize_stderr(logger);
  } else {
    logger_payload_set(logger, payload);
  }

  return self;
}

Instance Method Details

#inspectObject



196
197
198
199
200
# File 'ext/tree_sitter/logger.c', line 196

static VALUE logger_inspect(VALUE self) {
  logger_t *logger = unwrap(self);
  return rb_sprintf("{payload=%+" PRIsVALUE ", format=%+" PRIsVALUE "}",
                    logger->payload, logger->format);
}

#printfObject

#putsObject

#to_sObject



196
197
198
199
200
# File 'ext/tree_sitter/logger.c', line 196

static VALUE logger_inspect(VALUE self) {
  logger_t *logger = unwrap(self);
  return rb_sprintf("{payload=%+" PRIsVALUE ", format=%+" PRIsVALUE "}",
                    logger->payload, logger->format);
}

#writeObject