Яuбy / Говнокод #20437 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
module SmsRu
  # Setup configuration
  mattr_accessor :api_id

  mattr_reader :queries
  @@queries = SmsRu::Config

  def self.setup
    yield self
  end

  # Sms.ru api settings

  # all possible queries is exactly 2 level deep
  @@stack_method ||= nil

  # we need to undefine method send because of we use it in the api
  class <<self
    undef_method :send
  end

  def self.method_missing(m, options = {})
    if @@stack_method
      query_options = queries.configuration.to_h[@@stack_method].to_h[m].to_h
      query_options.deep_merge!(api_id: api_id)
      query_options.deep_merge! options

      uri = URI.parse("http://sms.ru/#{@@stack_method.to_s}/#{m.to_s}")
      @@stack_method = nil

      response = Net::HTTP.post_form(uri, query_options)

      raise SmsRu::ConnectionError, 'you have troubles with internet connection or API query is missing' unless response.kind_of? Net::HTTPSuccess
      raise SmsRu::APIError, "something going wrong: query_options => #{query_options}, uri => #{uri}, response => #{response.body}" unless response.body.match(/^100/)
      response.body.split("\n")
    else
      @@stack_method = m
      return self
    end
  end
end

Опять руби притесняют :(

сабж: https://github.com/asiniy/sms_ru/blob/master/lib/sms_ru.rb

Unnumbered Unnumbered, (Updated )

Комментарии (33, +33)

Яuбy / Говнокод #20229 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
ja 1 > 0
  izdrukāt_virkni "Sveika pasaule!"
citādi
  izdrukāt_virkni "Kaut kas ir sabojājies"
beigas

Dzintars (Янтарь) — перевод Ruby на латвиску валуоду. Сделан расовыми латышскими программистами Максимом Берёзой и Удисом Озуолсом.

Расовый латышский Ideone: http://dzintars.herokuapp.com/

inkanus-gray inkanus-gray, (Updated )

Комментарии (11, +11)

Яuбy / Говнокод #20202 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
class Review < ActiveRecord::Base
  ...
  def calc_total_rating
    #rating received from client via form
    rating_from_client = self.total_rating

    #rating calculated on server
    rating_from_server = ((prices_value + quality_value + delivery_value).to_f / 3).round(1)

    # check if client's rating is different from automatic
    if rating_from_server.to_i == rating_from_client.to_i
      self.total_rating = rating_from_server
    else
      self.total_rating = rating_from_client
    end
  end
  ...
end

Самый бессмысленный и беспощадный if в моей жизни :)

IzikAJ IzikAJ, (Updated )

Комментарии (4, +4)

Яuбy / Говнокод #20138 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
def self.check_environment_variables
    env_variables_missing = ENV['BATTLE_NET_KEY'].nil? || ENV['BATTLE_NET_KEY'].empty? || ENV['BATTLE_NET_REGION'].nil? || ENV['BATTLE_NET_REGION'].empty? || ENV['BATTLE_NET_LOCALE'].nil? || ENV['BATTLE_NET_LOCALE'].empty?
    message =  'Env variables missing:' if env_variables_missing
    message += " ENV['BATTLE_NET_KEY']" if ENV['BATTLE_NET_KEY'].nil? || ENV['BATTLE_NET_KEY'].empty?
    message += " ENV['BATTLE_NET_REGION']" if ENV['BATTLE_NET_REGION'].nil? || ENV['BATTLE_NET_REGION'].empty?
    message += " ENV['BATTLE_NET_LOCALE']" if ENV['BATTLE_NET_LOCALE'].nil? || ENV['BATTLE_NET_LOCALE'].empty?
    message if env_variables_missing
  end

Кто-нибудь знает метод, которым можно проверять на nil и на empty одновременно?

Artik1994 Artik1994, (Updated )

Комментарии (30, +30)

Яuбy / Говнокод #20118 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
def self.check
    check = ENV['BATTLE_NET_KEY'].nil? || ENV['BATTLE_NET_REGION'].nil? || ENV['BATTLE_NET_LOCALE'].nil?
    message =  'Env variables missing:' if check
    message += " ENV['BATTLE_NET_KEY']" if ENV['BATTLE_NET_KEY'].nil?
    message += " ENV['BATTLE_NET_REGION']" if ENV['BATTLE_NET_REGION'].nil?
    message += " ENV['BATTLE_NET_LOCALE']" if ENV['BATTLE_NET_LOCALE'].nil?
    check ? message : true
  end

  def self.call_api(remote_url)
    if check == true
      encoded_url = URI.encode(remote_url)
      response = HTTParty.get(encoded_url)
      JSON.parse(response.body)
    else
      check
    end
  end

Artik1994 Artik1994, (Updated )

Комментарии (0)

Яuбy / Говнокод #20094 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
[:mail_subject, :mail_from, :mail_to, :mail_text_template].each do |m|
  define_method(m) do
    return self.class.send(m) if self.class.send(m).is_a?(String)
    return self.send self.class.send(m) if self.class.send(m).is_a?(Symbol) && self.respond_to?(self.class.send(m))
  end
end

Здесь даже сложно придраться к чему-то одному. Плохо все: начиная от динамически объявленных методов (то же самое можно сделать через alias) и заканчивая крайне мудреными условиями возврата.

В общем, автора ждет отдельный котел в аду.

strax strax, (Updated )

Комментарии (1, +1)

Яuбy / Говнокод #20088 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
module CoreExt; module Array

  # Check if all array members are instances of given class(es).
  #
  # @return [Boolean]
  # @param [Array, Class] klasses_allowed Array of classes, or a single class
  # @note Returns <tt>true</tt> if the array is empty.
  def is_array_of?(klasses_allowed)
    if klasses_allowed.kind_of? Array
      fail ArgumentError, "Array of Classes expected. Some members are not instances of Class." \
        unless klasses_allowed.is_array_of?(Class)
    elsif klasses_allowed.kind_of? Class
      klasses_allowed = [klasses_allowed]
    else
      fail ArgumentError, "Class or array of classes expected, #{klasses_allowed.class.name} given"
    end
    return true if self.empty?
    self.map(&:class).uniq.reject{ |klass| klasses_allowed.include?(klass) }.empty?
  end


  # @note Sums array members.
  #
  # @return [nil] If source array contains non-numeric values.
  # @return [Fixnum, Integer, Float]
  def sum
    return nil unless self.is_array_of? [Integer, Float, Fixnum]
    self.inject(0) { |sum, value| sum + value }
  end


  # Boil down values proportionally, to make their sum equal to <tt>target_sum</tt>.
  #
  # @param [Fixnum] target_sum
  # @return [Array] Array of pairs [old value, new_value].
  def reduce_to_sum(target_sum)
    current_sum = self.sum
    gap = current_sum - target_sum
    if gap < 0
      return nil
    elsif gap == 0
      return self.collect { |value| [value, value] }
    else
      reduced = 0
      result = self.collect do |value|
        x = (gap * value) / current_sum # Floats round here
        reduced += x
        [value, value - x]
      end
      # Second pass, as target sum is not reached yet due to rounding of floats
      (gap - reduced).times { |i| result[i][1] -= 1 }
      result
    end
  end

end; end


if defined? Array
  Array.class_eval do
    include CoreExt::Array
  end
end

https://github.com/gorodulin/assemblr/blob/master/lib/core_ext/array.rb

cancerogen cancerogen, (Updated )

Комментарии (48, +48)