olsen 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. data/.gitignore +1 -0
  2. data/CHANGELOG +2 -0
  3. data/Gemfile.lock +2 -2
  4. data/Rakefile +5 -0
  5. data/lib/olsen.rb +165 -27
  6. data/lib/olsen/primer_plugins/ERBOutput.plugin.rb +32 -0
  7. data/lib/olsen/primer_plugins/Filter.plugin.rb +30 -0
  8. data/lib/olsen/primer_plugins/PDFINI.plugin.rb +77 -0
  9. data/lib/olsen/version.rb +1 -1
  10. data/test/olsen_framework_test/jobs/outputtest_filter.job +2 -0
  11. data/test/olsen_framework_test/jobs/outputtest_ltx.job +0 -0
  12. data/test/olsen_framework_test/jobs/outputtest_ltx2pdf.job +0 -0
  13. data/test/olsen_framework_test/jobs/outputtest_pdf.job +2 -0
  14. data/test/olsen_framework_test/jobs/outputtest_simple.job +2 -0
  15. data/test/olsen_framework_test/jobs/outputtest_txt.job +0 -0
  16. data/test/olsen_framework_test/primers/filters/filterstub.filter.rb +0 -0
  17. data/test/olsen_framework_test/primers/filters/testfilter1.filter.rb +3 -0
  18. data/test/olsen_framework_test/primers/filters/testfilter2.filter.rb +3 -0
  19. data/test/olsen_framework_test/primers/output/market-areas.tex.erb +0 -0
  20. data/test/olsen_framework_test/primers/output/outputtest.tex.erb +0 -0
  21. data/test/olsen_framework_test/primers/output/outputtest_filter.txt.erb +4 -0
  22. data/test/olsen_framework_test/primers/output/outputtest_pdf.pdf.ini +6 -0
  23. data/test/olsen_framework_test/primers/output/outputtest_pdf.tex.erb +4 -0
  24. data/test/olsen_framework_test/primers/output/outputtest_simple.txt.erb +2 -0
  25. data/test/olsen_framework_test/primers/output/outputtext_minimal.tex.erb +4 -0
  26. data/test/olsen_framework_test/primers/output/outputtext_minimal.tex2pdf +1 -0
  27. data/test/olsen_framework_test/primers/output/outputtext_tex.tex.erb +4 -0
  28. data/test/olsen_framework_test/primers/testdata.ini +3 -0
  29. data/test/tc_framework_outputtest.rb +0 -0
  30. data/test/tc_outputpdf.rb +39 -0
  31. data/test/tc_outputsimple.rb +49 -0
  32. metadata +29 -4
data/.gitignore CHANGED
@@ -1,2 +1,3 @@
1
1
  *~
2
+ *.gem
2
3
 
data/CHANGELOG CHANGED
@@ -0,0 +1,2 @@
1
+ [0.0.4] initial public release...working in a lot of ways, but no docs
2
+
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- olsen (0.0.01)
4
+ olsen (0.0.3)
5
5
  sadie
6
6
 
7
7
  GEM
@@ -14,7 +14,7 @@ GEM
14
14
  deprecated (= 2.0.1)
15
15
  deprecated (2.0.1)
16
16
  mysql (2.8.1)
17
- sadie (0.0.12)
17
+ sadie (0.0.34)
18
18
  dbd-mysql
19
19
  dbi
20
20
  mysql
data/Rakefile CHANGED
@@ -3,6 +3,11 @@ require "bundler/gem_tasks"
3
3
  require 'rake'
4
4
  require 'rdoc/task'
5
5
 
6
+ task :test do
7
+ ruby "test/tc_outputsimple.rb"
8
+ ruby "test/tc_outputpdf.rb"
9
+ end
10
+
6
11
  task :deploy => 'inc_version' do
7
12
  version = current_olsen_version
8
13
  sh "git push"
