Thomas Jensen
771f78874e
Move code on shape lines from parser.y to parsecode.c
2023-04-30 14:14:21 +02:00
Thomas Jensen
24018c3f86
Update help text for -m option
2023-04-20 21:54:00 +02:00
Thomas Jensen
21a691fbd1
Use UTF-8 data read from config file #72
...
- shapes get additional MBCS values
- metadata is already converted for real to use bxstr_t*
2023-04-19 21:06:00 +02:00
Thomas Jensen
8a7bb8039f
Enable lexer and parser to handle UTF-8 config file #72
2023-04-07 21:10:00 +02:00
Thomas Jensen
4ff37eb5ba
Extend bxstring functionality
2023-03-31 21:00:00 +02:00
Thomas Jensen
5026357fc2
Add more tests for bxstring creating functions
2023-03-28 21:27:06 +02:00
Thomas Jensen
b0d3384bd4
Add new "bxstring" module which is meant to evolve into boxes' string abstraction
...
It handles embedded escape sequences, mbcs encodings, and characters wider than 1 column.
2023-03-26 21:34:44 +02:00
Thomas Jensen
77d02890a7
Update copyright statements for 2023
2023-03-26 21:32:08 +02:00
Pascal Jaeger
bfb5545215
Fix K&R C declaration to work with Clang16
...
By default Clang16 will not allow implicit function declarations, which
would let this build fail with it.
Fix #106
Signed-off-by: Pascal Jaeger <pascal.jaeger@leimstift.de>
2022-10-18 14:17:43 +02:00
Đoàn Trần Công Danh
61562b0158
remove: fix out-of-bound access
...
The `u32_move` will try to read `input.lines[j].num_chars - c + 1` `u32`
octets from `input.lines[j].mbtext + input.lines[j].posmap[c]`. That
means, it needs access memory at address
`input.lines[j].mbtext + input.lines[j].posmap[c] + input.lines[j].num_chars - c`
while the max range is `input.lines[j].mbtext + input.lines[j].num_chars`,
which is out-of-bound because `input.lines[j].posmap[c] > c` obviously.
Fix #103
2022-10-04 21:33:18 +02:00
Thomas Jensen
6b6c1ad528
Enable build process to create a static binary for Unix #100
...
One can now run "make static" to get a binary that is statically linked
to libunistring and pcre2. Both libraries are downloaded first,
so they don't need to be available on the machine.
2022-09-23 22:06:47 +02:00
Thomas Jensen
a3a37b50fc
Upgrade project license to GPL-3 #101
2022-09-18 15:00:15 +02:00
Thomas Jensen
11da751439
Add more unit tests for command line option parsing
2021-11-05 22:02:55 +01:00
Thomas Jensen
7b828461ed
Add unit tests for different input and output file situations
2021-11-05 21:48:50 +01:00
Thomas Jensen
413b174d6c
Add unit tests for alignment option parsing (-a)
2021-11-05 21:10:11 +01:00
Thomas Jensen
fbc4678faa
Add some unit tests for tab option parsing (-t)
2021-11-05 14:28:13 +01:00
Thomas Jensen
eab1e13df2
Fix a small bug when parsing the padding command line argument (-p)
...
When an empty string was passed as padding spec, this was
not properly flagged as an error.
2021-11-05 14:03:49 +01:00
Thomas Jensen
84d051f1e5
Add unit tests for '-k' option parsing
2021-11-04 21:53:35 +01:00
Thomas Jensen
0e2b57c97d
Add unit tests for indentation mode cmdline parsing
2021-11-04 14:12:40 +01:00
Thomas Jensen
b07af10931
Add three more unit tests for regex_replace()
2021-11-01 21:46:43 +01:00
Thomas Jensen
ab28ad8c3a
Add workaround for mockable fprintf on MinGW
2021-11-01 14:23:19 +01:00
Thomas Jensen
4ae947ff99
Extend unit testing capabilities
...
- Structure unit tests into multiple modules
- Add setup/teardown of fixtures
- Add ability to capture and check stdout and stderr
- Add mock handling to Makefile
2021-10-28 09:01:14 +02:00
Thomas Jensen
a5dae11c4c
Add the first cmocka-based unit tests
2021-10-21 20:23:52 +02:00
Thomas Jensen
e40fe370e2
Add test coverage measurement to black-box tests
2021-09-09 21:44:49 +02:00
David Yang
3c56934ddc
Remove whitespace check on -c ( #92 )
...
Resolves #88
2021-08-31 17:31:43 +02:00
Thomas Jensen
ab9f123981
Count tab as whitespace in "empty shape" check #92
2021-08-28 15:08:44 +02:00
Thomas Jensen
4ced2b4715
Fix bug with :global:
parent resolution
2021-06-16 20:52:36 +02:00
Thomas Jensen
252d080403
Tag 'none' is not allowed
2021-06-13 22:35:39 +02:00
Thomas Jensen
2d3a842728
Refactor lexer and parser for maintainability
...
- Speedmode is now purely a parser thing
- Lexer start condition SPEEDMODE is no longer needed
- Added lexer start condition BOX to distinguish box def content
- DELIMs are now purely a lexer thing
- No shared state between lexer and parser for DELIMs anymore
- Fix bug where speedmode could terminate in a SAMPLE block
- All lexer start conditions now exclusive
- Improved debug output
- Renamed parser token YDELWORD to YDELIMSPEC
2021-06-13 22:34:53 +02:00
Thomas Jensen
00153f8068
Fix a bug where alias names could be defined twice
...
This could happen when configs are inherited, but aliases redefined
(a rare case so far).
2021-06-08 22:06:25 +02:00
Thomas Jensen
4daa0f4f46
Fix repo encoding of ISO-8859-15 encoded files #83
2021-04-27 10:51:00 +02:00
Thomas Jensen
b90475eb2c
Remove preproc troubleshooting file parser.p #82
...
It was useful for checking what the pre-processor
did to the parser.c file, but as this invocation
caused problems on macos, we can leave it out.
2021-04-27 10:39:13 +02:00
Thomas Jensen
d1a1cf1580
Declare our src/Makefile as serial #79
...
because for some reason, make exhibits very strange behavior
when executing it in parallel jobs
2021-04-20 21:28:30 +02:00
Thomas Jensen
434d5971bf
Extract smaller functions from the main() function #78
2021-04-17 15:31:08 +02:00
Thomas Jensen
82bc084bad
Extract tag query functionality into its own, new 'query' module #78
2021-04-17 15:31:04 +02:00
Thomas Jensen
4d0dbcd59b
Rename global variable anz_designs to num_designs #78
2021-04-17 15:31:00 +02:00
Thomas Jensen
9d17203f50
Rename anz_lines field in input_t to num_lines #78
2021-04-17 15:30:56 +02:00
Thomas Jensen
a7227c8aa8
Extract reading of input lines into its own, new 'input' module #78
2021-04-17 15:30:51 +02:00
Thomas Jensen
fb010bc7d6
Remove lexer.l special around input_t in boxes.h #78
2021-04-17 15:30:47 +02:00
Thomas Jensen
aa36998f77
Rename ANZ_* constants in shape.h to NUM_* #78
...
This is more in keeping with English standards, and hopefully
improves maintainability a small bit.
2021-04-17 15:30:42 +02:00
Thomas Jensen
2cc2bc1021
Extract list_designs functionality into its own, new 'list' module #78
2021-04-17 15:30:37 +02:00
Thomas Jensen
af6f123c99
Extract command line parsing functionality into its own, new 'cmdline' module #78
...
Also encapsulate this feature better, eliminate side effects,
and refactor into smaller functions.
2021-04-17 15:30:26 +02:00
Thomas Jensen
139994f97f
Add option to override line terminators #60
2021-04-11 20:34:51 +02:00
Thomas Jensen
8a6d0d3315
Add and use bx_strndup() in 'tools' module for cross-platform compatibility
2021-04-11 20:34:51 +02:00
Thomas Jensen
f620c1b19b
Extract full_parse_required() in parsecode.c for maintainability
2021-04-11 20:34:51 +02:00
Thomas Jensen
04283eb697
Remove undocumented contentpos feature
...
It is no longer needed, as we have MBCS support for input now.
2021-04-11 20:34:50 +02:00
Thomas Jensen
09d5ebcbb4
Untangle -l and -q options #23
...
Both are now used stand-alone for their respective purposes.
2021-04-11 20:34:41 +02:00
Thomas Jensen
76880f1c3c
Extract parser.y's C code into new parsecode module
...
We took the larger pieces only, with the aim of making parser.y more
readable and making it easier to understand the syntax rules.
Also, some IDEs (such as CLion and vscode) don't support yacc/bison
syntax to the full extent, so we have better IDE support in a C file.
2021-04-11 20:27:17 +02:00
Thomas Jensen
f147c8f6fc
Enable querying of the design list by tag #23
2021-04-11 20:27:15 +02:00
Thomas Jensen
27adf5b6ba
Add argument to -q option for tag queries #23
...
-q is no longer undocumented,
but can officially be used in combination with -l
2021-04-06 22:13:41 +02:00