### Home Classes Methods

### In Files

- lib/facets/object/dup.rb
- lib/facets/symbol/generate.rb
- lib/facets/symbol/thrown.rb
- lib/facets/symbol/op_div.rb
- lib/facets/symbol/chomp.rb
- lib/facets/symbol/variablize.rb
- lib/facets/symbol/as_s.rb
- lib/facets/symbol/succ.rb
- lib/facets/symbol/plain.rb
- lib/facets/symbol/to_proc.rb
- lib/facets/symbol/not.rb

### Parent

Object

### Methods

- ::generate
- #/
- #as_s
- #bang?
- #chomp
- #clone?
- #dup!
- #dup?
- #lchomp
- #not?
- #plain?
- #query?
- #reader?
- #setter?
- #succ
- #thrown?
- #to_proc
- #variablize
- #writer?
- #~

### Files

- README.rdoc

### Class/Module Index

Quicksearch

- Lazy
- Lazy::Future
- Lazy::Promise
- Lazy::Promise::DIVERGES
- Lazy::PromiseSafe
- Enumerable
- Enumerable::Recursor
- Method
- Method::Composition
- Module
- Module::InstanceFunction
- Array
- Binding
- Class
- Comparable
- Denumerable
- Denumerator
- Dir
- Enumerator
- Exception
- Facets
- FalseClass
- File
- FileTest
- Fixnum
- Float
- Functor
- Hash
- Indexable
- Instance
- Integer
- Kernel
- MatchData
- NA
- NilClass
- Numeric
- Object
- ObjectSpace
- Proc
- Process
- Range
- Regexp
- String
- Struct
- Symbol
- Time
- TrueClass
- UnboundMethod

No matching classes.

# Symbol

### Public Class Methods

generate(key=nil) click to toggle source

Generate a unique symbol.

    Symbol.generate  #=> :"-1"

If `key` is given the new symbol will be prefixed with it.

    Symbol.generate(:foo)  #=> :"foo-1"

TODO: Is the generated symbol format acceptable?

CREDIT: Trans

    # File lib/facets/symbol/generate.rb, line 15
    def self.generate(key=nil)
      key = key.to_sym if key
      @symbol_generate_counter ||= {}
      @symbol_generate_counter[key] ||= 0
      num = @symbol_generate_counter[key] += 1
      ("#{key}-%X" % num).to_sym
    end

### Public Instance Methods

/(path) click to toggle source

Join with path as a file path.

- path - The path component(s) to append. [to_s]

Examples

    (:merb / "string")   #=> "merb/string"
    (:merb / :symbol)    #=> "merb/symbol"

Returns String of the receiver (as a path string), concatenated with path.

    # File lib/facets/symbol/op_div.rb, line 16
    def /(path)
      File.join(to_s, path.to_s)
    end

as_s() click to toggle source

Convert symbol to string, apply string method and convert back to symbol via a fluent interface.

    :HELLO.as_s.downcase  #=> :hello

    # File lib/facets/symbol/as_s.rb, line 10
    def as_s
      Functor.new do |op, *a|
        to_s.send(op, *a).to_sym
      end
    end

bang?() click to toggle source

Symbol ends in `!`.

    :a!.bang? #=> true
    :a.bang?  #=> false

    # File lib/facets/symbol/plain.rb, line 46
    def bang?
      to_s[-1,1] == '!'
    end

chomp(seperator) click to toggle source

Just like String#chomp.

    :ab.chomp(:b)  #=> :a

CREDIT: Trans

    # File lib/facets/symbol/chomp.rb, line 9
    def chomp(seperator)
      to_s.chomp(seperator.to_s).to_sym
    end

clone?() click to toggle source

    # File lib/facets/object/dup.rb, line 67
    def clone? ; false ; end

dup!() click to toggle source

Since Symbol is immutable it cannot be duplicated. For this reason try_dup returns `self`.

    :a.dup!  #=> :a

    # File lib/facets/object/dup.rb, line 65
    def dup!   ; self  ; end

dup?() click to toggle source

    # File lib/facets/object/dup.rb, line 66
    def dup?   ; false ; end

