const string& Package::Title(bool localized) const { IRI titleTypeIRI(MakePropertyIRI("title-type")); // http://idpf.org/epub/vocab/package/#title-type // find the main one for ( auto& item : PropertiesMatching(titleTypeIRI) ) { PropertyExtensionPtr extension = item->ExtensionWithIdentifier(titleTypeIRI); if ( extension == nullptr ) continue; if ( extension->Value() == "main" ) return (localized? item->LocalizedValue() : item->Value()); } // no 'main title' found: just get the dc:title value auto items = PropertiesMatching(DCType::Title); if ( items.empty() ) return string::EmptyString; if ( localized ) return items[0]->LocalizedValue(); return items[0]->Value(); }
const string Package::Subtitle() const { IRI titleTypeIRI(MakePropertyIRI("title-type")); // http://idpf.org/epub/vocab/package/#title-type // find the main one for ( auto item : MetadataItemsWithProperty(titleTypeIRI) ) { const Metadata::Extension* extension = item->ExtensionWithProperty(titleTypeIRI); if ( extension == nullptr ) continue; if ( extension->Value() == "subtitle" ) return item->Value(); } // no 'subtitle' found, so no subtitle return string::EmptyString; }
const string Package::Title() const { IRI titleTypeIRI(MakePropertyIRI("title-type")); // http://idpf.org/epub/vocab/package/#title-type // find the main one for ( auto item : MetadataItemsWithProperty(titleTypeIRI) ) { const Metadata::Extension* extension = item->ExtensionWithProperty(titleTypeIRI); if ( extension == nullptr ) continue; if ( extension->Value() == "main" ) return item->Value(); } // no 'main title' found: just get the dc:title value const MetadataMap items = MetadataItemsWithDCType(Metadata::DCType::Title); if ( items.empty() ) return string::EmptyString; return items[0]->Value(); }
const string& Package::ShortTitle(bool localized) const { IRI titleTypeIRI(MakePropertyIRI("title-type")); // http://idpf.org/epub/vocab/package/#title-type // find the main one for ( auto item : PropertiesMatching(titleTypeIRI) ) { PropertyExtensionPtr extension = item->ExtensionWithIdentifier(titleTypeIRI); if ( extension == nullptr ) continue; if ( extension->Value() == "short" ) { if ( localized ) return item->LocalizedValue(); return item->Value(); } } // no 'subtitle' found, so no subtitle return string::EmptyString; }