wow. that was easy: git mv core nucleus
[feisty_meow.git] / core / library / textual / parser_bits.cpp
diff --git a/core/library/textual/parser_bits.cpp b/core/library/textual/parser_bits.cpp
deleted file mode 100644 (file)
index 0bf3317..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-/*****************************************************************************\
-*                                                                             *
-*  Name   : parser_bits                                                       *
-*  Author : Chris Koeritz                                                     *
-*                                                                             *
-*******************************************************************************
-* Copyright (c) 2000-$now By Author.  This program is free software; you can  *
-* redistribute it and/or modify it under the terms of the GNU General Public  *
-* License as published by the Free Software Foundation; either version 2 of   *
-* the License or (at your option) any later version.  This is online at:      *
-*     http://www.fsf.org/copyleft/gpl.html                                    *
-* Please send any updates to: fred@gruntose.com                               *
-\*****************************************************************************/
-
-#include "parser_bits.h"
-
-#include <basis/astring.h>
-#include <basis/environment.h>
-#include <basis/functions.h>
-
-#include <ctype.h>
-#include <stdio.h>
-
-using namespace basis;
-
-#undef LOG
-#define LOG(prf) printf("%s\n", basis::astring(prf).s())
-
-namespace textual {
-
-parser_bits::line_ending parser_bits::platform_eol()
-{
-#ifdef __UNIX__
-  // obviously a unix OS, unless someone's playing games with us.
-  return LF_AT_END;
-#elif defined(__WIN32__)
-  // smells like DOS.
-  return CRLF_AT_END;
-#else
-  // pick the unix default if we can't tell.
-  return LF_AT_END;
-#endif
-}
-
-const char *parser_bits::eol_to_chars(line_ending end)
-{
-  static const char *CRLF_AT_END_STRING = "\r\n";
-  static const char *LF_AT_END_STRING = "\n";
-  static const char *NO_ENDING_STRING = "";
-
-  switch (end) {
-    case CRLF_AT_END: return CRLF_AT_END_STRING;
-    case NO_ENDING: return NO_ENDING_STRING;
-    case LF_AT_END:  // fall-through to default.
-    default: return LF_AT_END_STRING;
-  }
-}
-
-const char *parser_bits::platform_eol_to_chars()
-{ return eol_to_chars(platform_eol()); }
-
-bool parser_bits::is_printable_ascii(char to_check)
-{ return (to_check >= 32) && (to_check <= 126); }
-
-bool parser_bits::white_space_no_cr(char to_check)
-{ return (to_check == ' ') || (to_check == '\t'); }
-
-bool parser_bits::is_eol(char to_check)
-{ return (to_check == '\n') || (to_check == '\r'); }
-
-bool parser_bits::white_space(char to_check)
-{ return white_space_no_cr(to_check) || is_eol(to_check); }
-
-void parser_bits::translate_CR_for_platform(astring &to_translate)
-{
-  line_ending plat_eol = platform_eol();
-  bool last_was_lf = false;
-  for (int i = 0; i <= to_translate.end(); i++) {
-    if (to_translate[i] == '\r') {
-      if (last_was_lf) continue;  // ignore two in a row.
-      last_was_lf = true;
-    } else if (to_translate[i] == '\n') {
-      if (last_was_lf) {
-        if (plat_eol != CRLF_AT_END) {
-          // fix it, since there was not supposed to be an LF.
-          to_translate.zap(i - 1, i - 1);
-          i--;
-        }
-      } else {
-        if (plat_eol == CRLF_AT_END) {
-          // fix it, since we're missing an LF that we want.
-          to_translate.insert(i, "\r");
-          i++;
-        }
-      }
-      last_was_lf = false;
-    } else {
-      // not the two power characters.
-      last_was_lf = false;
-    }
-  }
-}
-
-bool parser_bits::is_hexadecimal(char look_at)
-{
-  return range_check(look_at, 'a', 'f')
-      || range_check(look_at, 'A', 'F')
-      || range_check(look_at, '0', '9');
-}
-
-bool parser_bits::is_hexadecimal(const char *look_at, int len)
-{
-  for (int i = 0; i < len; i++)
-    if (!is_hexadecimal(look_at[i])) return false;
-  return true;
-}
-
-bool parser_bits::is_hexadecimal(const astring &look_at, int len)
-{ return is_hexadecimal(look_at.observe(), len); }
-
-bool parser_bits::is_alphanumeric(char look_at)
-{
-  return range_check(look_at, 'a', 'z')
-      || range_check(look_at, 'A', 'Z')
-      || range_check(look_at, '0', '9');
-}
-
-bool parser_bits::is_alphanumeric(const char *look_at, int len)
-{
-  for (int i = 0; i < len; i++)
-    if (!is_alphanumeric(look_at[i])) return false;
-  return true;
-}
-
-bool parser_bits::is_alphanumeric(const astring &look_at, int len)
-{ return is_alphanumeric(look_at.observe(), len); }
-
-bool parser_bits::is_identifier(char look_at)
-{
-  return range_check(look_at, 'a', 'z')
-      || range_check(look_at, 'A', 'Z')
-      || range_check(look_at, '0', '9')
-      || (look_at == '_');
-}
-
-bool parser_bits::is_identifier(const char *look_at, int len)
-{
-  if (is_numeric(look_at[0])) return false;
-  for (int i = 0; i < len; i++)
-    if (!is_identifier(look_at[i])) return false;
-  return true;
-}
-
-bool parser_bits::is_identifier(const astring &look_at, int len)
-{ return is_identifier(look_at.observe(), len); }
-
-bool parser_bits::is_numeric(char look_at)
-{
-  return range_check(look_at, '0', '9') || (look_at == '-');
-}
-
-bool parser_bits::is_numeric(const char *look_at, int len)
-{
-  for (int i = 0; i < len; i++) {
-    if (!is_numeric(look_at[i])) return false;
-    if ( (i > 0) && (look_at[i] == '-') ) return false;
-  }
-  return true;
-}
-
-bool parser_bits::is_numeric(const astring &look_at, int len)
-{ return is_numeric(look_at.observe(), len); }
-
-astring parser_bits::substitute_env_vars(const astring &to_process,
-    bool leave_unknown)
-{
-  astring editing = to_process;
-
-//LOG(astring("input to subst env: ") + to_process);
-
-  int indy;  // index of the dollar sign in the string.
-  while (true) {
-    indy = editing.find('$');
-    if (negative(indy)) break;  // all done.
-    int q;
-    for (q = indy + 1; q < editing.length(); q++) {
-      if (!parser_bits::is_identifier(editing[q]))
-        break;  // done getting variable name.
-    }
-    if (q != indy + 1) {
-      // we caught something in our environment variable trap...
-      astring var_name = editing.substring(indy + 1, q - 1);
-//LOG(astring("var name ") + var_name);
-      astring value_found = environment::get(var_name);
-//LOG(astring("val found ") + value_found);
-      if (value_found.t()) {
-        editing.zap(indy, q - 1);
-        editing.insert(indy, value_found);
-      } else {
-        if (leave_unknown) {
-          // that lookup failed.  let's mark it.
-          editing[indy] = '?';
-            // simple replacement, shows variables that failed.
-        } else {
-          // replace it with blankness.
-          editing.zap(indy, q - 1);
-        }
-      }
-    } else {
-      // well, we didn't see a valid variable name, but we don't want to leave
-      // the dollar sign in there.
-      editing[indy] = '!';  // simple replacement, marks where syntax is bad.
-    }
-
-  }
-
-//LOG(astring("output from subst env: ") + editing);
-
-  return editing;
-}
-
-} //namespace.
-