data/lib/olsen.rb CHANGED
@@ -1,44 +1,182 @@
1
+ require 'pp'
2
+
3
+ def O( key, params=nil )
4
+
5
+ instance = Sadie::getCurrentSadieInstance
6
+
7
+ if ! defined? instance
8
+ puts "err: getCurrentSadieInstance returned nil"
9
+ return nil
10
+ end
11
+
12
+ if defined? params
13
+ if params.respond_to? "has_key?"
14
+ if params.has_key? :filter
15
+ # puts "got filter!!!"
16
+ filter = params[:filter]
17
+ if filter.respond_to? "each"
18
+ ret = Olsen::filter instance.get( key ), filter
19
+ return ret
20
+ else
21
+ ret = Olsen::filter instance.get( key ), [filter]
22
+ return ret
23
+ end
24
+ end
25
+ end
26
+ end
27
+ # puts "O(#{key}): NO PARAMS?"
28
+ instance.get( key )
29
+
30
+ end
31
+
1
32
  class Olsen
2
- def self.process( job )
33
+
34
+ def self.filter( value, filters )
35
+
36
+ # puts "filters: #{filters}"
37
+
38
+ # validate filters
39
+ defined? filters \
40
+ or return value
41
+ filters.respond_to? "each" \
42
+ or return value
43
+
44
+ instance = Sadie::getCurrentSadieInstance
45
+
46
+ #pp(instance)
47
+
48
+ fhnd = "filter.#{filters[0]}"
49
+ f = instance.get fhnd
50
+
51
+ # puts "f(#{fhnd}): #{f}"
52
+
53
+ if filters.length > 1
54
+ rem = filters[1..(filters.length-1)]
55
+ ret = f.call value
56
+ ret = Olsen.filter f.call(ret), rem
57
+ return ret
58
+ else
59
+ ret = f.call value
60
+ return ret
61
+ end
62
+ end
63
+
64
+ def self.registerFilter( name, &block )
65
+ instance = Sadie::getCurrentSadieInstance
66
+ instance.set "filter.#{name}", block
67
+ # if ! defined? @@filters
68
+ # @@filters = { name => block }
69
+ # else
70
+ # @@filters[name] = block
71
+ # end
72
+ end
73
+
74
+ def self.initSadie( params )
75
+ sadieparams = {
76
+ "sadie.primer_plugins_dirpath" => "lib/olsen/primer_plugins",
77
+ "sadie.primers_dirpath" => "primers"
78
+ }
79
+
80
+ # if session and output dirs not defined, create temp dirs and use them
81
+ if ! sadieparams.has_key? "sadie.sessions_dirpath"
82
+ Dir.mktmpdir("olsen_tmp_sess") do | dir |
83
+ sadieparams["sadie.sessions_dirpath"] = dir
84
+ end
85
+ end
86
+ if ! sadieparams.has_key? "olsen.output_dirpath"
87
+ Dir.mktmpdir("olsen_output") do | dir |
88
+ sadieparams["olsen.output_dirpath"] = dir
89
+ end
90
+ end
91
+
92
+ # process params
93
+ if defined? params
94
+ if params.respond_to? "each"
95
+ params.each do |k,v|
96
+ sadieparams[k] = v
97
+ end
98
+ end
99
+ end
100
+
101
+ # init sadie
102
+ # puts "init storage!"
103
+ storage = Sadie::getSadieInstance( sadieparams )
104
+
105
+
106
+ end
107
+
108
+ def self.process( job, storage )
3
109
 
4
110
  if ( ! defined?( job ) )
5
111
  puts "job parameter was undefined. must be hash or file. returning nil."
6
112
  return nil
7
113
  end
8
114
 
9
- if job.respond_to?( "each" )
10
-
11
- return self._processHash( job )
12
-
13
- elsif File.exists? job
14
-
15
- j = Sadie::iniFileToHash( job )
16
-
17
- if ( ! defined?( j ) )
18
- puts "Unable to interpret job ini file: #{job}. returning nil."
115
+ if ! job.respond_to? "each"
116
+ if File.exists? job
117
+ job = Sadie::iniFileToHash( job )
118
+ else
119
+ puts "job param was non-hash and was not a path to valid job file"
19
120
  return nil
20
121
  end
21
-
22
- return self._processHash( j )
23
-
24
122
  end
25
123
 
