julia_builder 0.1.3 → 0.2.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.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +4 -0
- data/CHANGELOG.md +22 -0
- data/README.md +17 -2
- data/julia.gemspec +6 -0
- data/lib/julia/action.rb +4 -4
- data/lib/julia/builder.rb +26 -11
- data/lib/julia/version.rb +1 -1
- metadata +47 -5
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 2d928afa23df12214960c45dee09e662560ca331
         | 
| 4 | 
            +
              data.tar.gz: a505f103c0ad8fb7a2b933ff086c030f11b6728d
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: eb8f1d47ffe598f1352681451ed0fb3d1dd694dd30ebf940d78e73adb38c1ef5e77eca14a615422291e7f5c557271aa6dc2349d5481c58b5074ff281b9641728
         | 
| 7 | 
            +
              data.tar.gz: 89743c2946e2fa7a84b0d83884785655a2bd818fec39dd8a3a06b36fc1e34524ef6de0d234a1de020bf338e6883c496bb8b15f12beb1e7a9a9ec9f4686419814
         | 
    
        data/.ruby-version
    CHANGED
    
    | @@ -1 +1 @@ | |
| 1 | 
            -
            2. | 
| 1 | 
            +
            2.6.3
         | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    ADDED
    
    | @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # Julia Builder changes
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            0.2.2
         | 
| 4 | 
            +
            -----
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            - Make it compatible for ruby 3.0.0
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            0.2.1
         | 
| 9 | 
            +
            -----
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            - Use csv's API to write headers
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            0.2.0
         | 
| 14 | 
            +
            -----
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            - Add the ability to include mixins. See https://github.com/stevenbarragan/julia_builder/issues/8
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            0.1.5
         | 
| 19 | 
            +
            -----------
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            - Speficy ruby 1.9+ as dependency
         | 
| 22 | 
            +
            - Add `columns` method to set up many columns at once
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,5 +1,8 @@ | |
| 1 1 | 
             
            # Julia Builder
         | 
