Mercurial > octave
annotate scripts/+matlab/+net/base64encode.m @ 31706:597f3ee61a48 stable
update Octave Project Developers copyright for the new year
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 06 Jan 2023 13:11:27 -0500 |
parents | fd29c7a50a78 |
children | 2e484f9f1f18 |
rev | line source |
---|---|
28769
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
1 ######################################################################## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
2 ## |
31706
597f3ee61a48
update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents:
31551
diff
changeset
|
3 ## Copyright (C) 2020-2023 The Octave Project Developers |
28769
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
4 ## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
7 ## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
8 ## This file is part of Octave. |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
9 ## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
11 ## under the terms of the GNU General Public License as published by |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
13 ## (at your option) any later version. |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
14 ## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
15 ## Octave is distributed in the hope that it will be useful, but |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
18 ## GNU General Public License for more details. |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
19 ## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
20 ## You should have received a copy of the GNU General Public License |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
21 ## along with Octave; see the file COPYING. If not, see |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
23 ## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
24 ######################################################################## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
25 |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
26 ## -*- texinfo -*- |
30355
6a6efd7bb3ec
doc: grammarcheck texi files of Octave manual ahead of 7.1 release
Rik <rik@octave.org>
parents:
30329
diff
changeset
|
27 ## @deftypefn {} {@var{b64_str} =} matlab.net.base64encode (@var{in}) |
28769
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
28 ## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
29 ## Convert @var{in} to a base64 encoded string @var{b64_str}. |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
30 ## |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
31 ## The input @var{in} can be a string or numeric vector. |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
32 ## The output @var{b64_str} will be encoded according to RFC 4648. |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
33 ## |
30329
81d26e8481a6
maint: Shorten @seealso lines to less than 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
34 ## @seealso{matlab.net.base64decode, base64_decode, base64_encode, |
81d26e8481a6
maint: Shorten @seealso lines to less than 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
35 ## unicode2native} |
28769
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
36 ## @end deftypefn |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
37 |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
38 function b64_str = base64encode (in) |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
39 |
28789
28de41192f3c
Eliminate unneeded verification of nargin, nargout in m-files.
Rik <rik@octave.org>
parents:
28769
diff
changeset
|
40 if (nargin != 1) |
28769
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
41 print_usage (); |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
42 endif |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
43 |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
44 if (! isvector (in) || ! (isnumeric (in) || ischar (in))) |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
45 error ("base64encode: IN must be a numeric or character vector"); |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
46 endif |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
47 |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
48 if (any (in != round (in))) |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
49 error ("base64encode: IN must consist of integers"); |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
50 endif |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
51 |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
52 b64_str = base64_encode (uint8 (in)); |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
53 |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
54 endfunction |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
55 |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
56 |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
57 ## Test char vector input |
31551
fd29c7a50a78
maint: use commas, semicolons consistently with Octave conventions.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
58 %!assert (matlab.net.base64encode (1), "AQ==") |
fd29c7a50a78
maint: use commas, semicolons consistently with Octave conventions.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
59 %!assert (matlab.net.base64encode (255), "/w==") |
fd29c7a50a78
maint: use commas, semicolons consistently with Octave conventions.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
60 %!assert (matlab.net.base64encode (1:3), "AQID") |
fd29c7a50a78
maint: use commas, semicolons consistently with Octave conventions.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
61 %!assert (matlab.net.base64encode ("a"), "YQ==") |
fd29c7a50a78
maint: use commas, semicolons consistently with Octave conventions.
Rik <rik@octave.org>
parents:
30564
diff
changeset
|
62 %!assert (matlab.net.base64encode ("abcdefg"), "YWJjZGVmZw==") |
28769
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
63 |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
64 ## Test input validation |
28886
d8318c12d903
test: remove unnecessary BIST tests in m-files checking for excessive number of inputs.
Rik <rik@octave.org>
parents:
28789
diff
changeset
|
65 %!error <Invalid call> matlab.net.base64encode () |
28769
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
66 %!error <numeric or character vector> matlab.net.base64encode ({1,2}) |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
67 %!error <numeric or character vector> matlab.net.base64encode ([1,2;3,4]) |
903fe321649b
Add Matlab compatible wrappers for base64_encode and base64_decode.
Markus Mützel <markus.muetzel@gmx.de>
parents:
diff
changeset
|
68 %!error <consist of integers> matlab.net.base64encode (pi) |