26
- puts "Unintelligible job param. returning nil."
27
- return nil
28
- end
29
-
30
- def self._processHash( job )
31
- # init sadie
32
- storage = Sadie::getSadieInstance( job["parameters"] )
33
-
34
- # set sadie-specific keys
35
- job["sadie"].each do |key,value|
36
- storage.set "sadie.#{key}", value
124
+ # validate job
125
+ if ! job.has_key? "output"
126
+ puts "job has no output definition"
127
+ return nil
37
128
  end
38
129
 
130
+ # sadieparams = {
131
+ # "sadie.primer_plugins_dirpath" => "lib/olsen/primer_plugins",
132
+ # "sadie.primers_dirpath" => "primers"
133
+ # }
134
+
135
+ # set keys from job
136
+ # [ "sadie", "parameters","olsen" ].each do |ptype|
137
+ # if job.has_key? ptype
138
+ # job[ptype].each do |key,value|
139
+ # if ptype.eql? "sadie"
140
+ # sadieparams["sadie.#{key}"] = value
141
+ # else
142
+ # sadieparams["#{key}"] = value
143
+ # end
144
+ # end
145
+ # end
146
+ # end
147
+
148
+
149
+
150
+
39
151
  # call output triggers
40
- job.["output"].each do |x,type|
41
- storage.output type
152
+ job["output"].each do |x,type|
153
+ outputkey = "output.#{type}"
154
+ puts "processing output trigger: #{outputkey}"
155
+ storage.output outputkey
156
+ end
157
+
158
+ if block_given?
159
+ yield storage
42
160
  end
161
+
162
+ end
163
+
164
+ def registerFilter( filter, &block )
165
+ defined? @filters \
166
+ or @filters = Hash.new
167
+
168
+ @filters["filter"] = block
43
169
  end
170
+
171
+ def filter( filter_name, value )
172
+ defined? @filters \
173
+ or return nil
174
+ @filters.respond_to? "has_key?" \
175
+ or return nil
176
+ @filters.has_key? filter_name \
177
+ or return nil
178
+ f = @filters[filter_name]
179
+ f.call value
180
+ end
181
+
44
182
  end
