Sha256: eac0ef4b653cf63373702d107606101083687c1dea9ff3decbcdbd3bcba3c075
Contents?: true
Size: 819 Bytes
Versions: 193
Compression:
Stored size: 819 Bytes
Contents
module rna_transcription; import std.regex; import std.string; immutable dchar[dchar] rnaTransTable; static this() { rnaTransTable = [ 'C': 'G', 'G': 'C', 'T': 'A', 'A': 'U']; } enum dnaRegex = regex(r"^[CGTA]*$"); string dnaComplement(string dna) { import std.exception : enforce; enforce(dna.matchFirst(dnaRegex), "Invalid DNA string"); return dna.translate(rnaTransTable); } unittest { import std.exception : assertThrown; assert(dnaComplement("C") == "G"); assert(dnaComplement("G") == "C"); assert(dnaComplement("T") == "A"); assert(dnaComplement("A") == "U"); assert(dnaComplement("ACGTGGTCTTAA") == "UGCACCAGAAUU"); assertThrown(dnaComplement("U")); assertThrown(dnaComplement("XXX")); assertThrown(dnaComplement("ACGTXXXCTTAA")); }
Version data entries
193 entries across 193 versions & 1 rubygems