From 86f16c3b82a86d157fb0b0ac004a6fa46594aa4c Mon Sep 17 00:00:00 2001 From: Mauro Stettler Date: Tue, 20 Feb 2024 11:00:26 +0100 Subject: [PATCH 1/6] add isStringNumeric to library Signed-off-by: Mauro Stettler --- ascii.libsonnet | 6 ++++++ docs/ascii.md | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/ascii.libsonnet b/ascii.libsonnet index 65d6473..9548aa8 100644 --- a/ascii.libsonnet +++ b/ascii.libsonnet @@ -26,4 +26,10 @@ local d = import 'github.com/jsonnet-libs/docsonnet/doc-util/main.libsonnet'; [d.arg('c', d.T.string)] ), isNumber(c): std.isNumber(c) || (cp(c) >= 48 && cp(c) < 58), + + '#isStringNumeric':: d.fn( + '`isStringNumeric` reports whether string `s` consists only of numeric characters.', + [d.arg('c', d.T.string)] + ), + isStringNumeric(s): std.all([self.isNumber(c) for c in std.toArray(s)]), } diff --git a/docs/ascii.md b/docs/ascii.md index 9a85053..d57d590 100644 --- a/docs/ascii.md +++ b/docs/ascii.md @@ -15,6 +15,7 @@ local ascii = import "github.com/jsonnet-libs/xtd/ascii.libsonnet" * [`fn isLower(c)`](#fn-islower) * [`fn isNumber(c)`](#fn-isnumber) * [`fn isUpper(c)`](#fn-isupper) +* [`fn isStringNumeric(c)`](#fn-isstringnumeric) ## Fields @@ -40,4 +41,12 @@ isNumber(c) isUpper(c) ``` -`isUpper` reports whether ASCII character `c` is a upper case letter \ No newline at end of file +`isUpper` reports whether ASCII character `c` is a upper case letter + +### fn isStringNumeric + +```ts +isStringNumeric(c) +``` + +`isStringNumeric` reports whether all characters in the string are numbers From 2eb0df8b86cf16d4a38467243f8bd90124aefa6b Mon Sep 17 00:00:00 2001 From: Mauro Stettler Date: Tue, 20 Feb 2024 12:55:26 +0100 Subject: [PATCH 2/6] add test Signed-off-by: Mauro Stettler --- ascii.libsonnet | 7 +++++-- test/ascii_test.jsonnet | 12 ++++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 test/ascii_test.jsonnet diff --git a/ascii.libsonnet b/ascii.libsonnet index 9548aa8..eaf0015 100644 --- a/ascii.libsonnet +++ b/ascii.libsonnet @@ -29,7 +29,10 @@ local d = import 'github.com/jsonnet-libs/docsonnet/doc-util/main.libsonnet'; '#isStringNumeric':: d.fn( '`isStringNumeric` reports whether string `s` consists only of numeric characters.', - [d.arg('c', d.T.string)] + [d.arg('s', d.T.string)] ), - isStringNumeric(s): std.all([self.isNumber(c) for c in std.toArray(s)]), + isStringNumeric(s): std.all([ + self.isNumber(c) + for c in s + ]), } diff --git a/test/ascii_test.jsonnet b/test/ascii_test.jsonnet new file mode 100644 index 0000000..3843fbf --- /dev/null +++ b/test/ascii_test.jsonnet @@ -0,0 +1,12 @@ +local ascii = import '../ascii.libsonnet'; +local test = import 'github.com/jsonnet-libs/testonnet/main.libsonnet'; + +test.new(std.thisFile) + ++ test.case.new( + name='all numeric', + test=test.expect.eq( + actual=ascii.isStringNumeric('123'), + expected=true, + ) +) From fffda0600c0bbff91ed2eda7e733dd49f0682772 Mon Sep 17 00:00:00 2001 From: Mauro Stettler Date: Tue, 20 Feb 2024 13:04:52 +0100 Subject: [PATCH 3/6] more test cases Signed-off-by: Mauro Stettler --- ascii.libsonnet | 6 +++--- test/ascii_test.jsonnet | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/ascii.libsonnet b/ascii.libsonnet index eaf0015..aa48a41 100644 --- a/ascii.libsonnet +++ b/ascii.libsonnet @@ -29,10 +29,10 @@ local d = import 'github.com/jsonnet-libs/docsonnet/doc-util/main.libsonnet'; '#isStringNumeric':: d.fn( '`isStringNumeric` reports whether string `s` consists only of numeric characters.', - [d.arg('s', d.T.string)] + [d.arg('str', d.T.string)] ), - isStringNumeric(s): std.all([ + isStringNumeric(str): std.all([ self.isNumber(c) - for c in s + for c in std.stringChars(str) ]), } diff --git a/test/ascii_test.jsonnet b/test/ascii_test.jsonnet index 3843fbf..077b350 100644 --- a/test/ascii_test.jsonnet +++ b/test/ascii_test.jsonnet @@ -10,3 +10,35 @@ test.new(std.thisFile) expected=true, ) ) + ++ test.case.new( + name='only beginning numeric', + test=test.expect.eq( + actual=ascii.isStringNumeric('123abc'), + expected=false, + ) +) + ++ test.case.new( + name='only end numeric', + test=test.expect.eq( + actual=ascii.isStringNumeric('abc123'), + expected=false, + ) +) + ++ test.case.new( + name='none numeric', + test=test.expect.eq( + actual=ascii.isStringNumeric('abc'), + expected=false, + ) +) + ++ test.case.new( + name='empty', + test=test.expect.eq( + actual=ascii.isStringNumeric(''), + expected=true, + ) +) From c1d3dbf35f36424cd4d8a492f07745bb483ba3e9 Mon Sep 17 00:00:00 2001 From: Mauro Stettler Date: Thu, 22 Feb 2024 10:11:37 +0100 Subject: [PATCH 4/6] more idiomatic Co-authored-by: Jeroen Op 't Eynde --- ascii.libsonnet | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/ascii.libsonnet b/ascii.libsonnet index aa48a41..5f7be88 100644 --- a/ascii.libsonnet +++ b/ascii.libsonnet @@ -31,8 +31,5 @@ local d = import 'github.com/jsonnet-libs/docsonnet/doc-util/main.libsonnet'; '`isStringNumeric` reports whether string `s` consists only of numeric characters.', [d.arg('str', d.T.string)] ), - isStringNumeric(str): std.all([ - self.isNumber(c) - for c in std.stringChars(str) - ]), + isStringNumeric(str): std.all(std.map(self.isNumber, std.stringChars(str)), } From 03ff3b6434d3d51ba5c58b71fc8eb4deac9ecd72 Mon Sep 17 00:00:00 2001 From: Mauro Stettler Date: Wed, 28 Feb 2024 09:09:07 +0100 Subject: [PATCH 5/6] parenthesis fix Co-authored-by: Jeroen Op 't Eynde --- ascii.libsonnet | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ascii.libsonnet b/ascii.libsonnet index 5f7be88..f7962d0 100644 --- a/ascii.libsonnet +++ b/ascii.libsonnet @@ -31,5 +31,5 @@ local d = import 'github.com/jsonnet-libs/docsonnet/doc-util/main.libsonnet'; '`isStringNumeric` reports whether string `s` consists only of numeric characters.', [d.arg('str', d.T.string)] ), - isStringNumeric(str): std.all(std.map(self.isNumber, std.stringChars(str)), + isStringNumeric(str): std.all(std.map(self.isNumber, std.stringChars(str))), } From b69de4c27b59b608390dbf923bb09fd9d504c08a Mon Sep 17 00:00:00 2001 From: Duologic Date: Mon, 4 Mar 2024 12:11:40 +0100 Subject: [PATCH 6/6] make docs --- docs/ascii.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/ascii.md b/docs/ascii.md index d57d590..1ad7288 100644 --- a/docs/ascii.md +++ b/docs/ascii.md @@ -14,8 +14,8 @@ local ascii = import "github.com/jsonnet-libs/xtd/ascii.libsonnet" * [`fn isLower(c)`](#fn-islower) * [`fn isNumber(c)`](#fn-isnumber) +* [`fn isStringNumeric(str)`](#fn-isstringnumeric) * [`fn isUpper(c)`](#fn-isupper) -* [`fn isStringNumeric(c)`](#fn-isstringnumeric) ## Fields @@ -35,18 +35,18 @@ isNumber(c) `isNumber` reports whether character `c` is a number. -### fn isUpper +### fn isStringNumeric ```ts -isUpper(c) +isStringNumeric(str) ``` -`isUpper` reports whether ASCII character `c` is a upper case letter +`isStringNumeric` reports whether string `s` consists only of numeric characters. -### fn isStringNumeric +### fn isUpper ```ts -isStringNumeric(c) +isUpper(c) ``` -`isStringNumeric` reports whether all characters in the string are numbers +`isUpper` reports whether ASCII character `c` is a upper case letter \ No newline at end of file