OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 13:18

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3
Автор Сообщение
СообщениеДобавлено: Суббота, 14 Март, 2020 07:44 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Вроде пришли к консенсусу, что переименование Utf8 в Utf допустимо. Убрал экспорт в ядре процедур для преобразований UCS2 в UTF8 и обратно. Везде в каркасе все преобразования сделал через модуль Utf. В Strings для совместимости пока оставил процедуры преобразований, но пометил как DEPRECATED, удалил их из документации. Модуль Strings теперь не зависит от ядра, реализует преобразования кодировок через модуль Utf, а преобразования регистров и отличение букв от цифр через модуль Unicode.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 07 Май, 2020 07:34 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
С одной стороны, хорошо бы сохранить совместимость с многими подсистемами, которые используют Strings для преобразований Utf8
Но с другой, не хорошо, что Strings таскает зависимость от Utf, да и Unicode тоже. Было бы хорошо оставить там только одну зависимость от Math, как было раньше.
Но тогда как быть с IsUpper IsAlpha и т.п. ?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 08 Май, 2020 18:36 
Администратор

Зарегистрирован: Вторник, 15 Ноябрь, 2005 01:14
Сообщения: 4695
Откуда: Россия, Орёл
Иван Денисов писал(а):
С одной стороны, хорошо бы сохранить совместимость с многими подсистемами, которые используют Strings для преобразований Utf8
Но с другой, не хорошо, что Strings таскает зависимость от Utf, да и Unicode тоже. Было бы хорошо оставить там только одну зависимость от Math, как было раньше.
Но тогда как быть с IsUpper IsAlpha и т.п. ?

Забить на них. Кому надо, будут импортировать Unicode посредственно. А преобразования из Strings убрать, это совершенно правильно.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Май, 2020 07:56 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Есть ещё мнения? Убираем преобразования из Strings?

+ более чёткая архитектура, меньше зависимостей
- ломаем совместимость с некоторыми расширениями и модулями самого каркаса

Модули в ББ, которые это использовали IsUpper, IsLower, IsAlpha будут зависеть от Unicode.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Май, 2020 09:03 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Иван Денисов писал(а):
Есть ещё мнения? Убираем преобразования из Strings?

+ более чёткая архитектура, меньше зависимостей
- ломаем совместимость с некоторыми расширениями и модулями самого каркаса

Модули в ББ, которые это использовали IsUpper, IsLower, IsAlpha будут зависеть от Unicode.


А что предлагаете тогда с IsAlphaNumeric, IsIdent, IsIdentStart? Они же зависят от Unicode, или я ошибаюсь?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 09 Май, 2020 15:41 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
adimetrius писал(а):
А что предлагаете тогда с IsAlphaNumeric, IsIdent, IsIdentStart? Они же зависят от Unicode, или я ошибаюсь?