lchomp(seperator) click to toggle source

Just like String#lchomp.

    :ab.lchomp(:a)  #=> :b

CREDIT: Trans

    # File lib/facets/symbol/chomp.rb, line 19
    def lchomp(seperator)
      to_s.reverse.chomp(seperator.to_s).reverse.to_sym
    end

not?() click to toggle source

Does a symbol have a "not" sign?

    "friend".to_sym.not?   #=> false
    "~friend".to_sym.not?  #=> true

CREDIT: Trans

    # File lib/facets/symbol/not.rb, line 10
    def not?
      self.to_s.slice(0,1) == '~'
    end

plain?() click to toggle source

Symbol does not end in `!`, `=`, or `?`.

    :a.plain?   #=> true
    :a?.plain?  #=> false
    :a!.plain?  #=> false
    :a=.plain?  #=> false

    # File lib/facets/symbol/plain.rb, line 10
    def plain?
      c = to_s[-1,1]
      !(c == '=' || c == '?' || c == '!')
    end

Also aliased as: reader?
query?() click to toggle source

Symbol ends in `?`.

    :a?.query? #=> true
    :a.query?  #=> false

    # File lib/facets/symbol/plain.rb, line 37
    def query?
      to_s[-1,1] == '?'
    end

reader?() click to toggle source

Alias for `plain?` method. Likely this should have been the original and only name, but such is life.

Alias for: plain?
setter?() click to toggle source

Symbol ends in `=`.

    :a=.setter? #=> true
    :a.setter?  #=> false

    # File lib/facets/symbol/plain.rb, line 24
    def setter?
      to_s[-1,1] == '='
    end

Also aliased as: writer?
succ(n=1) click to toggle source

Successor method for symobol. This simply converts the symbol to a string uses String#succ and then converts it back to a symbol.

    :a.succ  #=> :b

TODO: Make this work more like a simple character dial?

    # File lib/facets/symbol/succ.rb, line 13
    def succ(n=1)
      s = self.to_s
      n.times do
        s = s.succ
      end
      s.to_sym
    end

thrown?() click to toggle source

Does the block throw the symbol?

    # File lib/facets/symbol/thrown.rb, line 5
    def thrown?
      catch(self) do
        begin
          yield
          true
        rescue ArgumentError => err     # 1.9 exception
          false  #msg += ", not #{err.message.split(/ /).last}"
        rescue NameError => err         # 1.8 exception
          false  #msg += ", not #{err.name.inspect}"
        end
      end
    end

to_proc() click to toggle source

Turn a symbol into a proc calling the method to which it refers.

    up = :upcase.to_proc
    up.call("hello")  #=> 'HELLO'

More useful is the fact that this allows `&` to be used to coerce Symbol into Proc.

    %w{foo bar qux}.map(&:upcase)   #=> ["FOO","BAR","QUX"]
    [1, 2, 3].inject(&:+)           #=> 6

TODO: This will be deprecated as of Ruby 1.9, since it will become standard Ruby.

CREDIT: Florian Gross (orignal), Nobuhiro Imai (current)

    # File lib/facets/symbol/to_proc.rb, line 20
    def to_proc
      Proc.new{|*args| args.shift.__send__(self, *args)}
    end

variablize() click to toggle source

Prepend an "@" to the beginning of a symbol to make a instance variable name. This also replaces non-valid characters with underscores.

    :a.variablize  #=> :"@a"

    # File lib/facets/symbol/variablize.rb, line 8
    def variablize
      name = to_s.gsub(/\W/, '_')
      "@#{name}".to_sym
    end

writer?() click to toggle source

Alias for `setter?` method. Likely this should have been the original and only name, but such is life.

Alias for: setter?
~() click to toggle source

Add a "not" sign to the front of a symbol.

    (~:friend)  #=> :"~friend"

CREDIT: Trans

    # File lib/facets/symbol/not.rb, line 20
    def ~
      if self.to_s.slice(0,1) == '~'
        "#{self.to_s[1..-1]}".to_sym
      else
        "~#{self}".to_sym
      end
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.