Igor Viarheichyk 729ffa299c ICU format support for pseudolocalizes.
Custom parser can handle nested ICU messages even if they
are split into multiple fragments. Code reworked to encapsulate
all pseudolocalization logic in Pseudolocalizer and PseudoMethods
classes. To minimize a changelist size, some static functions
remained. Fake BiDi pseudolocalization method is reimplemented
to handle word boundaries correctly. Unit tests added.

(cherry picked from commit cbb1e676b56677ae3585c067f29646dddffb4857)

bug: 22060509

Change-Id: I11968d81984d99501a4d9334ff2e7453a1eb7a00
2015-06-25 09:49:43 +01:00

59 lines
1.5 KiB
C++

#ifndef HOST_PSEUDOLOCALIZE_H
#define HOST_PSEUDOLOCALIZE_H
#include <base/macros.h>
#include "StringPool.h"
class PseudoMethodImpl {
public:
virtual ~PseudoMethodImpl() {}
virtual String16 start() { return String16(); }
virtual String16 end() { return String16(); }
virtual String16 text(const String16& text) = 0;
virtual String16 placeholder(const String16& text) = 0;
};
class PseudoMethodNone : public PseudoMethodImpl {
public:
PseudoMethodNone() {}
String16 text(const String16& text) { return text; }
String16 placeholder(const String16& text) { return text; }
private:
DISALLOW_COPY_AND_ASSIGN(PseudoMethodNone);
};
class PseudoMethodBidi : public PseudoMethodImpl {
public:
String16 text(const String16& text);
String16 placeholder(const String16& text);
};
class PseudoMethodAccent : public PseudoMethodImpl {
public:
PseudoMethodAccent() : mDepth(0), mWordCount(0), mLength(0) {}
String16 start();
String16 end();
String16 text(const String16& text);
String16 placeholder(const String16& text);
private:
size_t mDepth;
size_t mWordCount;
size_t mLength;
};
class Pseudolocalizer {
public:
Pseudolocalizer(PseudolocalizationMethod m);
~Pseudolocalizer() { if (mImpl) delete mImpl; }
void setMethod(PseudolocalizationMethod m);
String16 start() { return mImpl->start(); }
String16 end() { return mImpl->end(); }
String16 text(const String16& text);
private:
PseudoMethodImpl *mImpl;
size_t mLastDepth;
};
#endif // HOST_PSEUDOLOCALIZE_H