enum_attribute 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +50 -9
- data/VERSION +1 -1
- data/enum_attribute.gemspec +2 -2
- data/lib/enum_attribute.rb +8 -60
- metadata +3 -3
    
        data/README.md
    CHANGED
    
    | @@ -21,18 +21,58 @@ or write Gemfile and "bundle install" | |
| 21 21 |  | 
| 22 22 | 
             
            Usage
         | 
| 23 23 | 
             
            -----
         | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 24 | 
            +
            #add in your model
         | 
| 25 | 
            +
            include EnumAttribute
         | 
| 26 26 |  | 
| 27 | 
            -
             | 
| 28 | 
            -
              | 
| 29 | 
            -
             #ex.
         | 
| 30 | 
            -
             enum_attribute :(your_method), ['a','b','c'] 
         | 
| 27 | 
            +
            #extend your method to model class
         | 
| 28 | 
            +
            enum_attribute :test, ['a','b','c'] 
         | 
| 31 29 |  | 
| 30 | 
            +
              ex.
         | 
| 31 | 
            +
                  #class methods is defined.
         | 
| 32 | 
            +
                  Aaa.tests         => ['a','b','c']
         | 
| 33 | 
            +
                  Aaa.test_names    => [ t('activerecord.attributes.aaa.tests.a'),
         | 
| 34 | 
            +
                                         t('activerecord.attributes.aaa.tests.b'),
         | 
| 35 | 
            +
                                         t('activerecord.attributes.aaa.tests.c') ] 
         | 
| 32 36 |  | 
| 37 | 
            +
                  Aaa.test_name('a')  => t('activerecord.attributes.aaa.tests.a')
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  Aaa.test_pairs    => [[t('activerecord.attributes.aaa.tests.a'),a],
         | 
| 40 | 
            +
                                        [t('activerecord.attributes.aaa.tests.b'),b],
         | 
| 41 | 
            +
                                        [t('activerecord.attributes.aaa.tests.c'),c]] 
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                  test_pairs method is useful for select_tag
         | 
| 44 | 
            +
                   select @aaa, Aaa.test_pairs 
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                  #instance methods also is defined.
         | 
| 47 | 
            +
                  @aaa = Aaa.new(:test=>'a')
         | 
| 48 | 
            +
                  @aaa.test_name     => t('activerecord.attributes.aaa.tests.a')
         | 
| 49 | 
            +
             | 
| 50 | 
            +
             | 
| 51 | 
            +
            #@params [Hash] options
         | 
| 52 | 
            +
            #@options options [boolean] :number(false)
         | 
| 53 | 
            +
               if true, (name)_pairs method return number in 2nd array 
         | 
| 54 | 
            +
               and change column name :column => (name)_id automatically!
         | 
| 55 | 
            +
               It will be useful for select type
         | 
| 56 | 
            +
               ex.
         | 
| 57 | 
            +
                 seting in a model
         | 
| 58 | 
            +
                   enum_attribute :test, ['a','b','c']  :number => true
         | 
| 59 | 
            +
                 you can get
         | 
| 60 | 
            +
                   object.test_pairs => [[a,1],[b,2],[c,3]]
         | 
| 61 | 
            +
             | 
| 62 | 
            +
             | 
| 63 | 
            +
            #@options options [string] :column_name(false) attached column name in table of DB
         | 
| 64 | 
            +
             | 
| 65 | 
            +
               ex. :column => 
         | 
| 66 | 
            +
               it will be set when name and column name is difference
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            #@options options [boolean] :i18n(true)
         | 
| 69 | 
            +
               if i18n == false ,just return raw data
         | 
| 70 | 
            +
             | 
| 71 | 
            +
             | 
| 72 | 
            +
             | 
| 73 | 
            +
            Contributing
         | 
| 74 | 
            +
            ------------ 
         | 
| 33 75 |  | 
| 34 | 
            -
            == Contributing to enum_attribute
         | 
| 35 | 
            -
             
         | 
| 36 76 | 
             
            * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
         | 
| 37 77 | 
             
            * Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
         | 
| 38 78 | 
             
            * Fork the project
         | 
| @@ -41,7 +81,8 @@ Usage | |
| 41 81 | 
             
            * Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
         | 
| 42 82 | 
             
            * Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
         | 
| 43 83 |  | 
| 44 | 
            -
             | 
| 84 | 
            +
            Copyright
         | 
| 85 | 
            +
            ---------
         | 
| 45 86 |  | 
| 46 87 | 
             
            Copyright (c) 2011 Eiji Kosaki. See LICENSE.txt for
         | 