@@ -0,0 +1,32 @@
1
+ require 'erb'
2
+ Sadie::registerPrimerPlugin( { "match" => /\.erb$/,
3
+ "accepts-block" => false,
4
+ "prime-on-init" => false } ) do |sadie, key_prefix, primer_file_filepath|
5
+
6
+
7
+ # determine output filename
8
+ output_filename = File.basename( primer_file_filepath )
9
+ output_filename = output_filename.gsub(/\.erb$/,"")
10
+
11
+ # determine sadie key
12
+ sadie_key = "#{key_prefix}.#{output_filename}"
13
+ #puts "priming with primer file: #{primer_file_filepath}, sadie key: #{sadie_key}"
14
+
15
+ Sadie::prime( { "provides" => [ sadie_key ] } ) do |sadie|
16
+
17
+ output_contents = Sadie::templatedFileToString( primer_file_filepath )
18
+
19
+ # write results to output file
20
+ output_dirpath = sadie.get "olsen.output_dirpath"
21
+ output_filepath = File.join(output_dirpath,output_filename)
22
+ File.open( output_filepath, "w" ) do |f|
23
+ f.print output_contents
24
+ # puts "contents: #{output_contents}"
25
+ end
26
+
27
+ # set a sadie key/val for output file path
28
+ puts "setting erb output key: #{sadie_key} to value: #{output_filepath}"
29
+ sadie.set( sadie_key, output_filepath )
30
+ end
31
+
32
+ end
@@ -0,0 +1,30 @@
1
+ Sadie::registerPrimerPlugin( { "match" => /\.filter.rb$/,
2
+ "accepts-block" => false,
3
+ "prime-on-init" => false } ) do |sadie, key_prefix, primer_file_filepath|
4
+
5
+ # basically, just loading a ruby file
6
+ load primer_file_filepath
7
+
8
+ # primer_file_basename = File.basename( primer_file_filepath )
9
+ # output_filename = primer_file_basename
10
+ # output_filename.gsub(/\.erb$/,"")
11
+ # sadie_key = key_prefix + '.' + primer_file_basename
12
+ # sadie_key = sadie_key.gsub(/^\./,"")
13
+ # sadie_key = sadie_key.gsub(/\.erb$/,"")
14
+ # Sadie::prime( { "provides" => sadie_key } ) do |sadie|
15
+ #
16
+ # # run erb
17
+ # input_contents = File.open(primer_file_filepath, 'r') { |f| f.read }
18
+ # template = ERB.new( input_contents )
19
+ # output_contents = template.result
20
+ #
21
+ # # write results to output file
22
+ # output_dirpath = sadie.get "olsen.output_dirpath"
23
+ # File.open( File.join(output_dirpath,output_filename), "w" ) do |f|
24
+ # f.print output_contents
25
+ # end
26
+ #
27
+ # # set output filepath to sadie_key
28
+ # sadie.set( sadie_key, File.join(output_dirpath,output_filename) )
29
+ # end
30
+ end
@@ -0,0 +1,77 @@
1
+ require 'pp'
2
+ Sadie::registerPrimerPlugin( { "match" => /\.pdf\.ini$/,
3
+ "accepts-block" => false,
4
+ "prime-on-init" => true } ) do |sadie, key_prefix, primer_file_filepath|
5
+
6
+ puts "processing pdf ini file: #{primer_file_filepath}"
7
+
8
+ ini_file_basename = File.basename primer_file_filepath
9
+ ini_file_root = ini_file_basename.gsub( /\.pdf\.ini$/, "" )
10
+
11
+ output_filename = "#{ini_file_root}.pdf"
12
+
13
+ sadie_key = "output.#{output_filename}"
14
+
15
+ if pdfparams = Sadie::iniFileToHash( primer_file_filepath )
16
+
17
+ # validate pdfparams
18
+ if ! defined? pdfparams
19
+ puts "iniFileToHash returned nil...aborting"
20
+ return nil
21
+ end
22
+
23
+ if ! pdfparams.respond_to? "has_key?"
24
+ puts "initFileToHash returned unusable param set...aborting"
25
+ return nil
26
+ end
27
+
28
+ if pdfparams.has_key? "pdf"
29
+ secpdf = pdfparams["pdf"]
30
+ if secpdf.respond_to? "has_key?"
31
+ if secpdf.has_key? "type"
32
+ case secpdf["type"]
33
+ when "latexmk"
34
+
35
+ # determine bin to latexmk
36
+ cmd = "/usr/bin/latexmk"
37
+ template = "output.#{ini_file_root}.tex"
38
+ if pdfparams.has_key? "latexmk"
39
+
40
+ latexmkparams = pdfparams["latexmk"]
41
+ if latexmkparams.has_key? "path_to_latexmk"
42
+ if "#{latexmkparams['path_to_latexmk']}" !~ /^\s*$/
43
+ cmd = latexmkparams['path_to_latexmk']
44
+ end
45
+ end
46
+ if latexmkparams.has_key? "template"
47
+ if "#{latexmkparams['template']}" !~ /^\s*$/
48
+ template = latexmkparams['template']
49
+ end
50
+ end
51
+ end
52
+
53
+ Sadie::prime( { "provides" => [ sadie_key ] } ) do |sadie|
54
+
55
+ # gen output
56
+ template_filepath = sadie.get( template )
57
+ dirpath = File.dirname template_filepath
58
+ puts "dirpath: #{dirpath}"
59
+ filepath = File.basename template_filepath
60
+ system "cd #{dirpath}; #{cmd} -f -pdf #{filepath};"
61
+
62
+ outpath = File.join dirpath, output_filename
63
+
64
+ puts "setting s[#{sadie_key}]: #{outpath}"
65
+ sadie.set sadie_key, outpath
66
+
67
+ end
68
+ else
69
+ puts "unsupported pdf type: #{secpdf['type']}"
70
+ return nil
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ end
data/lib/olsen/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class Olsen
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -0,0 +1,2 @@
1
+ [output]
2
+ o1 = outputtest_filter.txt
File without changes
@@ -0,0 +1,2 @@
1
+ [output]
2
+ o1=outputtest_pdf.pdf
@@ -0,0 +1,2 @@
1
+ [output]
2
+ o1=outputtest_simple.txt
File without changes
@@ -0,0 +1,3 @@
1
+ Olsen::registerFilter( "testfilter1" ) do |input|
2
+ output = "[" + input + "]"
3
+ end
@@ -0,0 +1,3 @@
1
+ Olsen::registerFilter( "testfilter2" ) do |input|
2
+ output = "{" + input + "}"
3
+ end
@@ -0,0 +1,4 @@
1
+ item1: <%= S("testdata.group.item1") %>
2
+ item2: <%= O("testdata.group.item2") %>
3
+ item3: <%= O("testdata.group.item1", :filter => "testfilter1" ) %>
4
+ item4: <%= O("testdata.group.item2", :filter => ["testfilter1","testfilter2"] ) %>
@@ -0,0 +1,6 @@
1
+ [pdf]
2
+ type = latexmk
3
+
4
+ [latexmk]
5
+ path_to_latexmk = /usr/bin/latexmk
6
+ template = output.outputtest_pdf.tex
@@ -0,0 +1,4 @@
1
+ \documentclass{article}
2
+ \begin{document}
3
+ A Minimal LaTeX Document
4
+ \end{document}
@@ -0,0 +1,2 @@
1
+ item1: <%= S("testdata.group.item1") %>
2
+ item2: <%= S("testdata.group.item2") %>
@@ -0,0 +1,4 @@
1
+ \documentclass{article}
2
+ \begin{document}
3
+ A Minimal LaTeX Document
4
+ \end{document}
@@ -0,0 +1,4 @@
1
+ \documentclass{article}
2
+ \begin{document}
3
+ A Minimal LaTeX Document
4
+ \end{document}
@@ -0,0 +1,3 @@
1
+ [group]
2
+ item1 = "item txt 1"
3
+ item2 = item txt 2
File without changes
@@ -0,0 +1,39 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
2
+ $:.unshift ENV["GEM_HOME"]
3
+
4
+ require "test/unit"
5
+ require "sadie"
6
+ require "olsen"
7
+ require "tmpdir"
8
+
9
+ class TestPDFOutput < Test::Unit::TestCase
10
+ def test_simple
11
+ ofdir = "test/olsen_framework_test"
12
+
13
+ Dir.mktmpdir("olsen_testdir") do | dir |
14
+
15
+ # create temp output and sessdirs
16
+ outputdir = File.join( dir, "output" )
17
+ Dir.mkdir outputdir
18
+ sessdir = File.join( dir, "session" )
19
+ Dir.mkdir sessdir
20
+
21
+ s = Olsen::initSadie( "sadie.primers_dirpath" => "#{ofdir}/primers",
22
+ "sadie.sessions_dirpath" => sessdir,
23
+ "olsen.output_dirpath" => outputdir )
24
+
25
+ # --------------- test pdf ---------------
26
+ # process some olsenry
27
+ output = nil
28
+ Olsen::process( File.join( ofdir, "jobs/outputtest_pdf.job" ),s ) do |sadie|
29
+
30
+
31
+ # test
32
+ output_path = sadie.get( "output.outputtest_pdf.pdf" )
33
+ output = File.exists? output_path
34
+ end
35
+ assert_equal( output, true )
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,49 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
2
+ $:.unshift ENV["GEM_HOME"]
3
+
4
+ require "test/unit"
5
+ require "sadie"
6
+ require "olsen"
7
+ require "tmpdir"
8
+
9
+ class TestSimpleOutput < Test::Unit::TestCase
10
+ def test_simple
11
+ ofdir = "test/olsen_framework_test"
12
+
13
+ Dir.mktmpdir("olsen_testdir") do | dir |
14
+
15
+ # create temp output and sessdirs
16
+ outputdir = File.join( dir, "output" )
17
+ Dir.mkdir outputdir
18
+ sessdir = File.join( dir, "session" )
19
+ Dir.mkdir sessdir
20
+
21
+ s = Olsen::initSadie( "sadie.primers_dirpath" => "#{ofdir}/primers",
22
+ "sadie.sessions_dirpath" => sessdir,
23
+ "olsen.output_dirpath" => outputdir )
24
+
25
+ # --------------- test 1: simple ---------------
26
+ # process some olsenry
27
+ output = nil
28
+ Olsen::process( File.join( ofdir, "jobs/outputtest_simple.job" ),s ) do |sadie|
29
+
30
+
31
+ # test
32
+ output_path = sadie.get( "output.outputtest_simple.txt" )
33
+ output = File.open( output_path, "r" ) { |f| f.read }
34
+ end
35
+ assert_equal( output, "item1: item txt 1\nitem2: item txt 2\n" )
36
+
37
+ # --------------- test 2: filter ---------------
38
+ # process some olsenry
39
+ Olsen::process( File.join( ofdir, "jobs/outputtest_filter.job" ),s ) do |sadie|
40
+
41
+ # test
42
+ output_path = sadie.get( "output.outputtest_filter.txt" )
43
+ output = File.open( output_path, "r" ) { |f| f.read }
44
+ end
45
+ assert_equal( output, "item1: item txt 1\nitem2: item txt 2\nitem3: [item txt 1]\nitem4: {[[item txt 2]]}\n" )
46
+
47
+ end
48
+ end
49
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: olsen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-04-13 00:00:00.000000000Z
12
+ date: 2012-04-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sadie
16
- requirement: &20084920 !ruby/object:Gem::Requirement
16
+ requirement: &11029180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,7 +21,7 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *20084920
24
+ version_requirements: *11029180
25
25
  description: Olsen is a reporting tool intended to be used with Sadie.
