| // 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 <vector> |
| |
| #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<const wchar_t> wsTime, |
| CFX_DateTime* datetime); |
| bool FX_TimeFromCanonical(const LocaleIface* pLocale, |
| pdfium::span<const wchar_t> wsTime, |
| CFX_DateTime* datetime); |
| |
| class CFGAS_StringFormatter { |
| public: |
| CFGAS_StringFormatter(LocaleMgrIface* pLocaleMgr, |
| const WideString& wsPattern); |
| ~CFGAS_StringFormatter(); |
| |
| static std::vector<WideString> 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<LocaleMgrIface> const m_pLocaleMgr; |
| const WideString m_wsPattern; // keep pattern string alive. |
| const pdfium::span<const wchar_t> m_spPattern; // span into |m_wsPattern|. |
| }; |
| |
| #endif // XFA_FGAS_CRT_CFGAS_STRINGFORMATTER_H_ |