riif 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/CHANGELOG.md +21 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +157 -0
- data/Rakefile +6 -0
- data/lib/riif.rb +6 -0
- data/lib/riif/dsl/accnt.rb +15 -0
- data/lib/riif/dsl/base.rb +51 -0
- data/lib/riif/dsl/bud.rb +14 -0
- data/lib/riif/dsl/ctype.rb +9 -0
- data/lib/riif/dsl/cust.rb +51 -0
- data/lib/riif/dsl/emp.rb +31 -0
- data/lib/riif/dsl/invitem.rb +32 -0
- data/lib/riif/dsl/invmemo.rb +9 -0
- data/lib/riif/dsl/klass.rb +9 -0
- data/lib/riif/dsl/othername.rb +25 -0
- data/lib/riif/dsl/paymeth.rb +9 -0
- data/lib/riif/dsl/shipmeth.rb +10 -0
- data/lib/riif/dsl/spl.rb +29 -0
- data/lib/riif/dsl/terms.rb +13 -0
- data/lib/riif/dsl/timeact.rb +17 -0
- data/lib/riif/dsl/trns.rb +46 -0
- data/lib/riif/dsl/vend.rb +39 -0
- data/lib/riif/dsl/vtype.rb +9 -0
- data/lib/riif/iif.rb +38 -0
- data/lib/riif/rails/template_handler.rb +19 -0
- data/lib/riif/railtie.rb +16 -0
- data/lib/riif/version.rb +3 -0
- data/riif.gemspec +23 -0
- data/spec/fixtures/accnt.iif +2 -0
- data/spec/fixtures/bud.iif +2 -0
- data/spec/fixtures/ctype.iif +2 -0
- data/spec/fixtures/cust.iif +2 -0
- data/spec/fixtures/emp.iif +2 -0
- data/spec/fixtures/invitem.iif +2 -0
- data/spec/fixtures/invmemo.iif +2 -0
- data/spec/fixtures/klass.iif +2 -0
- data/spec/fixtures/othername.iif +2 -0
- data/spec/fixtures/paymeth.iif +2 -0
- data/spec/fixtures/shipmeth.iif +2 -0
- data/spec/fixtures/terms.iif +2 -0
- data/spec/fixtures/timeact.iif +2 -0
- data/spec/fixtures/trns.iif +7 -0
- data/spec/fixtures/vend.iif +2 -0
- data/spec/fixtures/vtype.iif +2 -0
- data/spec/riif/dsl/accnt_spec.rb +20 -0
- data/spec/riif/dsl/bud_spec.rb +21 -0
- data/spec/riif/dsl/ctype_spec.rb +17 -0
- data/spec/riif/dsl/cust_spec.rb +18 -0
- data/spec/riif/dsl/emp_spec.rb +23 -0
- data/spec/riif/dsl/invitem_spec.rb +19 -0
- data/spec/riif/dsl/invmemo_spec.rb +17 -0
- data/spec/riif/dsl/klass_spec.rb +18 -0
- data/spec/riif/dsl/othername_spec.rb +21 -0
- data/spec/riif/dsl/paymeth_spec.rb +17 -0
- data/spec/riif/dsl/shipmeth_spec.rb +17 -0
- data/spec/riif/dsl/terms_spec.rb +21 -0
- data/spec/riif/dsl/timeact_spec.rb +24 -0
- data/spec/riif/dsl/trns_spec.rb +49 -0
- data/spec/riif/dsl/vend_spec.rb +19 -0
- data/spec/riif/dsl/vtype_spec.rb +17 -0
- data/spec/spec_helper.rb +21 -0
- metadata +191 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
module Riif::DSL
|
2
|
+
class Othername < Base
|
3
|
+
HEADER_COLUMNS = [
|
4
|
+
:name,
|
5
|
+
:baddr1,
|
6
|
+
:baddr2,
|
7
|
+
:baddr3,
|
8
|
+
:baddr4,
|
9
|
+
:baddr5,
|
10
|
+
:phone1,
|
11
|
+
:phone2,
|
12
|
+
:faxnum,
|
13
|
+
:cont1,
|
14
|
+
:notepad,
|
15
|
+
:salutation,
|
16
|
+
:companyname,
|
17
|
+
:firstname,
|
18
|
+
:midinit,
|
19
|
+
:lastname,
|
20
|
+
:note
|
21
|
+
]
|
22
|
+
START_COLUMN = 'OTHERNAME'
|
23
|
+
END_COLUMN = ''
|
24
|
+
end
|
25
|
+
end
|
data/lib/riif/dsl/spl.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
module Riif::DSL
|
2
|
+
class Spl < Base
|
3
|
+
HEADER_COLUMNS = [
|
4
|
+
:splid,
|
5
|
+
:trnstype,
|
6
|
+
:date,
|
7
|
+
:accnt,
|
8
|
+
:name,
|
9
|
+
:class,
|
10
|
+
:amount,
|
11
|
+
:docnum,
|
12
|
+
:memo,
|
13
|
+
:clear,
|
14
|
+
:qnty,
|
15
|
+
:price,
|
16
|
+
:invitem,
|
17
|
+
:paymeth,
|
18
|
+
:taxable,
|
19
|
+
:reimbexp,
|
20
|
+
:extra
|
21
|
+
]
|
22
|
+
START_COLUMN = 'SPL'
|
23
|
+
END_COLUMN = ''
|
24
|
+
|
25
|
+
def headers
|
26
|
+
[]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Riif::DSL
|
2
|
+
class Trns < Base
|
3
|
+
HEADER_COLUMNS = [
|
4
|
+
:trnsid,
|
5
|
+
:trnstype,
|
6
|
+
:date,
|
7
|
+
:accnt,
|
8
|
+
:name,
|
9
|
+
:class,
|
10
|
+
:amount,
|
11
|
+
:docnum,
|
12
|
+
:memo,
|
13
|
+
:clear,
|
14
|
+
:toprint,
|
15
|
+
:addr1,
|
16
|
+
:addr2,
|
17
|
+
:addr3,
|
18
|
+
:addr4,
|
19
|
+
:addr5,
|
20
|
+
:duedate,
|
21
|
+
:terms,
|
22
|
+
:paid,
|
23
|
+
:shipdate
|
24
|
+
]
|
25
|
+
START_COLUMN = 'TRNS'
|
26
|
+
END_COLUMN = 'ENDTRNS'
|
27
|
+
|
28
|
+
def headers
|
29
|
+
[
|
30
|
+
["!#{START_COLUMN}"].concat(HEADER_COLUMNS.map(&:upcase)),
|
31
|
+
["!SPL"].concat(Spl::HEADER_COLUMNS.map(&:upcase)),
|
32
|
+
["!#{END_COLUMN}"]
|
33
|
+
]
|
34
|
+
end
|
35
|
+
|
36
|
+
def rows
|
37
|
+
@rows << [END_COLUMN]
|
38
|
+
end
|
39
|
+
|
40
|
+
def spl(&block)
|
41
|
+
Spl.new.build(&block)[:rows].each do |row|
|
42
|
+
@rows << row
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Riif::DSL
|
2
|
+
class Vend < Base
|
3
|
+
HEADER_COLUMNS = [
|
4
|
+
:name,
|
5
|
+
:printas,
|
6
|
+
:addr1,
|
7
|
+
:addr2,
|
8
|
+
:addr3,
|
9
|
+
:addr4,
|
10
|
+
:addr5,
|
11
|
+
:vtype,
|
12
|
+
:cont1,
|
13
|
+
:phone1,
|
14
|
+
:phone2,
|
15
|
+
:faxnum,
|
16
|
+
:note,
|
17
|
+
:taxid,
|
18
|
+
:limit,
|
19
|
+
:terms,
|
20
|
+
:notepad,
|
21
|
+
:salutation,
|
22
|
+
:companyname,
|
23
|
+
:firstname,
|
24
|
+
:midinit,
|
25
|
+
:lastname,
|
26
|
+
:custfld1,
|
27
|
+
:custfld2,
|
28
|
+
:custfld3,
|
29
|
+
:custfld4,
|
30
|
+
:custfld5,
|
31
|
+
:custfld6,
|
32
|
+
:custfld7,
|
33
|
+
:_1099,
|
34
|
+
:note
|
35
|
+
]
|
36
|
+
START_COLUMN = 'VEND'
|
37
|
+
END_COLUMN = ''
|
38
|
+
end
|
39
|
+
end
|
data/lib/riif/iif.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'csv'
|
2
|
+
|
3
|
+
require 'riif/dsl/base'
|
4
|
+
|
5
|
+
require 'riif/dsl/accnt'
|
6
|
+
require 'riif/dsl/bud'
|
7
|
+
require 'riif/dsl/ctype'
|
8
|
+
require 'riif/dsl/cust'
|
9
|
+
require 'riif/dsl/emp'
|
10
|
+
require 'riif/dsl/invitem'
|
11
|
+
require 'riif/dsl/invmemo'
|
12
|
+
require 'riif/dsl/klass'
|
13
|
+
require 'riif/dsl/othername'
|
14
|
+
require 'riif/dsl/paymeth'
|
15
|
+
require 'riif/dsl/shipmeth'
|
16
|
+
require 'riif/dsl/spl'
|
17
|
+
require 'riif/dsl/terms'
|
18
|
+
require 'riif/dsl/timeact'
|
19
|
+
require 'riif/dsl/trns'
|
20
|
+
require 'riif/dsl/vend'
|
21
|
+
require 'riif/dsl/vtype'
|
22
|
+
|
23
|
+
module Riif
|
24
|
+
class IIF
|
25
|
+
def method_missing(method_name, *args, &block)
|
26
|
+
result = eval("::Riif::DSL::#{method_name.capitalize}").new.build(&block)
|
27
|
+
|
28
|
+
CSV.generate(col_sep: "\t") do |tsv|
|
29
|
+
result[:headers].each do |header|
|
30
|
+
tsv << header
|
31
|
+
end
|
32
|
+
result[:rows].each do |row|
|
33
|
+
tsv << row
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,19 @@
|
|
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
|
+
RUBY
|
14
|
+
end
|
15
|
+
|
16
|
+
ActionView::Template.register_template_handler :riif, self
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/riif/railtie.rb
ADDED
@@ -0,0 +1,16 @@
|
|
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
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/riif/version.rb
ADDED
data/riif.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
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 = "riif"
|
8
|
+
gem.version = Riif::VERSION
|
9
|
+
gem.authors = ["Jun Lin"]
|
10
|
+
gem.email = ["linjunpop@gmail.com"]
|
11
|
+
gem.description = "DSL to generate IIF file"
|
12
|
+
gem.summary = "A simple DSL to generate iif file"
|
13
|
+
gem.homepage = ""
|
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 'rspec'
|
22
|
+
gem.add_development_dependency 'awesome_print'
|
23
|
+
end
|
@@ -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,7 @@
|
|
1
|
+
!TRNS TRNSID TRNSTYPE DATE ACCNT NAME CLASS AMOUNT DOCNUM MEMO CLEAR TOPRINT ADDR1 ADDR2 ADDR3 ADDR4 ADDR5 DUEDATE TERMS PAID SHIPDATE
|
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
|
5
|
+
SPL 777 INVOICE 8/31/1988 Income Account -20 N -2 10 Sales Item N
|
6
|
+
SPL 888
|
7
|
+
ENDTRNS
|
@@ -0,0 +1,20 @@
|
|
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.accnt do
|
9
|
+
row do
|
10
|
+
name 'Jun Lin'
|
11
|
+
accnttype 'AR'
|
12
|
+
accnum 47
|
13
|
+
end
|
14
|
+
end
|
15
|
+
}
|
16
|
+
|
17
|
+
subject { accnt }
|
18
|
+
|
19
|
+
it { should eq expected }
|
20
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Riif::DSL::Bud do
|
4
|
+
|
5
|
+
let(:expected) { File.read('spec/fixtures/bud.iif') }
|
6
|
+
|
7
|
+
let(:bud) {
|
8
|
+
Riif::IIF.new.bud do
|
9
|
+
row do
|
10
|
+
accnt 'Accounts Receivable'
|
11
|
+
period 'MONTH'
|
12
|
+
amount 'foo'
|
13
|
+
startdate '3/14/12'
|
14
|
+
end
|
15
|
+
end
|
16
|
+
}
|
17
|
+
|
18
|
+
subject { bud }
|
19
|
+
|
20
|
+
it { should eq expected }
|
21
|
+
end
|