Skip to content

Commit 764f01b

Browse files
committed
Updates comparison (==, !=, <=) to make XString objects compare against characters and other XString objects (adapted from XVector PR#6)
1 parent 1cd36a2 commit 764f01b

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

R/XString-class.R

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,13 @@ setMethod("==", signature(e1="BString", e2="character"),
434434
setMethod("==", signature(e1="character", e2="BString"),
435435
function(e1, e2) e2 == e1
436436
)
437+
setMethod("==", signature(e1="XString", e2="character"),
438+
## Coerce to BString to handle things like RNAString("U") == "T"
439+
function(e1, e2) as(e1, "BString") == e2
440+
)
441+
setMethod("==", signature(e1="character", e2="XString"),
442+
function(e1, e2) e1 == as(e2, "BString")
443+
)
437444

438445
setMethod("!=", signature(e1="XString", e2="XString"),
439446
function(e1, e2) !(e1 == e2)
@@ -444,7 +451,34 @@ setMethod("!=", signature(e1="BString", e2="character"),
444451
setMethod("!=", signature(e1="character", e2="BString"),
445452
function(e1, e2) !(e1 == e2)
446453
)
454+
setMethod("!=", signature(e1="XString", e2="character"),
455+
function(e1, e2) as(e1, "BString") != e2
456+
)
457+
setMethod("!=", signature(e1="character", e2="XString"),
458+
function(e1, e2) e1 != as(e2, "BString")
459+
)
447460

461+
### Comparisons are already implemented for XStringSet objects,
462+
### so we can just dispatch to that code here.
463+
setMethod("<=", signature(e1="XString", e2="XString"),
464+
function(e1, e2)
465+
{
466+
if (!comparable_seqtypes(seqtype(e1), seqtype(e2))) {
467+
class1 <- class(e1)
468+
class2 <- class(e2)
469+
stop("comparison between a \"", class1, "\" instance ",
470+
"and a \"", class2, "\" instance ",
471+
"is not supported")
472+
}
473+
as(e1, "XStringSet") <= as(e2, "XStringSet")
474+
}
475+
)
476+
setMethod("<=", signature(e1="XString", e2="character"),
477+
function(e1, e2) as(e1, "BStringSet") <= e2
478+
)
479+
setMethod("<=", signature(e1="character", e2="XString"),
480+
function(e1, e2) e1 <= as(e2, "BStringSet")
481+
)
448482

449483
### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
450484
### The "substr" and "substring" methods.

0 commit comments

Comments
 (0)