// Copyright 2017 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #ifndef XFA_FGAS_CRT_CFGAS_STRINGFORMATTER_H_ #define XFA_FGAS_CRT_CFGAS_STRINGFORMATTER_H_ #include #include "core/fxcrt/unowned_ptr.h" #include "third_party/base/span.h" #include "xfa/fgas/crt/locale_iface.h" #include "xfa/fgas/crt/locale_mgr_iface.h" bool FX_DateFromCanonical(pdfium::span wsTime, CFX_DateTime* datetime); bool FX_TimeFromCanonical(const LocaleIface* pLocale, pdfium::span wsTime, CFX_DateTime* datetime); class CFGAS_StringFormatter { public: CFGAS_StringFormatter(LocaleMgrIface* pLocaleMgr, const WideString& wsPattern); ~CFGAS_StringFormatter(); static std::vector SplitOnBars(const WideString& wsFormatString); FX_LOCALECATEGORY GetCategory() const; bool ParseText(const WideString& wsSrcText, WideString* wsValue) const; bool ParseNum(const WideString& wsSrcNum, WideString* wsValue) const; bool ParseDateTime(const WideString& wsSrcDateTime, FX_DATETIMETYPE eDateTimeType, CFX_DateTime* dtValue) const; bool ParseZero(const WideString& wsSrcText) const; bool ParseNull(const WideString& wsSrcText) const; bool FormatText(const WideString& wsSrcText, WideString* wsOutput) const; bool FormatNum(const WideString& wsSrcNum, WideString* wsOutput) const; bool FormatDateTime(const WideString& wsSrcDateTime, FX_DATETIMETYPE eDateTimeType, WideString* wsOutput) const; bool FormatZero(WideString* wsOutput) const; bool FormatNull(WideString* wsOutput) const; private: WideString GetTextFormat(WideStringView wsCategory) const; LocaleIface* GetNumericFormat(size_t* iDotIndex, uint32_t* dwStyle, WideString* wsPurgePattern) const; FX_DATETIMETYPE GetDateTimeFormat(LocaleIface** pLocale, WideString* wsDatePattern, WideString* wsTimePattern) const; UnownedPtr const m_pLocaleMgr; const WideString m_wsPattern; // keep pattern string alive. const pdfium::span m_spPattern; // span into |m_wsPattern|. }; #endif // XFA_FGAS_CRT_CFGAS_STRINGFORMATTER_H_