| 47 88 | 
             
            further details.
         | 
    
        data/VERSION
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            0.0. | 
| 1 | 
            +
            0.0.2
         | 
    
        data/enum_attribute.gemspec
    CHANGED
    
    | @@ -5,11 +5,11 @@ | |
| 5 5 |  | 
| 6 6 | 
             
            Gem::Specification.new do |s|
         | 
| 7 7 | 
             
              s.name = %q{enum_attribute}
         | 
| 8 | 
            -
              s.version = "0.0. | 
| 8 | 
            +
              s.version = "0.0.2"
         | 
| 9 9 |  | 
| 10 10 | 
             
              s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
         | 
| 11 11 | 
             
              s.authors = [%q{Eiji Kosaki}]
         | 
| 12 | 
            -
              s.date = %q{2011-07- | 
| 12 | 
            +
              s.date = %q{2011-07-27}
         | 
| 13 13 | 
             
              s.description = %q{I'm going to describe detail later...}
         | 
| 14 14 | 
             
              s.email = %q{monkeytohuman@gmail.com}
         | 
| 15 15 | 
             
              s.extra_rdoc_files = [
         | 
    
        data/lib/enum_attribute.rb
    CHANGED
    
    | @@ -1,52 +1,4 @@ | |
| 1 1 |  | 
| 2 | 
            -
            # usage
         | 
| 3 | 
            -
            #   #add in your model
         | 
| 4 | 
            -
            #    include EnumAttribute
         | 
| 5 | 
            -
            #
         | 
| 6 | 
            -
            #   #seting in a Aaa model
         | 
| 7 | 
            -
            #    enum_attribute :test, ['a','b','c'] 
         | 
| 8 | 
            -
            #
         | 
| 9 | 
            -
            #   ex.
         | 
| 10 | 
            -
            #     class methods is defined.
         | 
| 11 | 
            -
            #       Aaa.tests         => ['a','b','c']
         | 
| 12 | 
            -
            #       Aaa.test_names    => [ t('activerecord.attributes.aaa.tests.a'),
         | 
| 13 | 
            -
            #                              t('activerecord.attributes.aaa.tests.b'),
         | 
| 14 | 
            -
            #                              t('activerecord.attributes.aaa.tests.c') ] 
         | 
| 15 | 
            -
            #
         | 
| 16 | 
            -
            #       Aaa.test_name('a')  => t('activerecord.attributes.aaa.tests.a')
         | 
| 17 | 
            -
            #
         | 
| 18 | 
            -
            #       Aaa.test_pairs    => [[t('activerecord.attributes.aaa.tests.a'),a],
         | 
| 19 | 
            -
            #                             [t('activerecord.attributes.aaa.tests.b'),b],
         | 
| 20 | 
            -
            #                             [t('activerecord.attributes.aaa.tests.c'),c]] 
         | 
| 21 | 
            -
            #
         | 
| 22 | 
            -
            #       test_pairs method is useful for select_tag
         | 
| 23 | 
            -
            #         select @aaa, Aaa.test_pairs 
         | 
| 24 | 
            -
            #
         | 
| 25 | 
            -
            #     instance methods also is defined.
         | 
| 26 | 
            -
            #       @aaa = Aaa.new(:test=>'a')
         | 
| 27 | 
            -
            #       @aaa.test_name     => t('activerecord.attributes.aaa.tests.a')
         | 
| 28 | 
            -
            #
         | 
| 29 | 
            -
            #
         | 
| 30 | 
            -
            # @params [Hash] options
         | 
| 31 | 
            -
            # @options options [boolean] :number(false)
         | 
| 32 | 
            -
            #    if true, (name)_pairs method return number in 2nd array 
         | 
| 33 | 
            -
            #    and change column name :column => (name)_id automatically!
         | 
| 34 | 
            -
            #    It will be useful for select type
         | 
| 35 | 
            -
            #    ex.
         | 
| 36 | 
            -
            #      seting in a model
         | 
| 37 | 
            -
            #        enum_attribute :test, ['a','b','c']  :number => true
         | 
| 38 | 
            -
            #      you can get
         | 
| 39 | 
            -
            #        object.test_pairs => [[a,1],[b,2],[c,3]]
         | 
| 40 | 
            -
            #
         | 
| 41 | 
            -
            #
         | 
| 42 | 
            -
            # @options options [string] :column_name(false) attached column name in table of DB
         | 
| 43 | 
            -
            #
         | 
| 44 | 
            -
            #    ex. :column => 
         | 
| 45 | 
            -
            #    it will be set when name and column name is difference
         | 
| 46 | 
            -
            #
         | 
| 47 | 
            -
            # @options options [boolean] :i18n(true)
         | 
| 48 | 
            -
            #    if i18n == false ,just return raw data
         | 
| 49 | 
            -
            #
         | 
| 50 2 | 
             
            module EnumAttribute
         | 
| 51 3 | 
             
              def self.included target
         | 
| 52 4 | 
             
                target.class_eval do
         | 
| @@ -81,11 +33,13 @@ module EnumAttribute | |
| 81 33 | 
             
                      end
         | 
| 82 34 | 
             
                    end
         | 
| 83 35 | 
             
                    define_method "#{name}_name" do |col|
         | 
| 84 | 
            -
                      return ""  | 
| 85 | 
            -
                      if col.to_i==0
         | 
| 86 | 
            -
                         | 
| 36 | 
            +
                      return "" if col.blank?
         | 
| 37 | 
            +
                      if col.to_i==0 #0 and char -> true
         | 
| 38 | 
            +
                        return "" unless values.any?{|v| v == col.to_s}
         | 
| 39 | 
            +
                        self.i18nt(col,pluralized)
         | 
| 87 40 | 
             
                      else
         | 
| 88 | 
            -
                         | 
| 41 | 
            +
                        return "" if values.size < col.to_i
         | 
| 42 | 
            +
                        self.i18nt(values[col - 1],pluralized)
         | 
| 89 43 | 
             
                      end
         | 
| 90 44 | 
             
                    end
         | 
| 91 45 | 
             
                    def i18nt(value,pluralized) 
         | 
| @@ -102,21 +56,16 @@ module EnumAttribute | |
| 102 56 | 
             
                    column_name = name
         | 
| 103 57 | 
             
                    column_name = opts[:column_name] if opts[:column_name]
         | 
| 104 58 | 
             
                    if opts[:number]
         | 
| 105 | 
            -
                      if __send__(column_name)  | 
| 106 | 
            -
             | 
| 107 | 
            -
                      else
         | 
| 108 | 
            -
                        ""
         | 
| 109 | 
            -
                      end
         | 
| 59 | 
            +
                      return "" if __send__(column_name).to_i - 1 < 0
         | 
| 60 | 
            +
                      values[__send__(column_name).to_i - 1]
         | 
| 110 61 | 
             
                    else
         | 
| 111 62 | 
             
                      column_name
         | 
| 112 63 | 
             
                    end
         | 
| 113 64 | 
             
                  end
         | 
| 114 65 |  | 
| 115 | 
            -
             | 
| 116 66 | 
             
                  # if locale is just variable,it'll cause to error
         | 
| 117 67 | 
             
                  # So array(*locale) can make parameter nothing.
         | 
| 118 68 | 
             
                  # ex. foo.val_name
         | 
| 119 | 
            -
                  #
         | 
| 120 69 | 
             
                  define_method "#{name}_name" do |*locale|
         | 
| 121 70 | 
             
                    column_name = name
         | 
| 122 71 | 
             
                    column_name = opts[:column_name] if opts[:column_name]
         | 
| @@ -139,7 +88,6 @@ module EnumAttribute | |
| 139 88 | 
             
                    i18n_scope = "activerecord"
         | 
| 140 89 | 
             
                    i18n_scope = self.i18n_scope.to_s if defined?(self.i18n_scope) #rails2 support i18n_scope
         | 
| 141 90 | 
             
                    I18n.t("#{i18n_scope}.attributes.#{self.model_name.to_s.underscore}.#{pluralized}.#{value}",:locale=>l)
         | 
| 142 | 
            -
             | 
| 143 91 | 
             
                  end
         | 
| 144 92 |  | 
| 145 93 | 
             
                  # I want to use for checkbox type ,but indeed its hard to manage to store&read with Mysql
         | 
    
        metadata
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            name: enum_attribute
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 4 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 0.0. | 
| 5 | 
            +
              version: 0.0.2
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors: 
         | 
| 8 8 | 
             
            - Eiji Kosaki
         | 
| @@ -10,7 +10,7 @@ autorequire: | |
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 12 |  | 
| 13 | 
            -
            date: 2011-07- | 
| 13 | 
            +
            date: 2011-07-27 00:00:00 Z
         | 
| 14 14 | 
             
            dependencies: 
         | 
| 15 15 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| 16 16 | 
             
              name: rspec
         | 
| @@ -103,7 +103,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 103 103 | 
             
              requirements: 
         | 
| 104 104 | 
             
              - - ">="
         | 
| 105 105 | 
             
                - !ruby/object:Gem::Version 
         | 
| 106 | 
            -
                  hash:  | 
| 106 | 
            +
                  hash: -827134506953628287
         | 
| 107 107 | 
             
                  segments: 
         | 
| 108 108 | 
             
                  - 0
         | 
| 109 109 | 
             
                  version: "0"
         |