Sha256: 6a33af651ee2357d7fb49cbbb23caf9253a717de0286a27dd7343e65a65f8ad8

Contents?: true

Size: 764 Bytes

Versions: 1

Compression:

Stored size: 764 Bytes

Contents

#include "ccsv.h"

static VALUE rb_cC;

static VALUE foreach(VALUE self, VALUE filename) {

  FILE *file = fopen(StringValueCStr(filename), "r");
  if (file == NULL)
    rb_raise(rb_eRuntimeError, "File not found");
  
  char line[MAX_LENGTH];
  char *token;
  VALUE parsed = rb_ary_new2(2);
  ID clear = rb_intern("clear");
  
  int i, j;
  while (fgets(line, sizeof(line), file) != NULL) {
    token = strtok(line, DELIMITERS);
    rb_funcall(parsed, clear, 0);
    
    while (token != NULL) {
      rb_ary_push(parsed, rb_str_new2(token));
      token = strtok(NULL, DELIMITERS);
    }
    rb_yield(parsed);
  }

  return Qnil;
}

void
Init_ccsv()
{
  rb_cC = rb_define_class("Ccsv", rb_cObject);
  rb_define_singleton_method(rb_cC, "foreach", foreach, 1);
}

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ccsv-0.0.1 ext/ccsv.c