iif 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +2 -0
  3. data/.gitignore +22 -0
  4. data/.rspec +3 -0
  5. data/.travis.yml +7 -0
  6. data/CHANGELOG.md +48 -0
  7. data/Gemfile +4 -0
  8. data/LICENSE.txt +22 -0
  9. data/README.md +189 -0
  10. data/Rakefile +6 -0
  11. data/bin/rake +16 -0
  12. data/config.ru +9 -0
  13. data/lib/riif.rb +6 -0
  14. data/lib/riif/dsl/accnt.rb +15 -0
  15. data/lib/riif/dsl/base.rb +51 -0
  16. data/lib/riif/dsl/bud.rb +14 -0
  17. data/lib/riif/dsl/ctype.rb +9 -0
  18. data/lib/riif/dsl/cust.rb +51 -0
  19. data/lib/riif/dsl/emp.rb +31 -0
  20. data/lib/riif/dsl/invitem.rb +32 -0
  21. data/lib/riif/dsl/invmemo.rb +9 -0
  22. data/lib/riif/dsl/klass.rb +9 -0
  23. data/lib/riif/dsl/othername.rb +25 -0
  24. data/lib/riif/dsl/paymeth.rb +9 -0
  25. data/lib/riif/dsl/shipmeth.rb +10 -0
  26. data/lib/riif/dsl/spl.rb +29 -0
  27. data/lib/riif/dsl/terms.rb +13 -0
  28. data/lib/riif/dsl/timeact.rb +17 -0
  29. data/lib/riif/dsl/timerhdr.rb +14 -0
  30. data/lib/riif/dsl/trns.rb +56 -0
  31. data/lib/riif/dsl/vend.rb +39 -0
  32. data/lib/riif/dsl/vtype.rb +9 -0
  33. data/lib/riif/iif.rb +60 -0
  34. data/lib/riif/rails/renderer.rb +15 -0
  35. data/lib/riif/rails/template_handler.rb +20 -0
  36. data/lib/riif/railtie.rb +17 -0
  37. data/lib/riif/version.rb +3 -0
  38. data/riif.gemspec +29 -0
  39. data/spec/controllers/invoices_controller_spec.rb +26 -0
  40. data/spec/fixtures/accnt.iif +2 -0
  41. data/spec/fixtures/bud.iif +2 -0
  42. data/spec/fixtures/ctype.iif +2 -0
  43. data/spec/fixtures/cust.iif +2 -0
  44. data/spec/fixtures/emp.iif +2 -0
  45. data/spec/fixtures/invitem.iif +2 -0
  46. data/spec/fixtures/invmemo.iif +2 -0
  47. data/spec/fixtures/klass.iif +2 -0
  48. data/spec/fixtures/mixed.iif +13 -0
  49. data/spec/fixtures/othername.iif +2 -0
  50. data/spec/fixtures/paymeth.iif +2 -0
  51. data/spec/fixtures/rails/invoices.iif +6 -0
  52. data/spec/fixtures/shipmeth.iif +2 -0
  53. data/spec/fixtures/terms.iif +2 -0
  54. data/spec/fixtures/timeact.iif +4 -0
  55. data/spec/fixtures/trns.iif +7 -0
  56. data/spec/fixtures/vend.iif +2 -0
  57. data/spec/fixtures/vtype.iif +2 -0
  58. data/spec/internal/app/controllers/invoices_controller.rb +10 -0
  59. data/spec/internal/app/views/invoices/index.iif.riif +27 -0
  60. data/spec/internal/config/database.yml +3 -0
  61. data/spec/internal/config/routes.rb +3 -0
  62. data/spec/internal/db/schema.rb +3 -0
  63. data/spec/internal/log/.gitignore +1 -0
  64. data/spec/internal/public/favicon.ico +0 -0
  65. data/spec/riif/dsl/accnt_spec.rb +22 -0
  66. data/spec/riif/dsl/bud_spec.rb +28 -0
  67. data/spec/riif/dsl/ctype_spec.rb +19 -0
  68. data/spec/riif/dsl/cust_spec.rb +20 -0
  69. data/spec/riif/dsl/emp_spec.rb +24 -0
  70. data/spec/riif/dsl/invitem_spec.rb +21 -0
  71. data/spec/riif/dsl/invmemo_spec.rb +19 -0
  72. data/spec/riif/dsl/klass_spec.rb +20 -0
  73. data/spec/riif/dsl/othername_spec.rb +23 -0
  74. data/spec/riif/dsl/paymeth_spec.rb +19 -0
  75. data/spec/riif/dsl/shipmeth_spec.rb +19 -0
  76. data/spec/riif/dsl/terms_spec.rb +23 -0
  77. data/spec/riif/dsl/timeact_spec.rb +35 -0
  78. data/spec/riif/dsl/trns_spec.rb +54 -0
  79. data/spec/riif/dsl/vend_spec.rb +21 -0
  80. data/spec/riif/dsl/vtype_spec.rb +19 -0
  81. data/spec/riif/iif_spec.rb +61 -0
  82. data/spec/spec_helper.rb +21 -0
  83. metadata +295 -0
