/*
* call-seq:
* token.cmp(other_token) -> bool
*
* Used to compare two tokens. Token is extended by Comparable so you can
* also use +<+, +>+, +<=+, +>=+ etc. to compare tokens.
*
* Tokens are sorted by the position in the text at which they occur, ie
* the start offset. If two tokens have the same start offset, (see
* pos_inc=) then, they are sorted by the end offset and then
* lexically by the token text.
*/
static VALUE
frt_token_cmp(VALUE self, VALUE rother)
{
RToken *token, *other;
int cmp;
GET_TK(token, self);
GET_TK(other, rother);
if (token->start > other->start) {
cmp = 1;
} else if (token->start < other->start) {
cmp = -1;
} else {
if (token->end > other->end) {
cmp = 1;
} else if (token->end < other->end) {
cmp = -1;
} else {
cmp = strcmp(rs2s(token->text), rs2s(other->text));
}
}
return INT2FIX(cmp);
}