Class: GreenStripes::Link

Inherits:
Object
  • Object
show all
Defined in:
lib/greenstripes.rb,
ext/greenstripes/greenstripes.c

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ Link

:nodoc:



150
151
# File 'lib/greenstripes.rb', line 150

def initialize(*args) # :nodoc:
end

Class Method Details

.new(artist) ⇒ Object .new(album) ⇒ Object .new(track) ⇒ Object .new(playlist) ⇒ Object .new(search) ⇒ Object .new(string) ⇒ nil

Returns a new link pointing to the given resource.

Overloads:

  • .new(string) ⇒ nil

    Returns:

    • (nil)


1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
# File 'ext/greenstripes/greenstripes.c', line 1193

static VALUE link_new(VALUE klass, VALUE object)
{
  sp_link *link = NULL;

  if(rb_obj_is_kind_of(object, class_artist))
  {
    sp_artist *a;
    Data_Get_Struct(object, sp_artist, a);
    link = sp_link_create_from_artist(a);
  }
  else if(rb_obj_is_kind_of(object, class_album))
  {
    sp_album *a;
    Data_Get_Struct(object, sp_album, a);
    link = sp_link_create_from_album(a);
  }
  else if(rb_obj_is_kind_of(object, class_track))
  {
    sp_track *t;
    Data_Get_Struct(object, sp_track, t);
    link = sp_link_create_from_track(t, 0); // TODO: offset
  }
  else if(rb_obj_is_kind_of(object, class_playlist))
  {
    sp_playlist *p;
    Data_Get_Struct(object, sp_playlist, p);
    link = sp_link_create_from_playlist(p);
  }
  else if(rb_obj_is_kind_of(object, class_search))
  {
    sp_search *s;
    Data_Get_Struct(object, sp_search, s);
    link = sp_link_create_from_search(s);
  }
  else
  {
    link = sp_link_create_from_string(StringValuePtr(object));
  }

  if(!link)
    return Qnil;

  VALUE link_value = Data_Wrap_Struct(class_link, NULL, link_free, link);
  VALUE argv[1] = {object};
  rb_obj_call_init(link_value, 1, argv);
  return link_value;
}

Instance Method Details

#==(other) ⇒ Object



153
154
155
# File 'lib/greenstripes.rb', line 153

def ==(other)
  self.to_s == other.to_s
end

Returns the link type. Named link_type instead of just type to avoid overriding a method in Object.



1247
1248
1249
1250
1251
1252
1253
# File 'ext/greenstripes/greenstripes.c', line 1247

static VALUE link_link_type(VALUE self)
{
  sp_link *link;
  Data_Get_Struct(self, sp_link, link);
  int type = sp_link_type(link);
  return INT2FIX(type);
}

#to_albumnil

Returns:

  • (nil)


1285
1286
1287
1288
1289
1290
1291
# File 'ext/greenstripes/greenstripes.c', line 1285

static VALUE link_to_album(VALUE self)
{
  sp_link *l;
  Data_Get_Struct(self, sp_link, l);
  sp_album *a = sp_link_as_album(l);
  return a ? Data_Wrap_Struct(class_album, NULL, NULL, a) : Qnil;
}

#to_artistnil

Returns:

  • (nil)


1273
1274
1275
1276
1277
1278
1279
# File 'ext/greenstripes/greenstripes.c', line 1273

static VALUE link_to_artist(VALUE self)
{
  sp_link *l;
  Data_Get_Struct(self, sp_link, l);
  sp_artist *a = sp_link_as_artist(l);
  return a ? Data_Wrap_Struct(class_artist, NULL, NULL, a) : Qnil;
}

#to_sString?

Returns a string representation of the link.

Returns:



1260
1261
1262
1263
1264
1265
1266
1267
# File 'ext/greenstripes/greenstripes.c', line 1260

static VALUE link_to_s(VALUE self)
{
  sp_link *link;
  Data_Get_Struct(self, sp_link, link);
  char buffer[100];
  int n = sp_link_as_string(link, buffer, 100);
  return (n < 100) ? rb_str_new2(buffer) : Qnil;
}

#to_tracknil

Returns:

  • (nil)


1297
1298
1299
1300
1301
1302
1303
# File 'ext/greenstripes/greenstripes.c', line 1297

static VALUE link_to_track(VALUE self)
{
  sp_link *l;
  Data_Get_Struct(self, sp_link, l);
  sp_track *t = sp_link_as_track(l);
  return t ? Data_Wrap_Struct(class_track, NULL, NULL, t) : Qnil;
}