diff --git a/Gemfile b/Gemfile index 5556ddc7afd73ccb7097d1dba7c5c31ab8d0f809..ca3cf49a68b4006dfb8ff49d24122acc11e8bf7e 100644 --- a/Gemfile +++ b/Gemfile @@ -4,5 +4,5 @@ source 'https://rubygems.org' git_source(:github) { |repo_name| "https://github.com/#{repo_name}" } -# Specify your gem's dependencies in excelsior.gemspec +# Specify your gem's dependencies in excelsieur.gemspec gemspec diff --git a/Gemfile.lock b/Gemfile.lock index be055d21bce4012a48e63147e1e29b928688e021..30338ac4714f3bbcdd1ebbdbc82b19d6fd991e8f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - excelsior (0.1.0) + excelsieur (0.1.0) activerecord (>= 4.0.0) rails (>= 4.0.0) simple_xlsx_reader (~> 1.0.2) @@ -142,7 +142,7 @@ PLATFORMS DEPENDENCIES bundler (~> 1.16) - excelsior! + excelsieur! minitest (~> 5.0) rake (~> 10.0) rubocop (~> 0.56.0) diff --git a/README.md b/README.md index 00eef0d0eb649c8191624f7e2a8991d0e1a79945..ca868523ada42a9dbffc203e6d359f7609c94acb 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -<img src="docs/excelsior-logo.png" width="480"> +<img src="docs/excelsieur-logo.png" width="480"> --- @@ -9,7 +9,7 @@ A straightforward way to import data from an excel sheet into your ruby app. Add this line to your application's Gemfile: ```ruby -gem 'excelsior' +gem 'excelsieur' ``` And then execute: @@ -18,14 +18,14 @@ And then execute: Or install it yourself as: - $ gem install excelsior + $ gem install excelsieur ## How to use it -Create a class which declares how columns from an excel sheet map to your ruby object model by extending from the `Excelsior::Importer` class: +Create a class which declares how columns from an excel sheet map to your ruby object model by extending from the `Excelsieur::Importer` class: ```ruby -class UserImporter < Excelsior::Importer +class UserImporter < Excelsieur::Importer # declare the source file source "static/ftp/users.xlsx" @@ -44,7 +44,7 @@ import = UserImport.new import.run # calls User.create!(row) for each row ``` -The result is an instance of `Excelsior::Result`: +The result is an instance of `Excelsieur::Result`: ```ruby result = import.run @@ -53,7 +53,7 @@ result.status result.errors # => { missing_column: [], model: [] } result.report -# => #<struct Excelsior::Report inserted=2, failed=0> +# => #<struct Excelsieur::Report inserted=2, failed=0> ``` ### Model validation @@ -67,7 +67,7 @@ import = UserImport.new import.run import.errors[:model] -# => [#<struct Excelsior::Error row=3, errors=["First name can't be blank"]>] +# => [#<struct Excelsieur::Error row=3, errors=["First name can't be blank"]>] ``` ### Report @@ -80,7 +80,7 @@ import = UserImport.new import.run import.report -# => #<struct Excelsior::Report inserted=2, failed=1> +# => #<struct Excelsieur::Report inserted=2, failed=1> import.total # => 3 @@ -91,7 +91,7 @@ import.total When setting `transaction true` no record is inserted if any one of them has an error. ```ruby -class UserImporter < Excelsior::Importer +class UserImporter < Excelsieur::Importer # declare the source file source "static/ftp/users.xlsx" @@ -153,7 +153,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To ## Contributing -Bug reports and pull requests are welcome on GitHub at https://github.com/manufaktor/excelsior. +Bug reports and pull requests are welcome on GitHub at https://github.com/panter/excelsieur. ## License diff --git a/bin/console b/bin/console index 2b65065a63eb8f897d936dcba22d4b7747f55a85..8813021f3ed5ea37df8aefde8e5d680c093d711f 100755 --- a/bin/console +++ b/bin/console @@ -2,7 +2,7 @@ # frozen_string_literal: true require 'bundler/setup' -require 'excelsior' +require 'excelsieur' # You can add fixtures and/or initialization code here to make experimenting # with your gem easier. You can also use a different console, if you like. diff --git a/docs/excelsieur-logo.png b/docs/excelsieur-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7f798031b68143571a14b27b3bf995bec3e69383 Binary files /dev/null and b/docs/excelsieur-logo.png differ diff --git a/docs/excelsior-logo.png b/docs/excelsior-logo.png deleted file mode 100644 index 049fe6d36df9617d14af6006334ca4b28b597d65..0000000000000000000000000000000000000000 Binary files a/docs/excelsior-logo.png and /dev/null differ diff --git a/excelsior.gemspec b/excelsieur.gemspec similarity index 91% rename from excelsior.gemspec rename to excelsieur.gemspec index 46af335a5a3ae14e0ec1b2d4704f33dc78b0b143..1b21bd2555fcdf0c3cf9feacaf9928ed2c91dd31 100644 --- a/excelsior.gemspec +++ b/excelsieur.gemspec @@ -2,18 +2,18 @@ lib = File.expand_path('lib', __dir__) $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require 'excelsior/version' +require 'excelsieur/version' Gem::Specification.new do |spec| - spec.name = 'excelsior' - spec.version = Excelsior::VERSION + spec.name = 'excelsieur' + spec.version = Excelsieur::VERSION spec.authors = ['Immanuel Häussermann', 'Alexis Reigel'] spec.email = ['hai@panter.ch', 'lex@panter.ch'] spec.summary = 'Helps you import data from an excel sheet' spec.description = 'Provides a concise DSL to map, validate and import data ' \ 'from an excel sheet into your ruby app' - spec.homepage = 'https://git.panter.ch/open-source/excelsior' + spec.homepage = 'https://git.panter.ch/open-source/excelsieur' spec.license = 'MIT' spec.files = `git ls-files -z`.split("\x0").reject do |f| diff --git a/lib/excelsieur.rb b/lib/excelsieur.rb new file mode 100644 index 0000000000000000000000000000000000000000..85ca144872588a4e8b6eb4634437d951b3cd8c6e --- /dev/null +++ b/lib/excelsieur.rb @@ -0,0 +1,6 @@ +# frozen_string_literal: true + +require 'excelsieur/version' + +module Excelsieur +end diff --git a/lib/excelsior/error.rb b/lib/excelsieur/error.rb similarity index 79% rename from lib/excelsior/error.rb rename to lib/excelsieur/error.rb index aefa2b9fea9da822fe8e56a51e728f60052a691f..0dcb99db70b9ddac09d3e9ee463c194e112321b7 100644 --- a/lib/excelsior/error.rb +++ b/lib/excelsieur/error.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -module Excelsior +module Excelsieur Error = Struct.new(:row, :errors) end diff --git a/lib/excelsior/import.rb b/lib/excelsieur/import.rb similarity index 92% rename from lib/excelsior/import.rb rename to lib/excelsieur/import.rb index cd81e3e479b4847c68ef8fdbcbd9f1304af5b39e..36115eb472cd19bca816b7b6867f534c693a23ea 100644 --- a/lib/excelsior/import.rb +++ b/lib/excelsieur/import.rb @@ -3,14 +3,14 @@ require 'simple_xlsx_reader' require 'rails' require 'active_record' -require 'excelsior/source' -require 'excelsior/mapping' -require 'excelsior/error' -require 'excelsior/report' -require 'excelsior/transaction' -require 'excelsior/result' - -module Excelsior +require 'excelsieur/source' +require 'excelsieur/mapping' +require 'excelsieur/error' +require 'excelsieur/report' +require 'excelsieur/transaction' +require 'excelsieur/result' + +module Excelsieur class Import include Source include Mapping diff --git a/lib/excelsior/mapping.rb b/lib/excelsieur/mapping.rb similarity index 96% rename from lib/excelsior/mapping.rb rename to lib/excelsieur/mapping.rb index d41ccee9339e78e55ac2e25929f244687a351403..3b0c130ef9385ed575e9ddb4f4e6834377eaac5a 100644 --- a/lib/excelsior/mapping.rb +++ b/lib/excelsieur/mapping.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module Excelsior +module Excelsieur module Mapping def self.included(host_class) host_class.extend ClassMethods diff --git a/lib/excelsior/report.rb b/lib/excelsieur/report.rb similarity index 94% rename from lib/excelsior/report.rb rename to lib/excelsieur/report.rb index ecd2acf3402bc6c213b64d6425069cc26a91682a..76bb9dd9090a315e1b2a1d8371d54f5a266e1ae5 100644 --- a/lib/excelsior/report.rb +++ b/lib/excelsieur/report.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module Excelsior +module Excelsieur Report = Struct.new(:expected, :inserted, :failed) do def initialize(*args) super(*args) diff --git a/lib/excelsior/result.rb b/lib/excelsieur/result.rb similarity index 97% rename from lib/excelsior/result.rb rename to lib/excelsieur/result.rb index c0ff721ec8f61c1189b2b463e6b6564566aa1407..d5746f444d44e95f0e1ef2e4a6cb2da82fbd901f 100644 --- a/lib/excelsior/result.rb +++ b/lib/excelsieur/result.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module Excelsior +module Excelsieur class Result module Statuses PENDING = :pending diff --git a/lib/excelsior/source.rb b/lib/excelsieur/source.rb similarity index 93% rename from lib/excelsior/source.rb rename to lib/excelsieur/source.rb index 8b9648b309c7b4d4283b5879078040fdf07c3d54..db846dae278bf068c54ae3f752c06f0d994cae84 100644 --- a/lib/excelsior/source.rb +++ b/lib/excelsieur/source.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module Excelsior +module Excelsieur module Source def self.included(host_class) host_class.extend ClassMethods diff --git a/lib/excelsior/transaction.rb b/lib/excelsieur/transaction.rb similarity index 94% rename from lib/excelsior/transaction.rb rename to lib/excelsieur/transaction.rb index e0950e76c15be5893ffbb0aa5097ef63cfd309f8..41fdb74ade821e52bb92441d65c593c04c4b28ba 100644 --- a/lib/excelsior/transaction.rb +++ b/lib/excelsieur/transaction.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -module Excelsior +module Excelsieur module Transaction def self.included(host_class) host_class.extend ClassMethods diff --git a/lib/excelsior/version.rb b/lib/excelsieur/version.rb similarity index 75% rename from lib/excelsior/version.rb rename to lib/excelsieur/version.rb index 5e6ab00c6cf26ea56300474ac91ec08e70290038..1fc24abd8a255460a8d24687c248aef5f37f06c5 100644 --- a/lib/excelsior/version.rb +++ b/lib/excelsieur/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true -module Excelsior +module Excelsieur VERSION = '0.1.0' end diff --git a/lib/excelsior.rb b/lib/excelsior.rb deleted file mode 100644 index 51f6da223aa021914e6be1df2596bba2cde2b962..0000000000000000000000000000000000000000 --- a/lib/excelsior.rb +++ /dev/null @@ -1,6 +0,0 @@ -# frozen_string_literal: true - -require 'excelsior/version' - -module Excelsior -end diff --git a/test/excelsior_test.rb b/test/excelsieur_test.rb similarity index 90% rename from test/excelsior_test.rb rename to test/excelsieur_test.rb index c9e3d6f62feba2de53be9069de69ca7377922df1..6745725e42570f0ef4012146f23b3fca6ec3623c 100644 --- a/test/excelsior_test.rb +++ b/test/excelsieur_test.rb @@ -1,17 +1,17 @@ # frozen_string_literal: true require 'test_helper' -require 'excelsior/import' +require 'excelsieur/import' class User < ActiveRecord::Base validates :first_name, presence: true end -describe Excelsior do +describe Excelsieur do before do Object.send(:remove_const, :UserImport) if Object.constants.include?(:UserImport) - class UserImport < Excelsior::Import + class UserImport < Excelsieur::Import source 'test/files/complete.xlsx' map 'Vorname', to: :first_name @@ -23,7 +23,7 @@ describe Excelsior do end it 'has a version number' do - refute_nil ::Excelsior::VERSION + refute_nil ::Excelsieur::VERSION end describe 'source' do @@ -50,7 +50,7 @@ describe Excelsior do before do Object.send(:remove_const, :UserImport) if Object.constants.include?(:UserImport) - class UserImport < Excelsior::Import + class UserImport < Excelsieur::Import source 'test/files/complete.xlsx' transaction true @@ -132,8 +132,8 @@ describe Excelsior do it 'returns a result object' do result = @import.run - assert_equal Excelsior::Result::Statuses::SUCCEEDED, result.status - assert_equal Excelsior::Report.new(2, 2, 0), result.report + assert_equal Excelsieur::Result::Statuses::SUCCEEDED, result.status + assert_equal Excelsieur::Report.new(2, 2, 0), result.report assert_equal({ missing_column: [], model: [] }, result.errors) end end @@ -158,8 +158,8 @@ describe Excelsior do it 'returns a result object' do result = @import.run { |v| v } - assert_equal Excelsior::Result::Statuses::SUCCEEDED, result.status - assert_equal Excelsior::Report.new(2, 2, 0), result.report + assert_equal Excelsieur::Result::Statuses::SUCCEEDED, result.status + assert_equal Excelsieur::Report.new(2, 2, 0), result.report assert_equal({ missing_column: [], model: [] }, result.errors) end end @@ -180,7 +180,7 @@ describe Excelsior do it 'returns the model validation errors' do import = UserImport.new('test/files/missing-first-name.xlsx').tap(&:run) assert import.errors[:model].any? - assert_equal import.errors[:model], [Excelsior::Error.new(3, ["First name can't be blank"])] + assert_equal import.errors[:model], [Excelsieur::Error.new(3, ["First name can't be blank"])] end end diff --git a/test/test_helper.rb b/test/test_helper.rb index ec37b64678d8f6df583bb72c155c290b4b83db9c..2aadaffcc09c0ffb7a27166bcd072f10be449778 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true $LOAD_PATH.unshift File.expand_path('../lib', __dir__) -require 'excelsior' +require 'excelsieur' require 'active_record' require 'minitest/autorun'