Module: VersionSorter

Defined in:
lib/version_sorter/version.rb,
ext/version_sorter/rb_version_sorter.c

Constant Summary collapse

Version =
'1.1.0'

Class Method Summary collapse

Class Method Details

.rsort(list) ⇒ Object



45
46
47
48
49
50
51
# File 'ext/version_sorter/rb_version_sorter.c', line 45

VALUE
rb_rsort(VALUE obj, VALUE list)
{
    VALUE dest = rb_sort(obj, list);
    rb_ary_reverse(dest);
    return dest;
}

.sort(list) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'ext/version_sorter/rb_version_sorter.c', line 23

VALUE
rb_sort(VALUE obj, VALUE list)
{
    long len = RARRAY_LEN(list);
    long i;
    char **c_list = calloc(len, sizeof(char *));
    VALUE rb_str, dest;
    
    for (i = 0; i < len; i++) {
        rb_str = rb_ary_entry(list, i);
        c_list[i] = StringValuePtr(rb_str);
    }
    version_sorter_sort(c_list, len);
    
    dest = rb_ary_new2(len);
    for (i = 0; i < len; i++) {
        rb_ary_store(dest, i, rb_str_new2(c_list[i]));
    }
    
    return dest;
}