26
26
  email:
27
27
  - fred@landmetrics.com
@@ -42,9 +42,34 @@ files:
42
42
  - TODO
43
43
  - bin/olsen
44
44
  - lib/olsen.rb
45
+ - lib/olsen/primer_plugins/ERBOutput.plugin.rb
46
+ - lib/olsen/primer_plugins/Filter.plugin.rb
47
+ - lib/olsen/primer_plugins/PDFINI.plugin.rb
45
48
  - lib/olsen/version.rb
46
49
  - olsen-0.0.2.gem
47
50
  - olsen.gemspec
51
+ - test/olsen_framework_test/jobs/outputtest_filter.job
52
+ - test/olsen_framework_test/jobs/outputtest_ltx.job
53
+ - test/olsen_framework_test/jobs/outputtest_ltx2pdf.job
54
+ - test/olsen_framework_test/jobs/outputtest_pdf.job
55
+ - test/olsen_framework_test/jobs/outputtest_simple.job
56
+ - test/olsen_framework_test/jobs/outputtest_txt.job
57
+ - test/olsen_framework_test/primers/filters/filterstub.filter.rb
58
+ - test/olsen_framework_test/primers/filters/testfilter1.filter.rb
59
+ - test/olsen_framework_test/primers/filters/testfilter2.filter.rb
60
+ - test/olsen_framework_test/primers/output/market-areas.tex.erb
61
+ - test/olsen_framework_test/primers/output/outputtest.tex.erb
62
+ - test/olsen_framework_test/primers/output/outputtest_filter.txt.erb
63
+ - test/olsen_framework_test/primers/output/outputtest_pdf.pdf.ini
64
+ - test/olsen_framework_test/primers/output/outputtest_pdf.tex.erb
65
+ - test/olsen_framework_test/primers/output/outputtest_simple.txt.erb
66
+ - test/olsen_framework_test/primers/output/outputtext_minimal.tex.erb
67
+ - test/olsen_framework_test/primers/output/outputtext_minimal.tex2pdf
68
+ - test/olsen_framework_test/primers/output/outputtext_tex.tex.erb
69
+ - test/olsen_framework_test/primers/testdata.ini
70
+ - test/tc_framework_outputtest.rb
71
+ - test/tc_outputpdf.rb
72
+ - test/tc_outputsimple.rb
48
73
  homepage: http://www.landmetrics.com/Olsen
49
74
  licenses: []
50
75
  post_install_message: