Updated and synchronized documentation comments for QrSegment's constants/functions involving character sets, in all languages.

pull/39/merge
Project Nayuki 6 years ago
parent aa39108f0d
commit 85eb6493fd

@ -86,7 +86,8 @@ static int numCharCountBits(enum qrcodegen_Mode mode, int version);
/*---- Private tables of constants ----*/ /*---- Private tables of constants ----*/
// For checking text and encoding segments. // The set of all legal characters in alphanumeric mode, where each character
// value maps to the index in the string. For checking text and encoding segments.
static const char *ALPHANUMERIC_CHARSET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:"; static const char *ALPHANUMERIC_CHARSET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";
// For generating error correction codes. // For generating error correction codes.

@ -172,12 +172,15 @@ bool qrcodegen_encodeBinary(uint8_t dataAndTemp[], size_t dataLen, uint8_t qrcod
/* /*
* Tests whether the given string can be encoded as a segment in alphanumeric mode. * Tests whether the given string can be encoded as a segment in alphanumeric mode.
* A string is encodable iff each character is in the following set: 0 to 9, A to Z
* (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
*/ */
bool qrcodegen_isAlphanumeric(const char *text); bool qrcodegen_isAlphanumeric(const char *text);
/* /*
* Tests whether the given string can be encoded as a segment in numeric mode. * Tests whether the given string can be encoded as a segment in numeric mode.
* A string is encodable iff each character is in the range 0 to 9.
*/ */
bool qrcodegen_isNumeric(const char *text); bool qrcodegen_isNumeric(const char *text);

@ -126,12 +126,15 @@ class QrSegment final {
/* /*
* Tests whether the given string can be encoded as a segment in alphanumeric mode. * Tests whether the given string can be encoded as a segment in alphanumeric mode.
* A string is encodable iff each character is in the following set: 0 to 9, A to Z
* (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
*/ */
public: static bool isAlphanumeric(const char *text); public: static bool isAlphanumeric(const char *text);
/* /*
* Tests whether the given string can be encoded as a segment in numeric mode. * Tests whether the given string can be encoded as a segment in numeric mode.
* A string is encodable iff each character is in the range 0 to 9.
*/ */
public: static bool isNumeric(const char *text); public: static bool isNumeric(const char *text);
@ -198,7 +201,8 @@ class QrSegment final {
/*---- Private constant ----*/ /*---- Private constant ----*/
/* The set of all legal characters in alphanumeric mode, where each character value maps to the index in the string. */ /* The set of all legal characters in alphanumeric mode, where
* each character value maps to the index in the string. */
private: static const char *ALPHANUMERIC_CHARSET; private: static const char *ALPHANUMERIC_CHARSET;
}; };

@ -222,13 +222,19 @@ public final class QrSegment {
/*---- Constants ----*/ /*---- Constants ----*/
/** Can test whether a string is encodable in numeric mode (such as by using {@link #makeNumeric(String)}). */ /** Describes precisely all strings that are encodable in numeric mode. To test whether a
* string {@code s} is encodable: {@code boolean ok = NUMERIC_REGEX.matcher(s).matches();}.
* A string is encodable iff each character is in the range 0 to 9. */
public static final Pattern NUMERIC_REGEX = Pattern.compile("[0-9]*"); public static final Pattern NUMERIC_REGEX = Pattern.compile("[0-9]*");
/** Can test whether a string is encodable in alphanumeric mode (such as by using {@link #makeAlphanumeric(String)}). */ /** Describes precisely all strings that are encodable in alphanumeric mode. To test whether a
* string {@code s} is encodable: {@code boolean ok = ALPHANUMERIC_REGEX.matcher(s).matches();}.
* A string is encodable iff each character is in the following set: 0 to 9, A to Z
* (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon. */
public static final Pattern ALPHANUMERIC_REGEX = Pattern.compile("[A-Z0-9 $%*+./:-]*"); public static final Pattern ALPHANUMERIC_REGEX = Pattern.compile("[A-Z0-9 $%*+./:-]*");
/** The set of all legal characters in alphanumeric mode, where each character value maps to the index in the string. */ /** The set of all legal characters in alphanumeric mode, where
* each character value maps to the index in the string. */
static final String ALPHANUMERIC_CHARSET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:"; static final String ALPHANUMERIC_CHARSET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";

@ -834,13 +834,19 @@ var qrcodegen = new function() {
var QrSegment = {}; // Private object to assign properties to. Not the same object as 'this.QrSegment'. var QrSegment = {}; // Private object to assign properties to. Not the same object as 'this.QrSegment'.
// (Public) Can test whether a string is encodable in numeric mode (such as by using QrSegment.makeNumeric()). // (Public) Describes precisely all strings that are encodable in numeric mode.
// To test whether a string s is encodable: var ok = NUMERIC_REGEX.test(s);
// A string is encodable iff each character is in the range 0 to 9.
this.QrSegment.NUMERIC_REGEX = /^[0-9]*$/; this.QrSegment.NUMERIC_REGEX = /^[0-9]*$/;
// (Public) Can test whether a string is encodable in alphanumeric mode (such as by using QrSegment.makeAlphanumeric()). // (Public) Describes precisely all strings that are encodable in alphanumeric mode.
// To test whether a string s is encodable: var ok = ALPHANUMERIC_REGEX.test(s);
// A string is encodable iff each character is in the following set: 0 to 9, A to Z
// (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
this.QrSegment.ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+.\/:-]*$/; this.QrSegment.ALPHANUMERIC_REGEX = /^[A-Z0-9 $%*+.\/:-]*$/;
// (Private) The set of all legal characters in alphanumeric mode, where each character value maps to the index in the string. // (Private) The set of all legal characters in alphanumeric mode,
// where each character value maps to the index in the string.
QrSegment.ALPHANUMERIC_CHARSET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:"; QrSegment.ALPHANUMERIC_CHARSET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";

@ -733,10 +733,16 @@ class QrSegment(object):
# ---- Constants ---- # ---- Constants ----
# (Public) Can test whether a string is encodable in numeric mode (such as by using make_numeric()) # (Public) Describes precisely all strings that are encodable in numeric mode.
# To test whether a string s is encodable: ok = NUMERIC_REGEX.fullmatch(s) is not None
# A string is encodable iff each character is in the range 0 to 9.
NUMERIC_REGEX = re.compile(r"[0-9]*\Z") NUMERIC_REGEX = re.compile(r"[0-9]*\Z")
# (Public) Can test whether a string is encodable in alphanumeric mode (such as by using make_alphanumeric()) # (Public) Describes precisely all strings that are encodable in alphanumeric mode.
# To test whether a string s is encodable: ok = ALPHANUMERIC_REGEX.fullmatch(s) is not None
# A string is encodable iff each character is in the following set: 0 to 9, A to Z
# (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
ALPHANUMERIC_REGEX = re.compile(r"[A-Z0-9 $%*+./:-]*\Z") ALPHANUMERIC_REGEX = re.compile(r"[A-Z0-9 $%*+./:-]*\Z")
# (Private) Dictionary of "0"->0, "A"->10, "$"->37, etc. # (Private) Dictionary of "0"->0, "A"->10, "$"->37, etc.

@ -1002,12 +1002,15 @@ impl QrSegment {
// Tests whether the given string can be encoded as a segment in alphanumeric mode. // Tests whether the given string can be encoded as a segment in alphanumeric mode.
// A string is encodable iff each character is in the following set: 0 to 9, A to Z
// (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
fn is_alphanumeric(text: &[char]) -> bool { fn is_alphanumeric(text: &[char]) -> bool {
text.iter().all(|c| ALPHANUMERIC_CHARSET.contains(c)) text.iter().all(|c| ALPHANUMERIC_CHARSET.contains(c))
} }
// Tests whether the given string can be encoded as a segment in numeric mode. // Tests whether the given string can be encoded as a segment in numeric mode.
// A string is encodable iff each character is in the range 0 to 9.
fn is_numeric(text: &[char]) -> bool { fn is_numeric(text: &[char]) -> bool {
text.iter().all(|c| '0' <= *c && *c <= '9') text.iter().all(|c| '0' <= *c && *c <= '9')
} }

@ -799,13 +799,19 @@ namespace qrcodegen {
/*-- Constants --*/ /*-- Constants --*/
// Can test whether a string is encodable in numeric mode (such as by using QrSegment.makeNumeric()). // Describes precisely all strings that are encodable in numeric mode. To test
// whether a string s is encodable: let ok: boolean = NUMERIC_REGEX.test(s);
// A string is encodable iff each character is in the range 0 to 9.
public static readonly NUMERIC_REGEX: RegExp = /^[0-9]*$/; public static readonly NUMERIC_REGEX: RegExp = /^[0-9]*$/;
// Can test whether a string is encodable in alphanumeric mode (such as by using QrSegment.makeAlphanumeric()). // Describes precisely all strings that are encodable in alphanumeric mode. To test
// whether a string s is encodable: let ok: boolean = ALPHANUMERIC_REGEX.test(s);
// A string is encodable iff each character is in the following set: 0 to 9, A to Z
// (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
public static readonly ALPHANUMERIC_REGEX: RegExp = /^[A-Z0-9 $%*+.\/:-]*$/; public static readonly ALPHANUMERIC_REGEX: RegExp = /^[A-Z0-9 $%*+.\/:-]*$/;
// The set of all legal characters in alphanumeric mode, where each character value maps to the index in the string. // The set of all legal characters in alphanumeric mode,
// where each character value maps to the index in the string.
private static readonly ALPHANUMERIC_CHARSET: string = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:"; private static readonly ALPHANUMERIC_CHARSET: string = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ $%*+-./:";
} }

Loading…
Cancel
Save