Paul Beckingham
a50e65a134
Copyright update
2017-01-01 12:30:04 -05:00
Paul Beckingham
641d232dea
Copyright: Updated to 2016
2015-12-31 15:06:43 -05:00
Wilhelm Schuermann
96ca7eb5f2
Nibbler: Remove unused function argument
2015-11-12 13:36:23 +01:00
Paul Beckingham
dd82835ac4
Nibbler: Removed unused ::backN method
2015-10-29 23:55:43 -04:00
Paul Beckingham
297f2b6e99
Nibbler: Removed unused ::skipAll method
2015-10-29 23:53:17 -04:00
Paul Beckingham
119827e4e1
Nibbler: Removed unused ::getDigit6 method
2015-10-29 23:46:48 -04:00
Paul Beckingham
88469fc5f9
Nibbler: Removed unused ::getUntilEOL method
2015-10-29 23:41:01 -04:00
Paul Beckingham
0c5984c517
Nibbler: Removed unused ::getWord method
2015-10-29 23:34:46 -04:00
Paul Beckingham
78da4ffb90
Nibbler: Removed unused ::getName method
2015-10-29 23:32:07 -04:00
Paul Beckingham
38b9e54955
Nibbler: Removed unused ::getUUID method
2015-10-29 23:28:42 -04:00
Paul Beckingham
1e8eac0e3d
Nibbler: Removed unused ::getRx method
2015-10-29 23:23:41 -04:00
Paul Beckingham
de66200028
Nibbler: Removed unused ::getUntilRx method
2015-10-29 23:19:41 -04:00
Paul Beckingham
180d3e75ff
Nibbler: Removed unused ::skipRx method
2015-10-29 23:19:01 -04:00
Paul Beckingham
7693245c1d
Nibbler: Removed unused ::parseDigits method
2015-10-28 22:08:50 -04:00
Paul Beckingham
741afd2240
Nibbler: Removed unused ::getDateISO method
2015-10-28 20:13:55 -04:00
Paul Beckingham
51afff2e6e
Nibbler: Removed unused ::getDate and tests
2015-10-28 20:09:55 -04:00
Paul Beckingham
953e1e4cc1
Nibbler: Removed unused comment
2015-09-30 09:47:54 -04:00
Wilhelm Schuermann
605f8020b7
Nibbler: Improve import performance
...
Takes the "import" performance test from 5m5s on a test machine to 13s
total.
A huge part of the previously morbid performance were memory allocation
and release for very little benefit in the JSON parser. With this new
approach the copying is kept to a minimum. There is still room for
improvements.
2015-09-15 18:14:18 +02:00
Paul Beckingham
a89c996334
Nibbler: Dead code removal
2015-07-17 14:51:27 -04:00
Paul Beckingham
9177c5b697
Nibbler: Dead code removal
2015-07-17 14:50:20 -04:00
Paul Beckingham
39fb45447b
Lexer: Migrated ispunct to Lexer::isPunctuation
2015-04-16 23:52:43 -04:00
Paul Beckingham
c11601e30e
Cleanup
...
- Removed unused Nibbler::getHex.
2015-02-17 10:58:45 -05:00
Paul Beckingham
b7ad091d00
Updated copyright to 2015
2015-01-01 00:00:41 -05:00
Paul Beckingham
3e34679f4a
Build
...
- Added missing include for FreeBSD.
2014-05-29 19:39:30 -04:00
Paul Beckingham
4cf0763845
Nibbler
...
- Merged libexpr changes.
2014-01-02 00:34:51 -05:00
Paul Beckingham
efae57d56b
Merge from libexpr
...
- Incorporated Nibbler changes from libexpr.
2013-12-08 16:19:38 -05:00
Paul Beckingham
663c82837c
Nibbler::backN
...
- Added a method to support multi-byte backstep through a string.
- Added unit tests.
2013-08-31 16:02:51 -04:00
Paul Beckingham
773b55d374
Code Cleanup
...
- Removed L10N define. It served its purpose.
2013-04-07 23:50:51 -04:00
Paul Beckingham
1dccd29643
Copyright 2013
...
- Updated copyright notices.
2013-03-04 17:47:12 -05:00
Louis-Claude Canon
ec330921de
Code Cleanup
...
- Factorize code for parsing date elements.
- Better order of blocks for parsing date elements.
- Add corresponding minimal-digit date parsing method for reading seconds,
minutes and week.
- Update documentation and test.
2012-08-02 00:11:12 -04:00
Paul Beckingham
d6d9fbd8e7
Code Propagation
...
- Took a patch to tw from the clog version of Nibbler.
2012-04-14 17:02:04 -04:00
Paul Beckingham
7a45db4d0f
Feature #891
...
- Added feature #891 , which allows for leftmost partial matches of UUID values.
Makes direct comparisons for full-length values, and regular expressions for
partial values. Note that there is a minimum length of 8 hex digits.
- Added safety parsing mechanism that fails a partial UUID if immediately
followed by a hex digit. This allows for numbers longer than 8 digits to not
be misinterpreted as a UUID.
- Implemented Nibbler::getPartialUUID.
- Implemented unit tests.
@@ -1145,12 +1145,23 @@ const A3 A3::sequence (const A3& input) const
for (unsigned int i = 0; i < uuids.size (); ++i)
{
- if (ids.size ())
+ if (ids.size () + i > 0)
sequenced.push_back (Arg ("or", Arg::cat_op));
- sequenced.push_back (Arg ("uuid", Arg::type_string, Arg::cat_dom));
- sequenced.push_back (Arg ("=", Arg::cat_op));
- sequenced.push_back (Arg (uuids[i], Arg::type_string, Arg::cat_literal));
+ // A full-length UUID requires a string comparison.
+ if (uuids[i].length () == 36)
+ {
+ sequenced.push_back (Arg ("uuid", Arg::type_string, Arg::cat_dom));
+ sequenced.push_back (Arg ("=", Arg::cat_op));
+ sequenced.push_back (Arg (uuids[i], Arg::type_string, Arg::cat_literal));
+ }
+ // A UUID fragment is a leftmost comparison.
+ else
+ {
+ sequenced.push_back (Arg ("uuid", Arg::type_string, Arg::cat_dom));
+ sequenced.push_back (Arg ("~", Arg::cat_op));
+ sequenced.push_back (Arg ("^" + uuids[i], Arg::type_string, Arg::cat_rx));
+ }
}
sequenced.push_back (Arg (")", Arg::cat_op));
@@ -1674,11 +1685,11 @@ bool A3::is_uuid (Nibbler& n, std::string& result)
n.save ();
result = "";
std::string uuid;
- if (n.getUUID (uuid))
+ if (n.getPartialUUID (uuid))
{
result += uuid;
while (n.skip (',') &&
- n.getUUID (uuid))
+ n.getPartialUUID (uuid))
{
result += ',' + uuid;
}
@@ -1997,13 +2008,13 @@ bool A3::extract_uuid (
Nibbler n (input);
std::string uuid;
- if (n.getUUID (uuid))
+ if (n.getPartialUUID (uuid))
{
sequence.push_back (uuid);
while (n.skip (','))
{
- if (!n.getUUID (uuid))
+ if (!n.getPartialUUID (uuid))
throw std::string (STRING_A3_UUID_AFTER_COMMA);
sequence.push_back (uuid);
2012-02-19 22:27:40 -05:00
Paul Beckingham
cffc42484e
Code Cleanup
...
- Removed non-STL Nibbler method, which makes way for a future optimization
in the form of a non-copying Nibbler.
2012-02-05 15:28:09 -05:00
Paul Beckingham
fb38dca1db
Parsing
...
- Integrated modified Nibbler and test code from kronisk. These
changes make both test and Nibbler standalone objects, with configurable
features.
2012-01-05 17:37:50 -05:00
Paul Beckingham
6580095002
Copyright
...
- Year change.
2012-01-02 23:32:10 -05:00
Matt Kraai
3a4871e975
Signed-off-by: Paul Beckingham <paul@beckingham.net>
...
Bug #836
- Make A3 use same the number representation as the user.
2011-11-14 23:46:56 -05:00
Federico Hernandez
8116c6a103
License
...
- moving task from GPL to MIT license
top level src directory
2011-10-08 00:04:01 +02:00
Paul Beckingham
966501f5da
Parsing
...
- Implemented Nibbler::getUnsignedNumber.
2011-09-11 00:47:54 -04:00
Paul Beckingham
dab06f8672
Code Cleanup
...
- All objects now use the same convention for naming members. The
consistency is a good thing.
2011-08-25 21:54:28 -04:00
Paul Beckingham
08fcb5362e
Bug - Durations
...
- Duration were parsed as <int><unit> in A3, whereas <number><unit> is
correct.
- Added Nibbler::str method for internal access.
- Nibbler::save, ::restore now return positions. Useful for extracting
substrings.
- Modified countdown.t to use the (now) correct units for durations.
2011-08-17 00:45:09 -04:00
Paul Beckingham
fde7ec107a
Code Cleanup
...
- Removed obsolete Nibbler::getDOM.
2011-07-26 00:40:29 -04:00
Paul Beckingham
0ecf93553c
Nibbler
...
- Implemented Nibbler::getN, which allows for faster extraction of
compound tokens if the length is known.
2011-07-24 14:25:53 -04:00
Paul Beckingham
3fd83ca400
Nibbler
...
- Implemented Nibbler::getName to parse an alpha-numeric name.
- Added appropriate unit tests.
2011-07-24 01:00:24 -04:00
Paul Beckingham
ab6e230f10
Expressions
...
- Implemented Nibbler::getWord.
- Re-implemented Nibbler::getDOM.
- Modified DOM addressed for context-based attributes from "due" to ".due",
the help disambiguate DOM references in expressions. There is now a
consistency:
<id>.due Task-specific
.due Contextual
<uuid>.due General
- Implemented associated unit tests.
2011-07-18 23:08:05 -04:00
Paul Beckingham
d6670ba198
Expressions
...
- Reordered operator table so that longer operators match first, thus
disambiguating between ! and !=.
- Eliminated Expression::expand_expression.
- Modified Nibbler to know what a DOM reference looks like.
- Removed alpha equivalent operators (lt, le, gt, ge, not, eq, ne) because
these are common in descriptions (French: le, ne).
- Modified Arguments and Nibbler unit tests.
2011-06-13 00:45:06 -04:00
Paul Beckingham
8f20efc739
Parsing
...
- Nibbler now understands parsing from a list of tokens, with getOneOf.
2011-06-11 11:13:56 -04:00
Paul Beckingham
a5feb6ef83
Parsing
...
- Implemented Nibbler::getDigit to retrieve a single numeric digit.
- Implemented Nibbler::getISODate.
2011-06-11 08:12:05 -04:00
Paul Beckingham
354d66a5ac
Parsing
...
- Implemented Nibbler::getUUID to assist parsing efforts.
2011-06-04 16:15:44 -04:00
Paul Beckingham
f67706c28e
L10N
...
- Added '#define L10N' marker to all source files that are localized.
2011-05-28 00:02:04 -04:00
Paul Beckingham
036d77e08f
Bug
...
- Disallowed @ and / from an attribute name or modifier. This causes
input like 'user@host:path' to now be parsed as description, and not
as an unrecognized attribute.
2011-02-04 12:14:52 -05:00