module BuilderSupport

Constants

VERSION

Public Class Methods

builder_support(rmv: [ ], add: [ ]) click to toggle source
# File lib/builder_support.rb, line 6
def self.builder_support rmv: [ ], add: [ ]
  extend ClassMethods
  delegate :show_attrs, :flatten_attrs, to: self
  include InstanceMethods

  builder_rmv *rmv
  # %i[ a, b, c d ]
  # %i[ flatten: a b, other_declare: c d ]
  # 'a b and c'
  # 'flatten: a and b, other_declare: c and d'
  add = add.split(/ and | /) if add.is_a? String
  add.map { |item| item[','] ? [item.to_s.delete(','), ','] : item }
      .flatten.map(&:to_sym).split(:',').each do |attrs|
    builder_add *attrs
  end
end
included(base) click to toggle source
# File lib/builder_support.rb, line 4
def self.included(base)
  base.class_eval do
    def self.builder_support rmv: [ ], add: [ ]
      extend ClassMethods
      delegate :show_attrs, :flatten_attrs, to: self
      include InstanceMethods

      builder_rmv *rmv
      # %i[ a, b, c d ]
      # %i[ flatten: a b, other_declare: c d ]
      # 'a b and c'
      # 'flatten: a and b, other_declare: c and d'
      add = add.split(/ and | /) if add.is_a? String
      add.map { |item| item[','] ? [item.to_s.delete(','), ','] : item }
          .flatten.map(&:to_sym).split(:',').each do |attrs|
        builder_add *attrs
      end
    end
  end
end