Как стать автором
Обновить
26
0
Голуб Михаил @mholub

Пользователь

Отправить сообщение

Method Finder для Ruby по мотивом Squeak'овского

Время на прочтение2 мин
Количество просмотров731
После поста пользователя aovoe захотелось что-то аналогичное для ruby. Наспех был накидан код, который умеет искать по селекторам без аргументов (например «hello».upcase).
Примеры:

  irb(main):001:0> "hello".suggest_method("HELLO")
  => ["upcase", "swapcase"]
  
  irb(main):002:0> "hello".suggest_method("Hello")
  => "capitalize"
  
  irb(main):007:0> Date.parse('13 Sep 2009').suggest_method(256) # Programmer's Day
  => "yday"
  
  irb(main):009:0> 1.01.suggest_method(1)
  => ["prec_i", "round", "truncate", "to_i", "to_int", "floor"]
  
  irb(main):010:0> 1.01.suggest_method(2)
  => "ceil"

Читать дальше →
Всего голосов 28: ↑20 и ↓8+12
Комментарии4

Заметки о Ruby. №1. [[: key,: value], [: key2,: value2]] --> {: key =>: value,: key2 =>: value2 }

Время на прочтение1 мин
Количество просмотров1.1K
Планирую начать очень короткие заметки о ruby.

Иногда нам нужно преобразовать структуру вида [[:key, :value], [:key2, :value2]] в
{ :key => :value, :key2 => :value2 }

Короткое решение:

Hash[[[:key, :value], [:key2, :value2]]]

К сожалению, в ruby 1.8.6 не работает. В 1.8.7 баг (?) исправили.

Обычное решение:

[[:key, :value], [:key2, :value2]].inject({}) { |hash, pair| hash[pair[0]] = pair[1]; hash }

Мегакороткое решение, а главное понятное и работает везде от Eugzol’а:

Hash[*[[:key, :value], [:key2, :value2]].flatten]
Всего голосов 1: ↑0 и ↓1-1
Комментарии7

www.contextfreeart.org — программирование на службе искусства

Время на прочтение2 мин
Количество просмотров1.6K
Пост тем, кто хочет немножко отвлечься от работы и поразвлекаться с умом.

Сегодня наткнулся на интересный проект: contextfree

Все помнят курс теории компиляторов с университета? contextfree — генератор изображений на основе контекстно-свободных грамматик. Терминалами выступают простые графические примитивы (CIRCLE, SQUARE, TRIANGLE и т.д.). Нетерминалы задаем мы. Правила вывода могут включать в себя так называемые преобразования (повернуть, отразить, сдвинуть, поменять цвет). На основе этой простой модели можно получать очень интересные вещи… буквально несколькими строчками кода.

Начнем с простого примера:
startshape JustASquare //Начальный символ грамматики

background { b -1 } //Здесь мы задаем фон. b -1 - означает преобразование
//По умолчанию фон белый (brightness = 1), мы изменяем brightness до 0.

rule JustASquare { // Здесь мы задаем простое правило.
SQUARE { b 1 r 45 } // Белый квадрат, повернутый на 45 градусов.
}



Дальше сложнее...
Всего голосов 73: ↑72 и ↓1+71
Комментарии44

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность