func getText(reader *xmltextreader.XmlTextReaderPtr) string { res := reader.Read() eventType := reader.NodeType() for xmltextreader.XML_END_ELEMENT != eventType && xmltextreader.XML_TEXT_NODE != eventType && res != -1 { res = reader.Read() eventType = reader.NodeType() } if xmltextreader.XML_TEXT_NODE == eventType { return reader.Value() } return "" }
func getParaToTagEnd(reader *xmltextreader.XmlTextReaderPtr, tag string, fb2Pointer string, weightMult float32, c chan *Word) { res := reader.Read() eventType := reader.NodeType() var ( strong byte = 1 << 0 emphasis byte = 1 << 1 link byte = 1 << 2 ) var name string var styles byte = 0 for !(eventType == xmltextreader.XML_END_ELEMENT && tag == reader.Name()) && res != -1 { if xmltextreader.XML_TEXT_NODE == eventType { var weight float32 = 1.0 if styles&strong != 0 { weight += 0.2 } else if styles&emphasis != 0 { weight += 0.1 } else if styles&link != 0 { weight += 0.1 } if len(fb2Pointer) > 0 { sendWords(reader.Value(), fb2Pointer, weight*weightMult, c) } } else if xmltextreader.XML_START_ELEMENT == eventType { name = reader.Name() if emphasis_tag == name { styles |= emphasis } else if strong_tag == name { styles |= strong } else if link_tag == name { styles |= link } } else if xmltextreader.XML_END_ELEMENT == eventType { name = reader.Name() if emphasis_tag == name { styles &^= emphasis } else if strong_tag == name { styles &^= strong } else if link_tag == name { styles &^= link } } res = reader.Read() eventType = reader.NodeType() } }