Source

socionic / lib / socionic / dichotomy.rb

require 'socionic_mixin'
module Socionic
    class Dichotomy
        include SocionicMixin
        VALUES = {
            :E => 0b1000,
            :I => 0b0000,
            :N => 0b0100,
            :S => 0b0000,
            :T => 0b0010,
            :F => 0b0000,
            :P => 0b0001,
            :J => 0b0000,
        }
        attr_reader :value, :abbr, :alias
        def initialize(abbr)
            self.abbr = abbr
        end
        def abbr=(abbr)
            @abbr = abbr
            @value = VALUES[@abbr]
            @alias = ''
        end
        def to_s
            res = "#{@value.to_s 2}: #{@abbr}"
            res += " - #{@alias}" unless @alias.empty?
            res
        end
        def &(other)
            value & other.value
        end
        def +(other)
            "#{abbr}#{other.abbr}"
        end
    end
end
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.