Class: Rugged::Blob

Inherits:
RuggedObject
  • Object
show all
Defined in:
ext/rugged/rugged_blob.c

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.create(*args) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'ext/rugged/rugged_blob.c', line 64

static VALUE rb_git_blob_create(int argc, VALUE *argv, VALUE self)
{
	int error;
	git_oid oid;
	git_repository *repo;

	VALUE rb_buffer, rb_repo, rb_is_buffer = Qfalse;

	rb_scan_args(argc, argv, "21", &rb_repo, &rb_buffer, &rb_is_buffer);

	Check_Type(rb_buffer, T_STRING);
	if (!rb_obj_is_instance_of(rb_repo, rb_cRuggedRepo))
		rb_raise(rb_eTypeError, "Expecting a Rugged Repository");

	Data_Get_Struct(rb_repo, git_repository, repo);

	if (rugged_parse_bool(rb_is_buffer)) {
		error = git_blob_create_frombuffer(&oid, repo, RSTRING_PTR(rb_buffer), RSTRING_LEN(rb_buffer));
	} else {
		error = git_blob_create_fromfile(&oid, repo, StringValueCStr(rb_buffer));
	}

	rugged_exception_check(error);

	return rugged_create_oid(&oid);
}

Instance Method Details

#contentObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'ext/rugged/rugged_blob.c', line 33

static VALUE rb_git_blob_content_GET(VALUE self)
{
	git_blob *blob;
	size_t size;

	Data_Get_Struct(self, git_blob, blob);
	
	size = git_blob_rawsize(blob);
	if (size == 0)
		return rugged_str_ascii("", 0);

	/*
	 * since we don't really ever know the encoding of a blob
	 * lets default to the binary encoding (ascii-8bit)
	 * If there is a way to tell, we should just pass 0/null here instead
	 *
	 * we're skipping the use of STR_NEW because we don't want our string to
	 * eventually end up converted to Encoding.default_internal because this
	 * string could very well be binary data
	 */
	return rugged_str_ascii(git_blob_rawcontent(blob), size);
}

#sizeObject



56
57
58
59
60
61
62
# File 'ext/rugged/rugged_blob.c', line 56

static VALUE rb_git_blob_rawsize(VALUE self)
{
	git_blob *blob;
	Data_Get_Struct(self, git_blob, blob);

	return INT2FIX(git_blob_rawsize(blob));
}