@@ -0,0 +1,20 @@
1
+ module Riif
2
+ module Rails
3
+ class TemplateHandler
4
+ cattr_accessor :default_format
5
+ self.default_format = Mime[:iif]
6
+
7
+ def self.call(template)
8
+ <<-RUBY
9
+ iif = ::Riif::IIF.new
10
+
11
+ #{template.source}
12
+
13
+ iif.output
14
+ RUBY
15
+ end
16
+
17
+ ActionView::Template.register_template_handler :riif, self
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ require 'rails'
2
+
3
+ module Riif
4
+ class Railtie < ::Rails::Railtie
5
+ initializer 'riif' do
6
+ ::ActiveSupport.on_load(:action_view) do
7
+ unless ::Mime::Type.lookup_by_extension(:iif)
8
+ ::Mime::Type.register "application/qbooks", :iif,
9
+ %w(application/qbookspro text/iif)
10
+ end
11
+
12
+ require 'riif/rails/template_handler'
13
+ require 'riif/rails/renderer'
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ module Riif
2
+ VERSION = "0.6.1"
3
+ end
@@ -0,0 +1,29 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'riif/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "iif"
8
+ gem.version = Riif::VERSION
9
+ gem.authors = ["Jun Lin"]
10
+ gem.email = ["linjunpop@gmail.com"]
11
+ gem.description = "Clone of riif gem with latest updates"
12
+ gem.summary = "As soon as riif > 0.6.0 is released, stop using this"
13
+ gem.homepage = "https://github.com/linjunpop/riif"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency 'pry'
21
+ gem.add_development_dependency 'rails', '~> 5.0'
22
+ gem.add_development_dependency 'rspec', '~> 3.5'
23
+ gem.add_development_dependency 'rspec-rails', '~> 3.5'
24
+ gem.add_development_dependency 'rspec-its', '~> 1.2'
25
+ gem.add_development_dependency 'rails-controller-testing', '~> 1.0'
26
+ gem.add_development_dependency 'combustion', '~> 0.3.1'
27
+ gem.add_development_dependency 'fuubar'
28
+ gem.add_development_dependency 'coveralls'
29
+ end
@@ -0,0 +1,26 @@
1
+ require 'spec_helper'
2
+
3
+ describe InvoicesController do
4
+ render_views
5
+
6
+ let(:expected) { File.read('spec/fixtures/rails/invoices.iif') }
7
+
8
+ describe '#index' do
9
+
10
+ before do
11
+ get :index, format: 'iif'
12
+ end
13
+
14
+ it 'respond with rendered iif' do
15
+ response.body.should eq expected
16
+ end
17
+
18
+ it 'respond with QuickBooks content type' do
19
+ response.header['Content-Type'].should eq 'application/qbooks'
20
+ end
21
+
22
+ it 'respond with filename: batman.iif' do
23
+ response.header['Content-Disposition'].should =~ /filename="batman\.iif"/
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,2 @@
1
+ !ACCNT NAME ACCNTTYPE OBAMOUNT DESC SCD ACCNUM EXTRA
2
+ ACCNT Jun Lin AR 47
@@ -0,0 +1,2 @@
1
+ !BUD ACCNT PERIOD AMOUNT STARTDATE CLASS CUSTOMER
2
+ BUD Accounts Receivable MONTH foo 3/14/12
@@ -0,0 +1,2 @@
1
+ !CTYPE NAME
2
+ CTYPE Bar
@@ -0,0 +1,2 @@
1
+ !CUST NAME BADDR1 BADDR2 BADDR3 BADDR4 BADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 PHONE1 PHONE2 FAXNUM CONT1 CONT2 CTYPE TERMS TAXABLE LIMIT RESALENUM REP TAXITEM NOTEPAD SALUTATION COMPANYNAME FIRSTNAME MIDINIT LASTNAME CUSTFLD1 CUSTFLD2 CUSTFLD3 CUSTFLD4 CUSTFLD5 CUSTFLD6 CUSTFLD7 JOBDESC JOBTYPE JOBSTATUS JOBSTART JOBPROJEND JOBEND NOTE
2
+ CUST Jun Lin 12312323242
@@ -0,0 +1,2 @@
1
+ !EMP NAME INIT ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 SSNO PHONE1 PHONE2 NOTEPAD FIRSTNAME MIDINIT LASTNAME SALUTATION CUSTFLD1 CUSTFLD2 CUSTFLD3 CUSTFLD4 CUSTFLD5 CUSTFLD6 CUSTFLD7 NOTE
2
+ EMP Alfred Master Backer 37 Doctor
@@ -0,0 +1,2 @@
1
+ !INVITEM NAME INVITEMTYPE DESC PURCHASEDESC ACCNT ASSETACCNT COGSACCNT PRICE COST TAXABLE PAYMETH TAXVEND TAXDIST TOPRINT PREFVEND REORDERPOINT EXTRA CUSTFLD1 CUSTFLD2 CUSTFLD3 CUSTFLD4 CUSTFLD5 DEP_TYPE ISPASSEDTHRU
2
+ INVITEM invitem 1 INVENTORY 1
@@ -0,0 +1,2 @@
1
+ !INVMEMO NAME
2
+ INVMEMO invmemo 1
@@ -0,0 +1,2 @@
1
+ !CLASS NAME
2
+ CLASS Foo
@@ -0,0 +1,13 @@
1
+ !CUST NAME BADDR1 BADDR2 BADDR3 BADDR4 BADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 PHONE1 PHONE2 FAXNUM CONT1 CONT2 CTYPE TERMS TAXABLE LIMIT RESALENUM REP TAXITEM NOTEPAD SALUTATION COMPANYNAME FIRSTNAME MIDINIT LASTNAME CUSTFLD1 CUSTFLD2 CUSTFLD3 CUSTFLD4 CUSTFLD5 CUSTFLD6 CUSTFLD7 JOBDESC JOBTYPE JOBSTATUS JOBSTART JOBPROJEND JOBEND NOTE
2
+ CUST Batman Amoy
3
+ CUST Joker Amoy
4
+ !BUD ACCNT PERIOD AMOUNT STARTDATE CLASS CUSTOMER
5
+ BUD Accounts Receivable MONTH foo 3/14/12
6
+ BUD Accounts Payable MONTH 123 3/15/12
7
+ !TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR TOPRINT ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 DUEDATE TERMS PAID PAYMETH SHIPDATE REP PONUM INVTITLE INVMEMO
8
+ !SPL SPLID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR QNTY PRICE INVITEM PAYMETH TAXABLE REIMBEXP EXTRA
9
+ !ENDTRNS
10
+ TRNS foo
11
+ SPL joker
12
+ SPL foobar
13
+ ENDTRNS
@@ -0,0 +1,2 @@
1
+ !OTHERNAME NAME BADDR1 BADDR2 BADDR3 BADDR4 BADDR5 PHONE1 PHONE2 FAXNUM CONT1 NOTEPAD SALUTATION COMPANYNAME FIRSTNAME MIDINIT LASTNAME NOTE
2
+ OTHERNAME Alfred Backer 37 123
@@ -0,0 +1,2 @@
1
+ !PAYMETH NAME
2
+ PAYMETH paymeth 1
@@ -0,0 +1,6 @@
1
+ !TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR TOPRINT ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 DUEDATE TERMS PAID PAYMETH SHIPDATE REP PONUM INVTITLE INVMEMO
2
+ !SPL SPLID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR QNTY PRICE INVITEM PAYMETH TAXABLE REIMBEXP EXTRA
3
+ !ENDTRNS
4
+ TRNS 12345 BILL 3/14/1984 Accounts Payable Bender -300 12345 N
5
+ SPL 1 BILL 3/14/1984 Payable CMA 300 foo 3 150 Base Rate
6
+ ENDTRNS
@@ -0,0 +1,2 @@
1
+ !SHIPMETH NAME
2
+ SHIPMETH shipmeth 1
@@ -0,0 +1,2 @@
1
+ !TERMS NAME DUEDAYS DISCPER DISCDAYS TERMSTYPE
2
+ TERMS terms 1 10 0.3 1 0
@@ -0,0 +1,4 @@
1
+ !TIMERHDR VER REL COMPANYNAME IMPORTEDBEFORE FROMTIMER COMPANYCREATETIME
2
+ TIMERHDR 8 0 Import Test Company N Y 1208544781
3
+ !TIMEACT DATE JOB EMP ITEM PITEM DURATION PROJ NOTE BILLINGSTATUS
4
+ TIMEACT 06/21/97 job 1 Jun item 1 13:40 klass 1 0
@@ -0,0 +1,7 @@
1
+ !TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR TOPRINT ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 SADDR1 SADDR2 SADDR3 SADDR4 SADDR5 DUEDATE TERMS PAID PAYMETH SHIPDATE REP PONUM INVTITLE INVMEMO
2
+ !SPL SPLID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR QNTY PRICE INVITEM PAYMETH TAXABLE REIMBEXP EXTRA
3
+ !ENDTRNS
4
+ TRNS 123 INVOICE 8/31/1988 Accounts Receivable Customer 20 1 N N Baker Customer Watson Recipient BOB
5
+ SPL 777 INVOICE 8/31/1988 Income Account -20 N -2 10 Sales Item N
6
+ SPL 888
7
+ ENDTRNS
@@ -0,0 +1,2 @@
1
+ !VEND NAME PRINTAS ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 VTYPE CONT1 PHONE1 PHONE2 FAXNUM NOTE TAXID LIMIT TERMS NOTEPAD SALUTATION COMPANYNAME FIRSTNAME MIDINIT LASTNAME CUSTFLD1 CUSTFLD2 CUSTFLD3 CUSTFLD4 CUSTFLD5 CUSTFLD6 CUSTFLD7 _1099 NOTE
2
+ VEND Jun Lin 12312323242 Y
@@ -0,0 +1,2 @@
1
+ !VTYPE NAME
2
+ VTYPE vtype 1
@@ -0,0 +1,10 @@
1
+ class InvoicesController < ActionController::Base
2
+ def index
3
+ respond_to do |format|
4
+ format.iif {
5
+ render iif: render_to_string(locals: {awesome: "Bender"}),
6
+ filename: 'batman'
7
+ }
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,27 @@
1
+ iif.trns do
2
+ row do
3
+ trnsid 12345
4
+ trnstype 'BILL'
5
+ date '3/14/1984'
6
+ accnt 'Accounts Payable'
7
+ name awesome
8
+ amount -300
9
+ docnum 12345
10
+ clear 'N'
11
+ end
12
+
13
+ spl do
14
+ row do
15
+ splid 001
16
+ trnstype 'BILL'
17
+ date '3/14/1984'
18
+ accnt 'Payable'
19
+ invitem 'Base Rate'
20
+ name 'CMA'
21
+ amount 300
22
+ memo "foo"
23
+ qnty 3
24
+ price 150
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ test:
2
+ adapter: sqlite3
3
+ database: db/combustion_test.sqlite
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ resources :invoices
3
+ end
@@ -0,0 +1,3 @@
1
+ ActiveRecord::Schema.define do
2
+ #
3
+ end
@@ -0,0 +1 @@
1
+ *.log
File without changes
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riif::DSL::Accnt do
4
+
5
+ let(:expected) { File.read('spec/fixtures/accnt.iif') }
6
+
7
+ let(:accnt) {
8
+ Riif::IIF.new do
9
+ accnt do
10
+ row do
11
+ name 'Jun Lin'
12
+ accnttype 'AR'
13
+ accnum 47
14
+ end
15
+ end
16
+ end
17
+ }
18
+
19
+ subject { accnt }
20
+
21
+ its(:output) { should eq expected }
22
+ end
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+ class Invoice
3
+ attr_accessor :name
4
+ def initialize(n)
5
+ @name = n
6
+ end
7
+ end
8
+ describe Riif::DSL::Bud do
9
+
10
+ let(:expected) { File.read('spec/fixtures/bud.iif') }
11
+
12
+ let(:bud) {
13
+ Riif::IIF.new do
14
+ bud do
15
+ row do
16
+ accnt 'Accounts Receivable'
17
+ period 'MONTH'
18
+ amount 'foo'
19
+ startdate '3/14/12'
20
+ end
21
+ end
22
+ end
23
+ }
24
+
25
+ subject { bud }
26
+
27
+ its(:output) { should eq expected }
28
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riif::DSL::Ctype do
4
+ let(:expected) { File.read('spec/fixtures/ctype.iif') }
5
+
6
+ let(:ctype) {
7
+ Riif::IIF.new do
8
+ ctype do
9
+ row do
10
+ name 'Bar'
11
+ end
12
+ end
13
+ end
14
+ }
15
+
16
+ subject { ctype }
17
+
18
+ its(:output) { should eq expected }
19
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riif::DSL::Cust do
4
+ let(:expected) { File.read('spec/fixtures/cust.iif') }
5
+
6
+ let(:cust) {
7
+ Riif::IIF.new do
8
+ cust do
9
+ row do
10
+ name 'Jun Lin'
11
+ phone1 '12312323242'
12
+ end
13
+ end
14
+ end
15
+ }
16
+
17
+ subject { cust }
18
+
19
+ its(:output) { should eq expected }
20
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riif::DSL::Emp do
4
+
5
+ let(:expected) { File.read('spec/fixtures/emp.iif') }
6
+
7
+ let(:emp) {
8
+ Riif::IIF.new do
9
+ emp do
10
+ row do
11
+ name 'Alfred'
12
+ init 'Master'
13
+ addr1 'Backer'
14
+ addr2 '37'
15
+ salutation 'Doctor'
16
+ end
17
+ end
18
+ end
19
+ }
20
+
21
+ subject { emp }
22
+
23
+ its(:output) { should eq expected }
24
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riif::DSL::Invitem do
4
+ let(:expected) { File.read('spec/fixtures/invitem.iif') }
5
+
6
+ let(:invitem) {
7
+ Riif::IIF.new do
8
+ invitem do
9
+ row do
10
+ name 'invitem 1'
11
+ invitemtype 'INVENTORY'
12
+ dep_type 1
13
+ end
14
+ end
15
+ end
16
+ }
17
+
18
+ subject { invitem }
19
+
20
+ its(:output) { should eq expected }
21
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riif::DSL::Invmemo do
4
+ let(:expected) { File.read('spec/fixtures/invmemo.iif') }
5
+
6
+ let(:invmemo) {
7
+ Riif::IIF.new do
8
+ invmemo do
9
+ row do
10
+ name 'invmemo 1'
11
+ end
12
+ end
13
+ end
14
+ }
15
+
16
+ subject { invmemo }
17
+
18
+ its(:output) { should eq expected }
19
+ end
@@ -0,0 +1,20 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riif::DSL::Klass do
4
+
5
+ let(:expected) { File.read('spec/fixtures/klass.iif') }
6
+
7
+ let(:klass) {
8
+ Riif::IIF.new do
9
+ klass do
10
+ row do
11
+ name 'Foo'
12
+ end
13
+ end
14
+ end
15
+ }
16
+
17
+ subject { klass }
18
+
19
+ its(:output) { should eq expected }
20
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Riif::DSL::Othername do
4
+
5
+ let(:expected) { File.read('spec/fixtures/othername.iif') }
6
+
7
+ let(:othername) {
8
+ Riif::IIF.new do
9
+ othername do
10
+ row do
11
+ name 'Alfred'
12
+ baddr1 'Backer'
13
+ baddr2 '37'
14
+ faxnum '123'
15
+ end
16
+ end
17
+ end
18
+ }
19
+
20
+ subject { othername }
21
+
22
+ its(:output) { should eq expected }
23
+ end