Верно, их тоже в Unicode вынести.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Май, 2020 10:00 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Товарищи, если ли возражения на этот счёт? Мы избавляем Strings от зависимостей, нарушая совместимость с некоторыми расширениями?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 16 Май, 2020 12:44 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
У меня нет возражений, грязь надо чистить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 20 Май, 2020 17:53 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Подготовил изменение. Таким образом модуль Unicode не будет иметь зависимостей и содержит следующие процедуры.
Код:
DEFINITION Unicode;
   PROCEDURE IsAlpha (ch: CHAR): BOOLEAN;
   PROCEDURE IsAlphaNumeric (ch: CHAR): BOOLEAN;
   PROCEDURE IsIdent (ch: CHAR): BOOLEAN;
   PROCEDURE IsIdentStart (ch: CHAR): BOOLEAN;
   PROCEDURE IsLower (ch: CHAR): BOOLEAN;
   PROCEDURE IsNumeric (ch: CHAR): BOOLEAN;
   PROCEDURE IsUpper (ch: CHAR): BOOLEAN;
   PROCEDURE Lower (ch: CHAR): CHAR;
   PROCEDURE ToLower (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
   PROCEDURE ToUpper (IN in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
   PROCEDURE Upper (ch: CHAR): CHAR;
END Unicode.


Модуль Strings соответственно эти процедуры утратил. Но зато он теперь зависит только от Math.
Код:
DEFINITION Strings;
   CONST
      charCode = -1;
      decimal = 10;
      digitspace = 8FX;
      hexadecimal = -2;
      hideBase = FALSE;
      roman = -3;
      showBase = TRUE;

   PROCEDURE Extract (s: ARRAY OF CHAR; pos, len: INTEGER; OUT res: ARRAY OF CHAR);
   PROCEDURE Find (IN s: ARRAY OF CHAR; IN pat: ARRAY OF CHAR; start: INTEGER; OUT pos: INTEGER);
   PROCEDURE IntToString (x: LONGINT; OUT s: ARRAY OF CHAR);
   PROCEDURE IntToStringForm (x: LONGINT; form, minWidth: INTEGER; fillCh: CHAR; showBase: BOOLEAN; OUT s: ARRAY OF CHAR);
   PROCEDURE RealToString (x: REAL; OUT s: ARRAY OF CHAR);
   PROCEDURE RealToStringForm (x: REAL; precision, minW, expW: INTEGER; fillCh: CHAR; OUT s: ARRAY OF CHAR);
   PROCEDURE Replace (VAR s: ARRAY OF CHAR; pos, len: INTEGER; IN rep: ARRAY OF CHAR);
   PROCEDURE SetToString (x: SET; OUT str: ARRAY OF CHAR);
   PROCEDURE StringToInt (IN s: ARRAY OF CHAR; OUT x, res: INTEGER);
   PROCEDURE StringToLInt (IN s: ARRAY OF CHAR; OUT x: LONGINT; OUT res: INTEGER);
   PROCEDURE StringToReal (IN s: ARRAY OF CHAR; OUT x: REAL; OUT res: INTEGER);
   PROCEDURE StringToSet (IN s: ARRAY OF CHAR; OUT x: SET; OUT res: INTEGER);
   PROCEDURE Valid (IN s: ARRAY OF CHAR): BOOLEAN;
   PROCEDURE GetDecimalSign (): CHAR;
   PROCEDURE SetDecimalSign (sign: CHAR);

END Strings.



В версии 1.6 были вот такие процедуры в Strings, которые работали только в области ASCII. Возникает вопрос, надо ли их оставлять?
Код:
   PROCEDURE Upper* (ch: CHAR): CHAR;
   BEGIN
      IF ORD(ch) < 256 THEN RETURN toUpper[ORD(ch)] ELSE RETURN ch END
   END Upper;

   PROCEDURE ToUpper* (in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
      VAR i, max: INTEGER;
   BEGIN i := 0; max := LEN(out)-1;
      WHILE (in[i] # 0X) & (i < max) DO
         IF ORD(in[i]) < 256 THEN out[i] := toUpper[ORD(in[i])] ELSE out[i] := in[i] END;
         INC(i)
      END;
      out[i] := 0X
   END ToUpper;

   PROCEDURE Lower* (ch: CHAR): CHAR;
   BEGIN
      IF ORD(ch) < 256 THEN RETURN toLower[ORD(ch)] ELSE RETURN ch END
   END Lower;

   PROCEDURE ToLower* (in: ARRAY OF CHAR; OUT out: ARRAY OF CHAR);
      VAR i, max: INTEGER;
   BEGIN i := 0; max := LEN(out)-1;
      WHILE (in[i] # 0X) & (i < max) DO
         IF ORD(in[i]) < 256 THEN out[i] := toLower[ORD(in[i])] ELSE out[i] := in[i] END;
         INC(i)
      END;
      out[i] := 0X
   END ToLower;


Была идея передалать их по SHORTCHAR, но в чате высказывались мнения, что SHORTCHAR не надо использовать.
Поэтому я убрал их... Но решил вынести на форум этот вопрос, чтобы услышать больше мнений.
Оставить ли для совместимости?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 20 Май, 2020 21:59 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
:P Не могу не порадоваться, что вместо Lower(...): BOOLEAN процедура теперь называется IsLower(...): BOOLEAN, и другие подобные изменения.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 21 Май, 2020 07:09 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
adimetrius писал(а):
:P Не могу не порадоваться, что вместо Lower(...): BOOLEAN процедура теперь называется IsLower(...): BOOLEAN, и другие подобные изменения.

Да не... это по старому.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 21 Май, 2020 07:12 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Если оставить процедуры Lower Upper ToLower ToUpper в Strings, то получится, что без изменения интерфейса поменяется из функциональность от версии 1.7 к версии 1.8.
Так получится, что модули импортирующие и использующие эти процедуры у людей будут компилироваться, но работать будут уже иначе. И это плохо. Это аргумент за то, чтобы убрать эти процедуры из Strings.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 25 Май, 2020 07:25 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Добавил эти изменения.

Тестовая версия для Windows.
https://blackbox.oberon.org/unstable/de ... a1.031.zip

Для GNU/Linux
https://blackbox.oberon.org/unstable/de ... .31.tar.gz


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 53 ]  На страницу Пред.  1, 2, 3

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB