@@ -60,20 +60,8 @@ function (::Type{T})(seq::LongSequence{<:NucleicAcidAlphabet{N}}) where
60
60
end
61
61
62
62
# Constructors from strings
63
- function LongSequence {A} (s:: Union{String, SubString{String}} ) where {A<: Alphabet }
64
- return LongSequence {A} (s, codetype (A ()))
65
- end
66
-
67
- # Generic method for String/Substring.
68
- function LongSequence {A} (s:: Union{String, SubString{String}} , :: AlphabetCode ) where {A<: Alphabet }
69
- len = length (s)
70
- seq = LongSequence {A} (undef, len)
71
- return copyto! (seq, 1 , s, 1 , len)
72
- end
73
-
74
- function LongSequence {A} (s:: Union{String, SubString{String}} , :: AsciiAlphabet ) where {A<: Alphabet }
75
- seq = LongSequence {A} (undef, ncodeunits (s))
76
- return encode_chunks! (seq, 1 , codeunits (s), 1 , ncodeunits (s))
63
+ function LongSequence {A} (s:: AbstractString ) where {A <: Alphabet }
64
+ return parse (LongSequence{A}, s)
77
65
end
78
66
79
67
function LongSequence {A} (
@@ -85,4 +73,19 @@ function LongSequence{A}(
85
73
return copyto! (seq, 1 , src, first (part), len)
86
74
end
87
75
88
- Base. parse (:: Type{LongSequence{A}} , seq:: AbstractString ) where A = LongSequence {A} (seq)
76
+ Base. parse (:: Type{T} , s:: AbstractString ) where {T <: LongSequence } = parse (T, String (s))
77
+
78
+ function Base. parse (:: Type{LongSequence{A}} , seq:: ASCIILike ) where {A<: Alphabet }
79
+ _parse (LongSequence{A}, seq, codetype (A ()))
80
+ end
81
+
82
+ function _parse (:: Type{LongSequence{A}} , s:: ASCIILike , :: AlphabetCode ) where {A<: Alphabet }
83
+ len = length (s)
84
+ seq = LongSequence {A} (undef, len)
85
+ return copyto! (seq, 1 , s, 1 , len)
86
+ end
87
+
88
+ function _parse (:: Type{LongSequence{A}} , s:: ASCIILike , :: AsciiAlphabet ) where {A<: Alphabet }
89
+ seq = LongSequence {A} (undef, ncodeunits (s))
90
+ return encode_chunks! (seq, 1 , codeunits (s), 1 , ncodeunits (s))
91
+ end
0 commit comments