Commit Graph

62 Commits

Author SHA1 Message Date
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