olsen 0.0.3 → 0.0.4

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.
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: