2.0.2 / 2012-11-18

  • minor enhancements

  • attribute_set class and instance aliases are created if methods named the same aren't defined yet

2.0.1 / 2012-10-04

  • major enhancements

  • Virtual attributes changes tracking improved; the attr_virtual DSL keyword can be placed anywhere

  • Internal sets refactored, added abstraction layer that utilizes just two class instance variables:

    • @attribute_sets (for keeping sets, attributes map, virtual and semi-real items)
    • @attribute_filters (for keeping filtering methods)
  • minor enhancements

  • Added conversion methods: AttributeSet#to_hash, AttributeSet#to_attribute_set

  • MetaSet improved, removed grandparent.class.bind(self).call

2.0.0 / 2012-10-01

  • major enhancements

  • Operating speed increased by 100%

  • API change:

    • AttributeSet is now based on a Hash
    • Added MetaSet for keeping sets of attribute sets
    • Added DSL keyword for registering filtering methods
    • DSL method filter_attributes is using filtering methods registered before
  • Creation of duplicates for sets moved to class-level accessors

  • Adding elements to sets improved, AttributeSet initializer uses the method add

  • Common Filters seriously refactored (easily expandable and parametrizable now)

  • Added common filters: Convert, Order, Pick, Presence

  • minor enhancements

  • DSL class methods for models have now aliases named in third person

  • AttributeSet#annotations returns a hash containing annotated attributes only

  • Documentation updated, common filters specific documentation moved to COMMON-FILTERS

  • Added AttributeSet::Enumerable#each_name_value enumerator

  • Added AttributeSet::Enumerable#select_accessible enumerator

  • Added DSL for attribute name gethering from next method name in a chain

  • Added filtered_attribute_simple DSL method

  • Added attribute_set_exists? DSL class method

  • Added virtual? and semi_real? to AttributeSet::AttrQuery and AttributeSet::Query

  • Added changed? and unchanged? to AttributeSet::AttrQuery and AttributeSet::Query

  • Added AttributeSet#to_set

  • Improved DSL methods: valid?, invalid?, accessible?, protected?

  • Improved AttributeSet::Query initializer (added error checking)

  • Improved attributes_to_filter DLS method (removed redundant calls to duplicates of a set)

  • Overriden inspect method in AttributeSet

  • major bugfixes

  • Fixed AttributeSet::Query wrapper calls (passing custom calls to next method was broken)

  • Replaced hash.merge(hash) expressions with more HashWithIndifferentAccess compliant

  • minor bugfixes

  • Enumerators wrapped to return AttributeSet::Enumerator objects

1.4.0 / 2012-08-24

  • major enhancements

  • Added annotations support

  • Added Split and Join common filters

  • Improved virtual attributes handling (added attr_virtual keyword)

  • All common filters can now handle arrays and hashes

  • API change: additional yeld params changed for DSL instance methods:

    • for_each_attr_from_set
    • filter_attrs_from_set
    • operate_on_attrs_from_set
  • API change: class methods return copies of sets, not originals

  • minor enhancements

  • Added values and values_hash methods to AttributeSet::Query for reading values

  • Added value method to AttributeSet::AttrQuery for reading value

  • Added each iterator to custom enumerators

  • Added attribute_set_simple instance DSL method for bypassing proxies

  • Added filter_attributes instance DSL method for running all predefined filters

  • Added calls forwarding in proxy classes for instance_eval and instance_exec methods

  • AttributeSetEnumerable is now AttributeSet::Enumerable

  • AttirbuteSetEnumerator is now AttributeSet::Enumerator

  • Modified filtering methods so they return specialized enumerator when called whithout a block

    • for_each_attr_from_set
    • filter_attrs_from_set
  • major bugfixes

  • In AttributeSet::Query: separated instance level data from class level by adding dup where needed

  • In AttributeSet: separated instance level data from class level by adding dup where needed

  • minor bugfixes

  • In AttributeFilters::Common: Squish submodule included in Common module

  • In AttributeSet::Query: replaced calls to send by calls to public_send

  • In AttributeSet::Query: replaced calls to method by calls to public_method

  • In AttributeSet::AttrQuery: replaced call to method by call to public_method

  • In AttributeFilters::operate_on_attrs_from_set: replaced calls to send by calls to public_send

1.3.2 / 2012-08-05

  • minor bugfixes

  • fixed indentation in HISTORY file

1.3.1 / 2012-08-05

  • major enhancements

  • Added accessible?, inaccessible?, protected? attribute checks

  • Added all_accessible_attributes, all_protected_attributes, all_inaccessible_attributes

  • minor enhancements

  • Added squish common filter

1.3.0 / 2012-08-04

  • major bugfixes

  • In AttributeSet::Query: proxy now uses send to get attribute values

  • major enhancements

  • Added valid? and invalid? DSL instance methods

  • Added all_attributes instance method

1.2.2 / 2012-08-03

  • major enhancements

  • Common filtering methods modularized

  • minor enhancements

  • Added is_a? overrides to proxy classes

  • Method attributes_to_filter can now take attribute set as an argument

1.2.1 / 2012-07-09

  • minor bugfixes

  • Fixed documentation links

1.2.0 / 2012-07-08

  • major bugfixes

  • In AttributeSet::Query: removed typo that caused incorrect processing

  • minor bugfixes

  • Added missing respond_to? definitions to proxy classes

  • major enhancements

  • Added enumerators (AttributeSetEnumerable and AttributeSetEnumerator)

  • Added predefined filtering methods

  • Added virtual attributes support in filters

  • Written the usage instructions

  • minor enhancements

  • Removed the show DSL method from AttrQuery proxy class

  • Added checking of model methods that are needed for a proper operation

  • Proxy class AttributeSet::Query is now viral and tries to wrap the results in its own instances

  • Added none and one presence selectors to AttributeSet::Query class

  • Added from_attributes_that as an alias for the attribute_set instance method

1.1.2 / 2012-06-30

  • major bugfixes

  • In operate_on_attrs_from_set: replaced self[attr] and method(attr) calls with send (to be ORM agnostic)

  • In attributes_to_filter: inefficient respond_to? calls replaced by the attributes method call

  • major enhancements

  • AttributeFilters module can be now used without full Rails stack, just with Active Model loaded

  • minor enhancements

  • Documentation updated

  • Added attribute-filters/helpers.rb containing AttributeFiltersHelpers module

  • Flags parsing method attr_filter_process_flags moved to AttributeFiltersHelpers as process_flags

  • Added SuperModel and ActiveRecord dependencies for testing purposes

  • Added first RSpec example

1.1.0 / 2012-06-29

  • major enhancement

  • API changed; call_attrs_from_set name changed to for_each_attr_from_set, caching removed

  • minor enhancements

  • Optimized code for attributes filtering

  • Namespace organized (AttributeFilters moved completely under ActiveModel namespace)

  • Prepared for testing with RSpec

  • Added custom CSS file for YARD formatter

1.0.2 / 2012-06-28

  • minor enhancements

  • Documentation updated

  • Extended arguments parsing for DSL class method attribute_set

1.0.1 / 2012-06-28

  • minor enhancements

  • Documentation updated

  • Rakefile and gemspec updated

1.0.0 / 2012-06-28

  • major enhancement

  • Birthday!