PHP 8.2.31
Preview: utils.rb Size: 5.08 KB
/proc/thread-self/root/opt/alt/ruby21/lib64/ruby/2.1.0/rss/utils.rb

module RSS

  ##
  # RSS::Utils is a module that holds various utility functions that are used
  # across many parts of the rest of the RSS library. Like most modules named
  # some variant of 'util', its methods are probably not particuarly useful
  # to those who aren't developing the library itself.
  module Utils
    module_function

    # Given a +name+ in a name_with_underscores or a name-with-dashes format,
    # returns the CamelCase version of +name+.
    #
    # If the +name+ is already CamelCased, nothing happens.
    #
    # Examples:
    #
    #   require 'rss/utils'
    #
    #   RSS::Utils.to_class_name("sample_name")
    #   # => "SampleName"
    #   RSS::Utils.to_class_name("with-dashes")
    #   # => "WithDashes"
    #   RSS::Utils.to_class_name("CamelCase")
    #   # => "CamelCase"
    def to_class_name(name)
      name.split(/[_\-]/).collect do |part|
        "#{part[0, 1].upcase}#{part[1..-1]}"
      end.join("")
    end

    # Returns an array of two elements: the filename where the calling method
    # is located, and the line number where it is defined.
    #
    # Takes an optional argument +i+, which specifies how many callers up the
    # stack to look.
    #
    # Examples:
    #
    #   require 'rss/utils'
    #
    #   def foo
    #     p RSS::Utils.get_file_and_line_from_caller
    #     p RSS::Utils.get_file_and_line_from_caller(1)
    #   end
    #
    #   def bar
    #     foo
    #   end
    #
    #   def baz
    #     bar
    #   end
    #
    #   baz
    #   # => ["test.rb", 5]
    #   # => ["test.rb", 9]
    #
    # If +i+ is not given, or is the default value of 0, it attempts to figure
    # out the correct value. This is useful when in combination with
    # instance_eval. For example:
    #
    #   require 'rss/utils'
    #
    #   def foo
    #     p RSS::Utils.get_file_and_line_from_caller(1)
    #   end
    #
    #   def bar
    #     foo
    #   end
    #
    #   instance_eval <<-RUBY, *RSS::Utils.get_file_and_line_from_caller
    #   def baz
    #     bar
    #   end
    #   RUBY
    #
    #   baz
    #
    #   # => ["test.rb", 8]
    def get_file_and_line_from_caller(i=0)
      file, line, = caller[i].split(':')
      line = line.to_i
      line += 1 if i.zero?
      [file, line]
    end

    # Takes a string +s+ with some HTML in it, and escapes '&', '"', '<' and '>', by
    # replacing them with the appropriate entities.
    #
    # This method is also aliased to h, for convenience.
    #
    # Examples:
    #
    #   require 'rss/utils'
    #
    #   RSS::Utils.html_escape("Dungeons & Dragons")
    #   # => "Dungeons &amp; Dragons"
    #   RSS::Utils.h(">_>")
    #   # => "&gt;_&gt;"
    def html_escape(s)
      s.to_s.gsub(/&/, "&amp;").gsub(/\"/, "&quot;").gsub(/>/, "&gt;").gsub(/</, "&lt;")
    end
    alias h html_escape

    # If +value+ is an instance of class +klass+, return it, else
    # create a new instance of +klass+ with value +value+.
    def new_with_value_if_need(klass, value)
      if value.is_a?(klass)
        value
      else
        klass.new(value)
      end
    end

    # This method is used inside of several different objects to determine
    # if special behavior is needed in the constructor.
    #
    # Special behavior is needed if the array passed in as +args+ has
    # +true+ or +false+ as its value, and if the second element of +args+
    # is a hash.
    def element_initialize_arguments?(args)
      [true, false].include?(args[0]) and args[1].is_a?(Hash)
    end

    module YesCleanOther
      module_function
      def parse(value)
        if [true, false, nil].include?(value)
          value
        else
          case value.to_s
          when /\Ayes\z/i
            true
          when /\Aclean\z/i
            false
          else
            nil
          end
        end
      end
    end

    module YesOther
      module_function
      def parse(value)
        if [true, false].include?(value)
          value
        else
          /\Ayes\z/i.match(value.to_s) ? true : false
        end
      end
    end

    module CSV
      module_function
      def parse(value, &block)
        if value.is_a?(String)
          value = value.strip.split(/\s*,\s*/)
          value = value.collect(&block) if block_given?
          value
        else
          value
        end
      end
    end

    module InheritedReader
      def inherited_reader(constant_name)
        base_class = inherited_base
        result = base_class.const_get(constant_name)
        found_base_class = false
        ancestors.reverse_each do |klass|
          if found_base_class
            if klass.const_defined?(constant_name)
              result = yield(result, klass.const_get(constant_name))
            end
          else
            found_base_class = klass == base_class
          end
        end
        result
      end

      def inherited_array_reader(constant_name)
        inherited_reader(constant_name) do |result, current|
          current + result
        end
      end

      def inherited_hash_reader(constant_name)
        inherited_reader(constant_name) do |result, current|
          result.merge(current)
        end
      end
    end
  end
end

Directory Contents

Dirs: 3 × Files: 22

Name Size Perms Modified Actions
content DIR
- drwxr-xr-x 2024-03-03 22:43:05
Edit Download
- drwxr-xr-x 2024-03-03 22:43:05
Edit Download
maker DIR
- drwxr-xr-x 2024-03-03 22:43:05
Edit Download
10.58 KB lrw-r--r-- 2013-08-05 16:29:28
Edit Download
9.61 KB lrw-r--r-- 2013-08-06 13:36:31
Edit Download
3.40 KB lrw-r--r-- 2013-08-05 16:25:04
Edit Download
22.41 KB lrw-r--r-- 2013-08-05 16:25:04
Edit Download
859 B lrw-r--r-- 2013-11-09 05:56:09
Edit Download
3.87 KB lrw-r--r-- 2009-10-02 10:45:39
Edit Download
4.27 KB lrw-r--r-- 2013-11-09 05:56:09
Edit Download
4.76 KB lrw-r--r-- 2013-11-09 05:56:09
Edit Download
10.04 KB lrw-r--r-- 2013-11-09 05:56:09
Edit Download
1.75 KB lrw-r--r-- 2013-04-26 12:21:45
Edit Download
15.58 KB lrw-r--r-- 2013-11-09 05:56:09
Edit Download
964 B lrw-r--r-- 2013-08-09 14:50:11
Edit Download
35.15 KB lrw-r--r-- 2015-09-29 08:34:18
Edit Download
1.30 KB lrw-r--r-- 2013-11-09 05:56:09
Edit Download
1.84 KB lrw-r--r-- 2013-11-09 05:56:09
Edit Download
3.16 KB lrw-r--r-- 2013-11-09 05:56:09
Edit Download
6.69 KB lrw-r--r-- 2013-08-09 20:46:48
Edit Download
5.08 KB lrw-r--r-- 2013-08-06 22:46:46
Edit Download
2.13 KB lrw-r--r-- 2009-10-02 10:45:39
Edit Download
1.47 KB lrw-r--r-- 2007-11-16 01:30:29
Edit Download
1.62 KB lrw-r--r-- 2013-08-19 17:02:40
Edit Download
2.10 KB lrw-r--r-- 2009-10-02 10:45:39
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).