thinreports-template-cli 0.2.0 → 0.3.0

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