| 2 | 
            +
            [](https://badge.fury.io/rb/julia_builder)
         | 
| 2 3 | 
             
            [](https://travis-ci.org/stevenbarragan/julia_builder)
         | 
| 4 | 
            +
            [](https://codeclimate.com/github/stevenbarragan/julia_builder)
         | 
| 5 | 
            +
            [](https://codeclimate.com/github/stevenbarragan/julia_builder/coverage)
         | 
| 3 6 |  | 
| 4 7 | 
             
            Julia helps you out to create flexible builders to easily export your queries to csv (for now).
         | 
| 5 8 |  | 
| @@ -39,6 +42,9 @@ require 'julia' | |
| 39 42 | 
             
                  column :name
         | 
| 40 43 | 
             
                  # header equals 'name', value will be `user.name`
         | 
| 41 44 |  | 
| 45 | 
            +
                  # specify many columns at once
         | 
| 46 | 
            +
                  columns :name, :lastname, :dob
         | 
| 47 | 
            +
             | 
| 42 48 | 
             
                  # when you need to do some extra work on the value you can pass a proc.
         | 
| 43 49 | 
             
                  column 'Full name', -> { "#{ name.capitalize } #{ last_name.capitalize }" }
         | 
| 44 50 |  | 
| @@ -46,6 +52,13 @@ require 'julia' | |
| 46 52 | 
             
                  column 'Type' do |user|
         | 
| 47 53 | 
             
                    user.class.name
         | 
| 48 54 | 
             
                  end
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                  # include your own mixins
         | 
| 57 | 
            +
                  include ActionView::Helpers::DateHelper
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                  column 'age' do |c|
         | 
| 60 | 
            +
                    time_ago_in_words c.dob
         | 
| 61 | 
            +
                  end
         | 
| 49 62 | 
             
                end
         | 
| 50 63 | 
             
                ```
         | 
| 51 64 |  | 
| @@ -53,11 +66,13 @@ require 'julia' | |
| 53 66 |  | 
| 54 67 | 
             
                ```ruby
         | 
| 55 68 | 
             
                users = User.all
         | 
| 56 | 
            -
                UserCsv. | 
| 69 | 
            +
                UserCsv.build(users)
         | 
| 57 70 |  | 
| 58 71 | 
             
                # or
         | 
| 72 | 
            +
                UserCsv.build(users, <csv options>)
         | 
| 59 73 |  | 
| 60 | 
            -
                 | 
| 74 | 
            +
                # e.g. no headers
         | 
| 75 | 
            +
                UserCsv.build(users, write_headers: false)
         | 
| 61 76 | 
             
                ```
         | 
| 62 77 |  | 
| 63 78 | 
             
                Csv options could be anything [CSV::new](http://ruby-doc.org/stdlib-2.0.0/libdoc/csv/rdoc/CSV.html#method-c-new) understands, but they are optional.
         | 
    
        data/julia.gemspec
    CHANGED
    
    | @@ -19,7 +19,13 @@ Gem::Specification.new do |spec| | |
| 19 19 | 
             
              spec.executables   = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
         | 
| 20 20 | 
             
              spec.require_paths = ["lib"]
         | 
| 21 21 |  | 
| 22 | 
            +
              spec.required_ruby_version = '>= 1.9'
         | 
| 23 | 
            +
             | 
| 22 24 | 
             
              spec.add_development_dependency "bundler", "~> 1.10"
         | 
| 23 25 | 
             
              spec.add_development_dependency "rake", "~> 10.0"
         | 
| 24 26 | 
             
              spec.add_development_dependency "rspec"
         | 
| 27 | 
            +
              spec.add_development_dependency "activerecord"
         | 
| 28 | 
            +
              spec.add_development_dependency "simplecov"
         | 
| 29 | 
            +
              spec.add_development_dependency "sqlite3"                          unless RUBY_PLATFORM == "java"
         | 
| 30 | 
            +
              spec.add_development_dependency "activerecord-jdbcsqlite3-adapter" if RUBY_PLATFORM == "java"
         | 
| 25 31 | 
             
            end
         | 
    
        data/lib/julia/action.rb
    CHANGED
    
    | @@ -2,14 +2,14 @@ module Julia | |
| 2 2 | 
             
              class Action
         | 
| 3 3 | 
             
                attr_reader :key, :action, :block
         | 
| 4 4 |  | 
| 5 | 
            -
                def initialize(key, action, &block)
         | 
| 6 | 
            -
                  @key    = key
         | 
| 5 | 
            +
                def initialize(key, action = nil, &block)
         | 
| 7 6 | 
             
                  @action = action
         | 
| 8 7 | 
             
                  @block  = block
         | 
| 8 | 
            +
                  @key    = key
         | 
| 9 9 | 
             
                end
         | 
| 10 10 |  | 
| 11 | 
            -
                def get_value(record)
         | 
| 12 | 
            -
                  return  | 
| 11 | 
            +
                def get_value(record, host)
         | 
| 12 | 
            +
                  return host.instance_exec(record, &block) if block
         | 
| 13 13 | 
             
                  return record.instance_exec(&action) if action.is_a? Proc
         | 
| 14 14 |  | 
| 15 15 | 
             
                  record.send [action, key].compact.first
         | 
    
        data/lib/julia/builder.rb
    CHANGED
    
    | @@ -5,33 +5,48 @@ module Julia | |
| 5 5 | 
             
                attr_reader :collection, :csv_options
         | 
| 6 6 |  | 
| 7 7 | 
             
                def initialize(collection, csv_options = Hash.new)
         | 
| 8 | 
            -
                  @collection, @csv_options = collection, csv_options
         | 
| 8 | 
            +
                  @collection, @csv_options = collection, default_options.merge(csv_options)
         | 
| 9 9 | 
             
                end
         | 
| 10 10 |  | 
| 11 | 
            -
                def  | 
| 12 | 
            -
                   | 
| 11 | 
            +
                def default_options
         | 
| 12 | 
            +
                  {
         | 
| 13 | 
            +
                    headers: columns_config.keys,
         | 
| 14 | 
            +
                    write_headers: true
         | 
| 15 | 
            +
                  }
         | 
| 13 16 | 
             
                end
         | 
| 14 17 |  | 
| 15 18 | 
             
                def self.column(keyname, action = nil, &block)
         | 
| 16 | 
            -
                   | 
| 19 | 
            +
                  columns_config[keyname] = Action.new(keyname, action, &block)
         | 
| 17 20 | 
             
                end
         | 
| 18 21 |  | 
| 19 | 
            -
                def  | 
| 20 | 
            -
                   | 
| 21 | 
            -
                     | 
| 22 | 
            +
                def self.columns(*args)
         | 
| 23 | 
            +
                  args.each do |key|
         | 
| 24 | 
            +
                    column(key)
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                def self.columns_config
         | 
| 29 | 
            +
                  @columns_config ||= {}
         | 
| 30 | 
            +
                end
         | 
| 22 31 |  | 
| 32 | 
            +
                def build
         | 
| 33 | 
            +
                  CSV.generate(**csv_options) do |csv|
         | 
| 23 34 | 
             
                    collection.each do |record|
         | 
| 24 | 
            -
                      csv <<  | 
| 25 | 
            -
                        action.get_value(record)
         | 
| 35 | 
            +
                      csv << columns_config.values.map do |action|
         | 
| 36 | 
            +
                        action.get_value(record, self)
         | 
| 26 37 | 
             
                      end
         | 
| 27 38 | 
             
                    end
         | 
| 28 39 | 
             
                  end
         | 
| 29 40 | 
             
                end
         | 
| 30 41 |  | 
| 42 | 
            +
                def self.build(collection, csv_options = Hash.new)
         | 
| 43 | 
            +
                  new(collection, csv_options).build
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 31 46 | 
             
                protected
         | 
| 32 47 |  | 
| 33 | 
            -
                def  | 
| 34 | 
            -
                  self.class. | 
| 48 | 
            +
                def columns_config
         | 
| 49 | 
            +
                  self.class.columns_config
         | 
| 35 50 | 
             
                end
         | 
| 36 51 | 
             
              end
         | 
| 37 52 | 
             
            end
         | 
    
        data/lib/julia/version.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: julia_builder
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.2.2
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Steven Barragán
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2021-02-17 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -52,6 +52,48 @@ dependencies: | |
| 52 52 | 
             
                - - ">="
         | 
| 53 53 | 
             
                  - !ruby/object:Gem::Version
         | 
| 54 54 | 
             
                    version: '0'
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: activerecord
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - ">="
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: '0'
         | 
| 62 | 
            +
              type: :development
         | 
| 63 | 
            +
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - ">="
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: '0'
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: simplecov
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - ">="
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: '0'
         | 
| 76 | 
            +
              type: :development
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - ">="
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: '0'
         | 
| 83 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            +
              name: sqlite3
         | 
| 85 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            +
                requirements:
         | 
| 87 | 
            +
                - - ">="
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: '0'
         | 
| 90 | 
            +
              type: :development
         | 
| 91 | 
            +
              prerelease: false
         | 
| 92 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            +
                requirements:
         | 
| 94 | 
            +
                - - ">="
         | 
| 95 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            +
                    version: '0'
         | 
| 55 97 | 
             
            description: Create flexible builders to export your queries easier than ever
         | 
| 56 98 | 
             
            email:
         | 
| 57 99 | 
             
            - me@steven.mx
         | 
| @@ -63,6 +105,7 @@ files: | |
| 63 105 | 
             
            - ".rspec"
         | 
| 64 106 | 
             
            - ".ruby-version"
         | 
| 65 107 | 
             
            - ".travis.yml"
         | 
| 108 | 
            +
            - CHANGELOG.md
         | 
| 66 109 | 
             
            - CODE_OF_CONDUCT.md
         | 
| 67 110 | 
             
            - Gemfile
         | 
| 68 111 | 
             
            - LICENSE.txt
         | 
| @@ -88,7 +131,7 @@ required_ruby_version: !ruby/object:Gem::Requirement | |
| 88 131 | 
             
              requirements:
         | 
| 89 132 | 
             
              - - ">="
         | 
| 90 133 | 
             
                - !ruby/object:Gem::Version
         | 
| 91 | 
            -
                  version: ' | 
| 134 | 
            +
                  version: '1.9'
         | 
| 92 135 | 
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 93 136 | 
             
              requirements:
         | 
| 94 137 | 
             
              - - ">="
         | 
| @@ -96,9 +139,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 96 139 | 
             
                  version: '0'
         | 
| 97 140 | 
             
            requirements: []
         | 
| 98 141 | 
             
            rubyforge_project: 
         | 
| 99 | 
            -
            rubygems_version: 2. | 
| 142 | 
            +
            rubygems_version: 2.5.2.3
         | 
| 100 143 | 
             
            signing_key: 
         | 
| 101 144 | 
             
            specification_version: 4
         | 
| 102 145 | 
             
            summary: Export your queries easily and fast
         | 
| 103 146 | 
             
            test_files: []
         | 
| 104 | 
            -
            has_rdoc: 
         |