thinreports-template-cli 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: afffc8182c660702d271faf5ab029bd370679441
4
- data.tar.gz: a60ffa8861f7757be372e58968eb7d95842e1ed5
3
+ metadata.gz: c01446ac5f5aca364c004e034ed55fd81dcf15c5
4
+ data.tar.gz: 4776236fe60edc99f03dd792270c69d29bc7004b
5
5
  SHA512:
6
- metadata.gz: ef8d79172c2451e6191ceda3ef4d488398c7360349d93d1550b93bf6a2535dff2fdaae816fed0f06275967d1738f8d0c67684d3bfe1b38130394497ce7dcce95
7
- data.tar.gz: a00ffc2ea727f54676c8fd294a3005cf3c0cae57e06dd9aa009cf8ae9d5bf022f0558f5689dcc8abb52b9d2b84e705dccfdba5b34cb414e15867997412f9a7f7
6
+ metadata.gz: b07b21e31de9a97fa89f190faeb3cbe49330f3168d145b847b26864e4b1c49eeea2a20028341cd77e8f3fa62b54027f5769faf33edb649facd6dfc43d5e88b20
7
+ data.tar.gz: 70448ce9bf1fa3152fe4b7c9ac6992e353103a4a422d87540392359ca5c28725e5790378eecd9144196fa0032eb9680e19a5b56083e18ed8d05a11d38f66667c
data/README.md CHANGED
@@ -1,64 +1,63 @@
1
- # thinreports-template-cli
1
+ [![Version](https://img.shields.io/gem/v/thinreports-template-cli.svg)](https://rubygems.org/gems/thinreports-template-cli)
2
2
 
3
- ## Installation
3
+ # Thinreports Templete CLI
4
4
 
5
- Add this line to your application's Gemfile:
5
+ ## Installation
6
6
 
7
- ```ruby
8
- gem 'thinreports-template-cli'
7
+ ```sh
8
+ $ gem install thinreports-template-cli
9
9
  ```
10
10
 
11
- And then execute:
11
+ ## Usage
12
12
 
13
- $ bundle
13
+ Thinreports Templete CLI is able to receive parameters of text blocks in a TLF (thinreports layout format) file as options of the command line program.
14
14
 
15
- Or install it yourself as:
15
+ The command supports the following formats:
16
16
 
17
- $ gem install thinreports-template-cli
17
+ * table
18
+ * csv
19
+ * json
20
+ * pdf
18
21
 
19
- ## Usage
22
+ ```sh
23
+ $ thinreports-template-cli sample.tlf --help
24
+ thinreports-template-cli tlf [options]
20
25
 
21
- ```bash
22
- $ thinreports-template-cli help
23
- Commands:
24
- thinreports-template-cli config --layout=LAYOUT # Create config file for .tlf
25
- thinreports-template-cli generate --layout=LAYOUT # Generate a PDF file from .tlf to stdout
26
- thinreports-template-cli help [COMMAND] # Describe available commands or one specific command
27
- thinreports-template-cli info --layout=LAYOUT # Display information for .tlf
28
- ```
26
+ Basic Options
27
+ --format=table|csv|json|pdf
29
28
 
30
- ```bash
31
- $ thinreports-template-cli info --layout=~/template.tlf
29
+ Thinreports Layout File Options
30
+ --date=[DATE] This is a sample date.
31
+ --subject=[SUBJECT] This is a sample subject.
32
+ --name=[NAME] This is a sample name.
33
+ --number=[NUMBER] This is a sample number.
34
+ --date_jp=[DATE_JP] This is a sample date for Japanese era name.
32
35
  ```
33
36
 
34
- ```bash
35
- $ thinreports-template-cli config --layout=~/template.tlf > config.yml
36
- $ cat ~/config.yml
37
- ---
38
- name: Taro Tottori
39
- item: Toripy Plush Toy
40
- price: 2980
41
- ```
37
+ ### Datetime Support
42
38
 
43
- ```bash
44
- $ thinreports-template-cli generate --layout=~/template.tlf --config=~/config.yml > example.pdf
45
- ```
39
+ * A option value for a text block of a datetime format is parsed by [DateTime#parse](https://ruby-doc.org/stdlib/libdoc/date/rdoc/DateTime.html#method-c-parse).
40
+ * A text block of a datetime format is rendered by the strftime format of [DateTime#strftime](https://ruby-doc.org/stdlib/libdoc/date/rdoc/DateTime.html#method-i-strftime) and [era_ja](https://rubygems.org/gems/era_ja).
41
+ * If a text block of a datetime format does not have a command line option or a default value of a TLF file, this text block will be rendered with [Datetime#now](https://ruby-doc.org/stdlib/libdoc/date/rdoc/DateTime.html#method-c-now).
46
42
 
47
- ```bash
48
- $ thinreports-template-cli generate --layout=~/template.tlf --config=~/config.yml | lpr -P ApeosPort_V_C3375__aa_bb_cc_
49
- ```
50
-
51
- ## Development
43
+ ## Examples
52
44
 
53
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
45
+ Output to a PDF file.
54
46
 
55
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
56
-
57
- ## Contributing
47
+ ```bash
48
+ $ thinreports-template-cli sample.tlf --name="Your name" --date=2017-04-01" --format=pdf > sample.pdf
49
+ ```
58
50
 
59
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/thinreports-template-cli.
51
+ Output to a printer via the lpr command.
60
52
 
53
+ ```bash
54
+ $ thinreports-template-cli sample.tlf --name="Your name" --date=2017-04-01" --format=pdf | lpr -P ApeosPort_V_C3375__aa_bb_cc_
55
+ ```
61
56
 
62
57
  ## License
63
58
 
64
59
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
60
+
61
+ ## Author
62
+
63
+ Masayuki Higashino
data/Rakefile CHANGED
@@ -7,4 +7,4 @@ Rake::TestTask.new(:test) do |t|
7
7
  t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
- task :default => :test
10
+ task default: :test
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'thinreports/template/cli'
4
-
5
- Thinreports::Template::CLI::Commands.start(ARGV)
3
+ require 'thinreports/template-cli/cli'
4
+ Thinreports::TemplateCLI::CLI.start(ARGV)
@@ -0,0 +1,44 @@
1
+ require 'optparse'
2
+ require 'thinreports'
3
+ require 'thinreports/template-cli/version'
4
+ require 'thinreports/template-cli/thinreports'
5
+ require 'thinreports/template-cli/views'
6
+
7
+ module Thinreports
8
+ module TemplateCLI
9
+ class CLI
10
+
11
+ def self.start(argv)
12
+
13
+ layout = nil
14
+ format = nil
15
+ params = {}
16
+
17
+ options = OptionParser.new
18
+ options.version = Thinreports::TemplateCLI::VERSION
19
+ options.banner = "#{options.program_name} tlf [options]"
20
+ options.separator('')
21
+ options.separator('Basic Options')
22
+ options.on('--format=table|csv|json|pdf') { |value|
23
+ format = value
24
+ }
25
+
26
+ layout = argv.find{ |arg| FileTest.file?(arg) }
27
+ if layout
28
+ report = Thinreports::Report.new(layout:layout)
29
+ options.separator('')
30
+ options.separator('Thinreports Layout File Options')
31
+ report.textblocks.each do |shape|
32
+ options.on("--#{shape.id}=[#{shape.id.upcase}]", shape.attributes['description']) { |value|
33
+ params[shape.id] = value
34
+ }
35
+ end
36
+ end
37
+
38
+ options.parse!(argv)
39
+ puts Views.new(layout, format, params).render
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,31 @@
1
+ require 'date'
2
+ require 'era_ja'
3
+
4
+ module Thinreports
5
+ module TemplateCLI
6
+ class DateTime
7
+
8
+ private_class_method :new
9
+ def initialize(datetime)
10
+ @datetime = datetime
11
+ end
12
+
13
+ def self.now
14
+ new(::DateTime.now)
15
+ end
16
+
17
+ def self.parse(*args)
18
+ new(::DateTime.parse(*args))
19
+ end
20
+
21
+ def strftime(format)
22
+ @datetime.to_era(format)
23
+ end
24
+
25
+ def to_s
26
+ @datetime.to_s
27
+ end
28
+
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,29 @@
1
+ require 'thinreports'
2
+
3
+ class Thinreports::Report::Base
4
+
5
+ def textblocks
6
+ default_layout.format.shapes.values.select{ |s|
7
+ s.type == Thinreports::Core::Shape::TextBlock::TYPE_NAME
8
+ }
9
+ end
10
+
11
+ end
12
+
13
+ class Thinreports::Core::Shape::TextBlock::Format
14
+
15
+ def format_value
16
+ value = ''
17
+ if format_datetime_format
18
+ value << format_datetime_format
19
+ end
20
+ if format_number_delimiter
21
+ value << "delimiter=[#{format_number_delimiter}]"
22
+ end
23
+ if format_number_precision
24
+ value << "/precision=[#{format_number_precision}]"
25
+ end
26
+ return value
27
+ end
28
+
29
+ end
@@ -0,0 +1,5 @@
1
+ module Thinreports
2
+ module TemplateCLI
3
+ VERSION = '0.3.0'.freeze
4
+ end
5
+ end
@@ -0,0 +1,103 @@
1
+ require 'tty-table'
2
+ require 'csv'
3
+ require 'json'
4
+ require 'thinreports'
5
+ require 'thinreports/template-cli/datetime'
6
+
7
+ module Thinreports
8
+ module TemplateCLI
9
+ class Views
10
+
11
+ def initialize(layout, format, params)
12
+ @layout = layout
13
+ @format = format
14
+ @params = params
15
+ end
16
+
17
+ def render
18
+ case @format
19
+ when 'table'; to_table
20
+ when 'csv' ; to_csv
21
+ when 'json' ; to_json
22
+ when 'pdf' ; to_pdf
23
+ else to_table
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ def to_table
30
+ table = TTY::Table.new(header:header, rows:rows)
31
+ TTY::Table::Renderer::ASCII.new(table).render
32
+ end
33
+
34
+ def to_csv
35
+ CSV.generate do |csv|
36
+ csv << header
37
+ rows.each do |row|
38
+ csv << row.values
39
+ end
40
+ end
41
+ end
42
+
43
+ def to_json
44
+ rows.to_json
45
+ end
46
+
47
+ def to_pdf
48
+ report.generate
49
+ end
50
+
51
+ def header
52
+ @header ||= %w(id ref_id display multiple default_value option_value real_value fmt_base fmt_type fmt_value desc)
53
+ end
54
+
55
+ def rows
56
+ unless @rows
57
+ @rows = []
58
+ report.textblocks&.each do |shape|
59
+ @rows << {
60
+ 'id' => shape.id,
61
+ 'ref_id' => shape.ref_id,
62
+ 'display' => shape.display?,
63
+ 'multiple' => shape.multiple?,
64
+ 'default_value' => shape.value,
65
+ 'option_value' => @params[shape.id].to_s,
66
+ 'real_value' => report.page.manager.shapes[shape.id.to_sym]&.internal&.real_value,
67
+ 'fmt_base' => shape.format_base,
68
+ 'fmt_type' => shape.format_type,
69
+ 'fmt_value' => shape.format_value,
70
+ 'desc' => shape.attributes['description']
71
+ }
72
+ end
73
+ end
74
+ return @rows
75
+ end
76
+
77
+ def report
78
+ unless @report
79
+ @report = Thinreports::Report.new(layout:@layout)
80
+ @report.start_new_page
81
+ @report.default_layout.format.shapes.values.each do |shape|
82
+ case shape.type
83
+ when Thinreports::Core::Shape::TextBlock::TYPE_NAME
84
+ if shape.has_format?
85
+ case shape.format_type
86
+ when 'datetime'
87
+ if @params[shape.id]
88
+ @params[shape.id] = DateTime.parse(@params[shape.id])
89
+ else
90
+ @params[shape.id] = shape.value.empty? ? DateTime.now : DateTime.parse(shape.value)
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
96
+ @report.page.values(@params)
97
+ end
98
+ return @report
99
+ end
100
+
101
+ end
102
+ end
103
+ end
@@ -0,0 +1,2 @@
1
+ require 'thinreports/template-cli/version'
2
+ require 'thinreports/template-cli/cli'
@@ -1,31 +1,28 @@
1
- # coding: utf-8
2
1
  lib = File.expand_path('../lib', __FILE__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'thinreports/template/cli/version'
3
+ require 'thinreports/template-cli/version'
5
4
 
6
5
  Gem::Specification.new do |spec|
7
6
  spec.name = 'thinreports-template-cli'
8
- spec.version = Thinreports::Template::CLI::VERSION
9
- spec.authors = ['mh61503891']
7
+ spec.version = Thinreports::TemplateCLI::VERSION
8
+ spec.authors = ['Masayuki Higashino']
10
9
  spec.email = ['msyk@hgsn.info']
11
-
12
- spec.summary = %q{A command line tool to generate a PDF file from YAML config file and .tlf}
13
- spec.description = %q{A command line tool to generate a PDF file from YAML config file and .tlf}
10
+ spec.summary = %q{A command line tool to generate a PDF file from TLF with command line options and YAML config file.}
11
+ spec.description = spec.summary
14
12
  spec.homepage = 'https://github.com/mh61503891/thinreports-template-cli'
15
13
  spec.license = 'MIT'
16
-
17
14
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
15
  spec.bindir = 'exe'
19
16
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
17
  spec.require_paths = ['lib']
21
-
22
- spec.add_dependency 'thinreports', '0.9.1'
23
- spec.add_dependency 'thor', '0.19.1'
24
- spec.add_dependency 'wareki', '0.1.2'
25
- spec.add_dependency 'kosi', '1.0.0'
26
- spec.add_development_dependency 'bundler', '~> 1.12'
27
- spec.add_development_dependency 'rake', '~> 10.0'
18
+ spec.required_ruby_version = '>= 2.3.0'
19
+ spec.add_dependency 'thinreports', '0.10.0'
20
+ spec.add_dependency 'era_ja', '0.5.2'
21
+ spec.add_dependency 'tty-table', '0.8.0'
22
+ spec.add_development_dependency 'bundler', '~> 1.15'
23
+ spec.add_development_dependency 'rake', '~> 12.0'
28
24
  spec.add_development_dependency 'minitest', '~> 5.0'
29
- spec.add_development_dependency 'awesome_print', '~> 1.7.0'
30
- spec.add_development_dependency 'pry', '~> 0.10.4'
25
+ spec.add_development_dependency 'minitest-reporters', '~> 1.0'
26
+ spec.add_development_dependency 'awesome_print', '~> 1.0'
27
+ spec.add_development_dependency 'pry', '~> 0.10'
31
28
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: thinreports-template-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
- - mh61503891
7
+ - Masayuki Higashino
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-09-19 00:00:00.000000000 Z
11
+ date: 2017-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thinreports
@@ -16,128 +16,128 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.9.1
19
+ version: 0.10.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.9.1
26
+ version: 0.10.0
27
27
  - !ruby/object:Gem::Dependency
28
- name: thor
28
+ name: era_ja
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 0.19.1
33
+ version: 0.5.2
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 0.19.1
40
+ version: 0.5.2
41
41
  - !ruby/object:Gem::Dependency
42
- name: wareki
42
+ name: tty-table
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: 0.1.2
47
+ version: 0.8.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: 0.1.2
54
+ version: 0.8.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: kosi
56
+ name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '='
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0
62
- type: :runtime
61
+ version: '1.15'
62
+ type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '='
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 1.0.0
68
+ version: '1.15'
69
69
  - !ruby/object:Gem::Dependency
70
- name: bundler
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.12'
75
+ version: '12.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.12'
82
+ version: '12.0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rake
84
+ name: minitest
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '10.0'
89
+ version: '5.0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '10.0'
96
+ version: '5.0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: minitest
98
+ name: minitest-reporters
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '5.0'
103
+ version: '1.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '5.0'
110
+ version: '1.0'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: awesome_print
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.7.0
117
+ version: '1.0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 1.7.0
124
+ version: '1.0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: pry
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: 0.10.4
131
+ version: '0.10'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: 0.10.4
139
- description: A command line tool to generate a PDF file from YAML config file and
140
- .tlf
138
+ version: '0.10'
139
+ description: A command line tool to generate a PDF file from TLF with command line
140
+ options and YAML config file.
141
141
  email:
142
142
  - msyk@hgsn.info
143
143
  executables:
@@ -154,10 +154,12 @@ files:
154
154
  - bin/console
155
155
  - bin/setup
156
156
  - exe/thinreports-template-cli
157
- - lib/thinreports/template/cli.rb
158
- - lib/thinreports/template/cli/commands.rb
159
- - lib/thinreports/template/cli/executor.rb
160
- - lib/thinreports/template/cli/version.rb
157
+ - lib/thinreports/template-cli.rb
158
+ - lib/thinreports/template-cli/cli.rb
159
+ - lib/thinreports/template-cli/datetime.rb
160
+ - lib/thinreports/template-cli/thinreports.rb
161
+ - lib/thinreports/template-cli/version.rb
162
+ - lib/thinreports/template-cli/views.rb
161
163
  - thinreports-template-cli.gemspec
162
164
  homepage: https://github.com/mh61503891/thinreports-template-cli
163
165
  licenses:
@@ -171,7 +173,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
171
173
  requirements:
172
174
  - - ">="
173
175
  - !ruby/object:Gem::Version
174
- version: '0'
176
+ version: 2.3.0
175
177
  required_rubygems_version: !ruby/object:Gem::Requirement
176
178
  requirements:
177
179
  - - ">="
@@ -179,8 +181,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
181
  version: '0'
180
182
  requirements: []
181
183
  rubyforge_project:
182
- rubygems_version: 2.6.6
184
+ rubygems_version: 2.5.2
183
185
  signing_key:
184
186
  specification_version: 4
185
- summary: A command line tool to generate a PDF file from YAML config file and .tlf
187
+ summary: A command line tool to generate a PDF file from TLF with command line options
188
+ and YAML config file.
186
189
  test_files: []
@@ -1,37 +0,0 @@
1
- require 'thor'
2
- require 'thinreports/template/cli/executor'
3
-
4
- module Thinreports; module Template; module CLI; class Commands < Thor
5
-
6
- desc 'generate', 'Generate a PDF file from .tlf to stdout'
7
- option :layout, required:true
8
- option :config
9
- def generate
10
- print Thinreports::Template::CLI::Executor.new(get_report, get_config).generate
11
- end
12
-
13
- desc 'info', 'Display information for .tlf'
14
- option :layout, required:true
15
- option :config
16
- def info
17
- print Thinreports::Template::CLI::Executor.new(get_report, get_config).info
18
- end
19
-
20
- desc 'config', 'Create config file for .tlf'
21
- option :layout, required:true
22
- def config
23
- print Thinreports::Template::CLI::Executor.new(get_report).config
24
- end
25
-
26
- no_commands {
27
-
28
- def get_report
29
- return Thinreports::Report.new(layout:File.expand_path(options.layout))
30
- end
31
-
32
- def get_config
33
- options.config && YAML.load_file(File.expand_path(options.config)) || {}
34
- end
35
-
36
- }
37
- end; end; end; end
@@ -1,52 +0,0 @@
1
- require 'thinreports'
2
- require 'yaml'
3
- require 'wareki'
4
- require 'kosi'
5
-
6
- module Thinreports; module Template; module CLI; class Executor
7
-
8
- def initialize(report, config=nil)
9
- @report = report
10
- @config = config
11
- end
12
-
13
- def generate
14
- @report.start_new_page
15
- @report.default_layout.format.shapes.values.each do |shape|
16
- case shape.type
17
- when Thinreports::Core::Shape::TextBlock::TYPE_NAME
18
- if shape.has_format? && shape.format_type == 'datetime'
19
- @config[shape.id] ||= Date.today
20
- end
21
- else
22
- end
23
- end
24
- @report.page.values(@config)
25
- @report.generate
26
- end
27
-
28
- def info
29
- kosi = Kosi::Table.new({
30
- align: Kosi::Align::TYPE::LEFT,
31
- header: %w(b:id b:type b:display? bf:value tb:has_format? tb:format_type)
32
- })
33
- return kosi.render(@report.default_layout.format.shapes.values.map { |s|
34
- record = [s.id, s.type, s.display?, s.value]
35
- case s.type
36
- when Thinreports::Core::Shape::TextBlock::TYPE_NAME
37
- record += [s.has_format?, s.format_type]
38
- else
39
- record += [nil, nil]
40
- end
41
- })
42
- end
43
-
44
- def config
45
- @config = {}
46
- @report.default_layout.format.shapes.values.map do |shape|
47
- @config[shape.id] = shape.value
48
- end
49
- YAML.dump(@config)
50
- end
51
-
52
- end; end; end; end
@@ -1,3 +0,0 @@
1
- module Thinreports; module Template; module CLI
2
- VERSION = '0.2.0'
3
- end; end; end
@@ -1,3 +0,0 @@
1
- require 'thinreports/template/cli/version'
2
- require 'thinreports/template/cli/commands'
3
- require 'thinreports/template/cli/executor'