···
use crate::pattern::Pattern;
use crate::pattern::PatternItem;
use crate::template::Template;
use crate::template::TemplateItem;
···
73
-
pub fn pattern(&mut self) -> Option<Pattern> {
74
+
pub fn pattern(&mut self, rna: &mut Vec<Rna>) -> Option<Pattern> {
let mut ret = Vec::new();
···
ret.push(PatternItem::Close);
} else if self.next_is(&[Base::I, Base::I, Base::I]) {
112
-
// TODO: RNA output
113
+
let mut new_rna = Vec::new();
115
+
new_rna.push(self.buf[self.index + i]);
118
+
rna.push(new_rna.try_into().unwrap());
119
-
pub fn template(&mut self) -> Option<Template> {
125
+
pub fn template(&mut self, rna: &mut Vec<Rna>) -> Option<Template> {
let mut ret = Vec::new();
if self.next_is(&[Base::C]) {
···
ret.push(TemplateItem::Len(n));
} else if self.next_is(&[Base::I, Base::I, Base::I]) {
150
-
// TODO: RNA output
156
+
let mut new_rna = Vec::new();
158
+
new_rna.push(self.buf[self.index + i]);
161
+
rna.push(new_rna.try_into().unwrap());
···
211
+
let mut rna = Vec::new();
let dna = DnaRef::from_string("CIIC");
let mut parser = Parser::new(&dna);
202
-
assert_eq!(parser.pattern(), Some(vec![PatternItem::Base(Base::I)]));
203
-
assert_eq!(parser.ijndex, 4);
216
+
parser.pattern(&mut rna),
217
+
Some(vec![PatternItem::Base(Base::I)])
219
+
assert_eq!(parser.index, 4);
let dna = DnaRef::from_string("IIPIPICPIICICIIF");
let mut parser = Parser::new(&dna);
224
+
parser.pattern(&mut rna),
···
assert_eq!(parser.index, 16);
234
+
let dna = DnaRef::from_string("IIIPFCICFPIIC");
235
+
let mut parser = Parser::new(&dna);
236
+
assert_eq!(parser.pattern(&mut rna), Some(vec![]));
237
+
assert_eq!(parser.index, 13);
254
+
let mut rna = Vec::new();
let dna = DnaRef::from_string("CFPICIFCPICPIIPIICPIIC");
let mut parser = Parser::new(&dna);
259
+
parser.template(&mut rna),
TemplateItem::Base(Base::I),
TemplateItem::Base(Base::C),
···
assert_eq!(parser.index, 22);
271
+
let dna = DnaRef::from_string("IIIPFCICFPIIC");
272
+
let mut parser = Parser::new(&dna);
273
+
assert_eq!(parser.template(&mut rna), Some(vec![]));
274
+
assert_eq!(parser.index, 13);