Sha256: ea505ee44045c4b36e4aa800b8df1b315c9da08e8960145092f0518364ff23e8

Contents?: true

Size: 1.27 KB

Versions: 236

Compression:

Stored size: 1.27 KB

Contents

module Eco
  module Language
    module Models
      class Modifier < Array

        DEFAULT_MODE      = [:default, :none]

        def initialize(value = [])
          super(into_a(value))
        end

        def new
          self.class.new(self.resolve_mode.to_a)
        end

        # MODE MODIFIERS
        # resolve mode
        def mode
          resolve_mode
        end

        def <(value)
          self.clear << value
        end

        def <<(value)
          self.concat(into_a(value))
        end

        def flush_mode
          self < self.mode
        end

        def default(value)
          #self.unshift(value)
          reset
        end

        def reset
          self < DEFAULT_MODE.first
        end

        def default?
          (mode - DEFAULT_MODE).length == 0
        end

        protected

        def resolve_mode
          self.to_a
        end

        def resolve (ms, flags)
          # later modifiers have precedence
          flag = (ms & flags).last
          ms = (ms - flags).push(flag) unless !flag
          return ms
        end

        def into_a(value)
          value = [].push(value) unless value.is_a?(Array)
          value
        end

      end
    end
  end
end

Version data entries

236 entries across 236 versions & 1 rubygems

Version Path
eco-helpers-3.0.21 lib/eco/language/models/modifier.rb
eco-helpers-3.0.20 lib/eco/language/models/modifier.rb
eco-helpers-3.0.19 lib/eco/language/models/modifier.rb
eco-helpers-3.0.18 lib/eco/language/models/modifier.rb
eco-helpers-3.0.17 lib/eco/language/models/modifier.rb
eco-helpers-3.0.16 lib/eco/language/models/modifier.rb
eco-helpers-3.0.15 lib/eco/language/models/modifier.rb
eco-helpers-3.0.14 lib/eco/language/models/modifier.rb
eco-helpers-3.0.13 lib/eco/language/models/modifier.rb
eco-helpers-3.0.12 lib/eco/language/models/modifier.rb
eco-helpers-3.0.11 lib/eco/language/models/modifier.rb
eco-helpers-3.0.10 lib/eco/language/models/modifier.rb
eco-helpers-3.0.9 lib/eco/language/models/modifier.rb
eco-helpers-3.0.8 lib/eco/language/models/modifier.rb
eco-helpers-3.0.7 lib/eco/language/models/modifier.rb
eco-helpers-3.0.6 lib/eco/language/models/modifier.rb
eco-helpers-3.0.5 lib/eco/language/models/modifier.rb
eco-helpers-3.0.4 lib/eco/language/models/modifier.rb
eco-helpers-3.0.3 lib/eco/language/models/modifier.rb
eco-helpers-3.0.2 lib/eco/language/models/modifier.rb