thinreports 0.10.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (191) hide show
  1. checksums.yaml +5 -5
  2. data/.github/CONTRIBUTING.md +2 -2
  3. data/.github/workflows/test.yml +51 -0
  4. data/.gitignore +1 -0
  5. data/CHANGELOG.md +49 -0
  6. data/Dockerfile +12 -0
  7. data/Gemfile +2 -1
  8. data/README.md +46 -21
  9. data/Rakefile +13 -29
  10. data/gemfiles/prawn-2.2.gemfile +5 -0
  11. data/gemfiles/prawn-2.3.gemfile +5 -0
  12. data/gemfiles/prawn-2.4.gemfile +5 -0
  13. data/lib/thinreports.rb +5 -0
  14. data/lib/thinreports/core/shape.rb +4 -3
  15. data/lib/thinreports/core/shape/base/interface.rb +0 -1
  16. data/lib/thinreports/core/shape/basic/format.rb +5 -0
  17. data/lib/thinreports/core/shape/image_block.rb +1 -1
  18. data/lib/thinreports/core/shape/list.rb +1 -1
  19. data/lib/thinreports/core/shape/list/manager.rb +1 -4
  20. data/lib/thinreports/core/shape/list/page.rb +2 -5
  21. data/lib/thinreports/core/shape/manager/internal.rb +0 -1
  22. data/lib/thinreports/core/shape/page_number.rb +1 -1
  23. data/lib/thinreports/core/shape/page_number/internal.rb +0 -1
  24. data/lib/thinreports/core/shape/stack_view.rb +17 -0
  25. data/lib/thinreports/core/shape/stack_view/format.rb +27 -0
  26. data/lib/thinreports/core/shape/stack_view/interface.rb +17 -0
  27. data/lib/thinreports/core/shape/stack_view/internal.rb +22 -0
  28. data/lib/thinreports/core/shape/stack_view/row_format.rb +39 -0
  29. data/lib/thinreports/core/shape/style/basic.rb +4 -1
  30. data/lib/thinreports/core/shape/text.rb +1 -1
  31. data/lib/thinreports/core/shape/text_block.rb +1 -1
  32. data/lib/thinreports/core/shape/text_block/formatter/number.rb +21 -9
  33. data/lib/thinreports/core/shape/text_block/internal.rb +0 -2
  34. data/lib/thinreports/core/utils.rb +6 -3
  35. data/lib/thinreports/generate.rb +11 -0
  36. data/lib/thinreports/generator/pdf/document/draw_shape.rb +31 -11
  37. data/lib/thinreports/generator/pdf/document/draw_template_items.rb +1 -2
  38. data/lib/thinreports/generator/pdf/document/font.rb +16 -10
  39. data/lib/thinreports/generator/pdf/document/graphics/attributes.rb +0 -1
  40. data/lib/thinreports/generator/pdf/document/graphics/basic.rb +0 -1
  41. data/lib/thinreports/generator/pdf/document/graphics/image.rb +19 -1
  42. data/lib/thinreports/generator/pdf/document/graphics/text.rb +10 -8
  43. data/lib/thinreports/generator/pdf/document/page.rb +13 -4
  44. data/lib/thinreports/generator/pdf/drawer/list.rb +0 -1
  45. data/lib/thinreports/generator/pdf/prawn_ext/calc_image_dimensions.rb +1 -3
  46. data/lib/thinreports/generator/pdf/prawn_ext/width_of.rb +7 -7
  47. data/lib/thinreports/layout/base.rb +2 -4
  48. data/lib/thinreports/layout/format.rb +0 -1
  49. data/lib/thinreports/layout/legacy_schema.rb +2 -6
  50. data/lib/thinreports/layout/version.rb +1 -1
  51. data/lib/thinreports/report/internal.rb +4 -4
  52. data/lib/thinreports/report/page.rb +2 -7
  53. data/lib/thinreports/section_report/build.rb +32 -0
  54. data/lib/thinreports/section_report/builder/item_builder.rb +49 -0
  55. data/lib/thinreports/section_report/builder/report_builder.rb +82 -0
  56. data/lib/thinreports/section_report/builder/report_data.rb +13 -0
  57. data/lib/thinreports/section_report/builder/stack_view_builder.rb +55 -0
  58. data/lib/thinreports/section_report/builder/stack_view_data.rb +11 -0
  59. data/lib/thinreports/section_report/generate.rb +26 -0
  60. data/lib/thinreports/section_report/pdf/render.rb +23 -0
  61. data/lib/thinreports/section_report/pdf/renderer/draw_item.rb +68 -0
  62. data/lib/thinreports/section_report/pdf/renderer/group_renderer.rb +57 -0
  63. data/lib/thinreports/section_report/pdf/renderer/headers_renderer.rb +24 -0
  64. data/lib/thinreports/section_report/pdf/renderer/section_height.rb +100 -0
  65. data/lib/thinreports/section_report/pdf/renderer/section_renderer.rb +39 -0
  66. data/lib/thinreports/section_report/pdf/renderer/stack_view_renderer.rb +55 -0
  67. data/lib/thinreports/section_report/pdf/renderer/stack_view_row_renderer.rb +38 -0
  68. data/lib/thinreports/section_report/schema/loader.rb +28 -0
  69. data/lib/thinreports/section_report/schema/parser.rb +52 -0
  70. data/lib/thinreports/section_report/schema/report.rb +30 -0
  71. data/lib/thinreports/section_report/schema/section.rb +47 -0
  72. data/lib/thinreports/version.rb +1 -1
  73. data/thinreports.gemspec +11 -11
  74. metadata +48 -164
  75. data/.rubocop.yml +0 -41
  76. data/.travis.yml +0 -17
  77. data/examples/character_spacing/character_spacing.rb +0 -8
  78. data/examples/character_spacing/character_spacing.tlf +0 -293
  79. data/examples/dynamic_image/dynamic_image.rb +0 -31
  80. data/examples/dynamic_image/dynamic_image.tlf +0 -661
  81. data/examples/dynamic_image/img200x100.png +0 -0
  82. data/examples/dynamic_image/img50x50.png +0 -0
  83. data/examples/dynamic_style/dynamic_style.rb +0 -150
  84. data/examples/dynamic_style/dynamic_style.tlf +0 -1835
  85. data/examples/dynamic_style/dynamic_style_in_list.tlf +0 -344
  86. data/examples/dynamic_style/image.png +0 -0
  87. data/examples/eudc/eudc.rb +0 -20
  88. data/examples/eudc/eudc.tlf +0 -180
  89. data/examples/eudc/eudc.ttf +0 -0
  90. data/examples/helper.rb +0 -50
  91. data/examples/hidden_shapes/hidden_shapes.rb +0 -9
  92. data/examples/hidden_shapes/hidden_shapes.tlf +0 -449
  93. data/examples/list_events/list_events.rb +0 -32
  94. data/examples/list_events/list_events.tlf +0 -361
  95. data/examples/list_manual_generation/list_manual_generation.rb +0 -22
  96. data/examples/list_manual_generation/list_manual_generation.tlf +0 -132
  97. data/examples/list_page_number/list_page_number.rb +0 -17
  98. data/examples/list_page_number/list_page_number.tlf +0 -254
  99. data/examples/page_number/page_number.rb +0 -33
  100. data/examples/page_number/page_number.tlf +0 -215
  101. data/examples/palleted_png/palleted_png.png +0 -0
  102. data/examples/palleted_png/palleted_png.rb +0 -9
  103. data/examples/palleted_png/palleted_png.tlf +0 -47
  104. data/examples/password_setting/password_setting.rb +0 -10
  105. data/examples/password_setting/password_setting.tlf +0 -45
  106. data/examples/report_callbacks/report_callbacks.rb +0 -14
  107. data/examples/report_callbacks/report_callbacks.tlf +0 -147
  108. data/examples/single_line_tblock/single_line_tblock.rb +0 -13
  109. data/examples/single_line_tblock/single_line_tblock.tlf +0 -170
  110. data/examples/tblock_overflow/tblock_overflow.rb +0 -20
  111. data/examples/tblock_overflow/tblock_overflow.tlf +0 -538
  112. data/examples/tblock_styles/font_size.tlf +0 -383
  113. data/examples/tblock_styles/tblock_styles.rb +0 -43
  114. data/examples/tblock_styles/tblock_styles.tlf +0 -889
  115. data/examples/text_align/text_align.rb +0 -8
  116. data/examples/text_align/text_align.tlf +0 -241
  117. data/examples/typeB_page_size/B4_ISO.tlf +0 -45
  118. data/examples/typeB_page_size/B4_JIS.tlf +0 -45
  119. data/examples/typeB_page_size/typeB_page_size.rb +0 -17
  120. data/examples/word_wrap/word_wrap.rb +0 -26
  121. data/examples/word_wrap/word_wrap.tlf +0 -297
  122. data/test/data/font.ttf +0 -0
  123. data/test/data/image_normal.jpg +0 -0
  124. data/test/data/image_normal.png +0 -0
  125. data/test/data/image_normal_jpg_noext +0 -0
  126. data/test/data/image_normal_png_noext +0 -0
  127. data/test/data/image_pallete_based.png +0 -0
  128. data/test/data/legacy_layout/all-items.tlf +0 -1
  129. data/test/schema_helper.rb +0 -122
  130. data/test/test_helper.rb +0 -48
  131. data/test/tmp/.gitkeep +0 -0
  132. data/test/unit/core/format/test_base.rb +0 -152
  133. data/test/unit/core/shape/base/test_internal.rb +0 -87
  134. data/test/unit/core/shape/basic/test_block_format.rb +0 -23
  135. data/test/unit/core/shape/basic/test_block_interface.rb +0 -29
  136. data/test/unit/core/shape/basic/test_block_internal.rb +0 -55
  137. data/test/unit/core/shape/basic/test_format.rb +0 -37
  138. data/test/unit/core/shape/basic/test_interface.rb +0 -108
  139. data/test/unit/core/shape/basic/test_internal.rb +0 -55
  140. data/test/unit/core/shape/image_block/test_interface.rb +0 -24
  141. data/test/unit/core/shape/image_block/test_internal.rb +0 -31
  142. data/test/unit/core/shape/list/test_format.rb +0 -111
  143. data/test/unit/core/shape/list/test_manager.rb +0 -67
  144. data/test/unit/core/shape/list/test_page.rb +0 -82
  145. data/test/unit/core/shape/list/test_page_state.rb +0 -31
  146. data/test/unit/core/shape/list/test_section_format.rb +0 -36
  147. data/test/unit/core/shape/list/test_section_interface.rb +0 -75
  148. data/test/unit/core/shape/list/test_section_internal.rb +0 -50
  149. data/test/unit/core/shape/manager/test_format.rb +0 -38
  150. data/test/unit/core/shape/manager/test_internal.rb +0 -132
  151. data/test/unit/core/shape/manager/test_target.rb +0 -140
  152. data/test/unit/core/shape/page_number/test_format.rb +0 -55
  153. data/test/unit/core/shape/page_number/test_interface.rb +0 -33
  154. data/test/unit/core/shape/page_number/test_internal.rb +0 -81
  155. data/test/unit/core/shape/styles/test_base.rb +0 -191
  156. data/test/unit/core/shape/styles/test_basic.rb +0 -24
  157. data/test/unit/core/shape/styles/test_graphic.rb +0 -50
  158. data/test/unit/core/shape/styles/test_text.rb +0 -97
  159. data/test/unit/core/shape/text/test_format.rb +0 -44
  160. data/test/unit/core/shape/text/test_internal.rb +0 -20
  161. data/test/unit/core/shape/text_block/formatter/test_basic.rb +0 -24
  162. data/test/unit/core/shape/text_block/formatter/test_datetime.rb +0 -49
  163. data/test/unit/core/shape/text_block/formatter/test_number.rb +0 -76
  164. data/test/unit/core/shape/text_block/formatter/test_padding.rb +0 -77
  165. data/test/unit/core/shape/text_block/test_format.rb +0 -169
  166. data/test/unit/core/shape/text_block/test_formatter.rb +0 -28
  167. data/test/unit/core/shape/text_block/test_interface.rb +0 -63
  168. data/test/unit/core/shape/text_block/test_internal.rb +0 -128
  169. data/test/unit/core/test_shape.rb +0 -52
  170. data/test/unit/core/test_utils.rb +0 -68
  171. data/test/unit/generator/pdf/document/graphics/test_attributes.rb +0 -135
  172. data/test/unit/generator/pdf/document/graphics/test_basic.rb +0 -46
  173. data/test/unit/generator/pdf/document/graphics/test_image.rb +0 -46
  174. data/test/unit/generator/pdf/document/graphics/test_text.rb +0 -171
  175. data/test/unit/generator/pdf/document/test_font.rb +0 -84
  176. data/test/unit/generator/pdf/document/test_graphics.rb +0 -42
  177. data/test/unit/generator/pdf/document/test_page.rb +0 -122
  178. data/test/unit/generator/pdf/document/test_parse_color.rb +0 -30
  179. data/test/unit/generator/pdf/prawn_ext/test_calc_image_dimensions.rb +0 -41
  180. data/test/unit/generator/pdf/prawn_ext/test_width_of.rb +0 -22
  181. data/test/unit/generator/pdf/test_document.rb +0 -22
  182. data/test/unit/generator/test_pdf.rb +0 -26
  183. data/test/unit/layout/test_base.rb +0 -41
  184. data/test/unit/layout/test_format.rb +0 -100
  185. data/test/unit/layout/test_legacy_schema.rb +0 -574
  186. data/test/unit/layout/test_version.rb +0 -26
  187. data/test/unit/report/test_base.rb +0 -248
  188. data/test/unit/report/test_internal.rb +0 -206
  189. data/test/unit/test_config.rb +0 -36
  190. data/test/unit/test_layout.rb +0 -12
  191. data/test/unit/test_report.rb +0 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 40890b67b0013db37dcab5672e1b3166919adc9c
4
- data.tar.gz: 00d5a8a495b282c6f6c83864a2550774b09a9995
2
+ SHA256:
3
+ metadata.gz: 9713f8331c7d6c97d17f0b30ba84124148f48ed40d3fde29f884503146415ed0
4
+ data.tar.gz: 0617cb86495f89090b6f751334aed7fd69c42b79357683992ac65d3ee0dc72e0
5
5
  SHA512:
6
- metadata.gz: 7c84274da336894155c19db3ae9b6ce66f3c69bde20605c74efd841dd318c51d7317553a261cac391b8e5eb9d197d15fd05cfb18d0e87ffdafbf8b0a2ffbe315
7
- data.tar.gz: f2f4b9e4aa7edeca96bb40f7ceb187fa04dd9bdfcaf6d750af6602077f0d5c25cb19466ae50780cf87d1a433f82ea11f5837263d4f16b35922b0f525b475fd91
6
+ metadata.gz: 37bd09438b27f1147c9803b0236bac461c0d5c08844bff920e7a183bd3f09912f157bf66c6ad246ece7a8c8041fd559a18495c56a22550459e15e357b60355c9
7
+ data.tar.gz: 43fd24534374c1c63162cece99c12622c5bdab0fce12c9f8c7b9e82d985ec50fc0b1fa388f1b67658ae3892e6b9d97350fada88ef6c48021c4dedecff128e910
@@ -1,2 +1,2 @@
1
- **We only accept bug reports and pull requests in GitHub**.
2
- If you have a support question about how to use thinreports, please [ask on Google Group](https://groups.google.com/forum/?hl=ja#!forum/thinreports).
1
+ We only accept bug reports and pull requests in GitHub.
2
+ If you have a support question about how to use thinreports, please [ask on GitHub Discussions](https://github.com/thinreports/thinreports/discussions).
@@ -0,0 +1,51 @@
1
+ name: Test
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+ name: Test against ruby ${{ matrix.ruby }} and prawn ${{ matrix.prawn }}
8
+ runs-on: ubuntu-latest
9
+ strategy:
10
+ matrix:
11
+ ruby:
12
+ - 2.5
13
+ - 2.6
14
+ - 2.7
15
+ - 3.0
16
+ - jruby
17
+ prawn:
18
+ - 2.2
19
+ - 2.3
20
+ - 2.4
21
+ exclude:
22
+ - ruby: 3.0
23
+ prawn: 2.2
24
+ - ruby: 3.0
25
+ prawn: 2.3
26
+
27
+ steps:
28
+ - uses: actions/checkout@v1
29
+
30
+ - name: Set up diff-pdf
31
+ run: |
32
+ sudo apt-get update
33
+ sudo apt-get install make automake g++ libpoppler-glib-dev poppler-utils libwxgtk3.0-dev
34
+ git clone https://github.com/vslavik/diff-pdf.git -b v0.4.1 --depth 1 /tmp/diff-pdf-src
35
+ cd /tmp/diff-pdf-src
36
+ ./bootstrap && ./configure && make && sudo make install
37
+
38
+ - name: Set up Ruby ${{ matrix.ruby }}
39
+ uses: ruby/setup-ruby@v1
40
+ with:
41
+ ruby-version: ${{ matrix.ruby }}
42
+
43
+ - name: Install dependencies
44
+ run: |
45
+ gem install bundler
46
+ bundle install --gemfile gemfiles/prawn-${{ matrix.prawn }}.gemfile --jobs 4 --retry 3
47
+
48
+ - name: Run tests
49
+ run: |
50
+ bundle exec rake test:units
51
+ bundle exec rake test:features
data/.gitignore CHANGED
@@ -4,3 +4,4 @@ Gemfile.lock
4
4
  .bundle
5
5
  .yardoc
6
6
  doc
7
+ !/test/features/*/expect.pdf
@@ -1,3 +1,52 @@
1
+ ## master (Unreleased)
2
+
3
+ ## 0.12.0
4
+
5
+ Breaking Changes:
6
+
7
+ * Drop Ruby 2.4 support #108, #109
8
+
9
+ Enhancements:
10
+
11
+ * Ruby 3.0 support #108, #109
12
+ * Prawn 2.4 support #108, #109
13
+
14
+ ## 0.11.0
15
+
16
+ Breaking Changes:
17
+
18
+ * Dropped Ruby 2.1 support
19
+ * Dropped Ruby 2.2 support
20
+ * Dropped Ruby 2.3 support
21
+ * Formatter of a text-block works even with multiple-line (#95)
22
+
23
+ Enhancements:
24
+
25
+ * Ruby 2.7.0 support
26
+ * Support Pathname layout option on `Thinreports::Report` #99 [@meganemura]
27
+
28
+ Bug Fixes:
29
+
30
+ * Fixed: thousands separation is applied to decimal part #95
31
+
32
+ ## 0.10.3
33
+
34
+ Bug Fixes:
35
+
36
+ * Fixed: corner-radius of Rect is not applied correctly #93
37
+
38
+ ## 0.10.2
39
+
40
+ Bug Fixes:
41
+
42
+ * Fixed: Prawn::Errors::UnknownFont error occured: "is not a known font" #89
43
+
44
+ ## 0.10.1
45
+
46
+ Bug Fixes:
47
+
48
+ * Fixed a bug that an error occurred on page break in other list when there is a list with page-break disabled #87 [@meganemura]
49
+
1
50
  ## 0.10.0
2
51
 
3
52
  * Thinreports requires Prawn 2.2
@@ -0,0 +1,12 @@
1
+ FROM ruby:3.0.0
2
+
3
+ RUN apt-get update -qq && apt-get install -y build-essential xvfb
4
+
5
+ # Install diff-pdf
6
+ WORKDIR /tmp
7
+ RUN apt-get install -y libpoppler-glib-dev poppler-utils libwxgtk3.0-dev && curl -L https://github.com/vslavik/diff-pdf/archive/master.tar.gz -o diff-pdf-master.tar.gz && tar zxf diff-pdf-master.tar.gz && cd diff-pdf-master && ./bootstrap && ./configure && make && make install
8
+
9
+ RUN mkdir /thinreports
10
+
11
+ WORKDIR /thinreports
12
+ VOLUME /thinreports
data/Gemfile CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- source 'http://rubygems.org'
3
+ source 'https://rubygems.org'
4
4
 
5
5
  gemspec
6
+
data/README.md CHANGED
@@ -1,9 +1,8 @@
1
1
  # Thinreports Generator
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/thinreports.svg)](http://badge.fury.io/rb/thinreports)
4
- [![](http://img.shields.io/travis/thinreports/thinreports-generator.svg?style=flat)](http://travis-ci.org/thinreports/thinreports-generator)
5
- [![](http://img.shields.io/codeclimate/github/thinreports/thinreports-generator.svg?style=flat)](https://codeclimate.com/github/thinreports/thinreports-generator)
6
- [![](http://img.shields.io/gemnasium/thinreports/thinreports-generator.svg?style=flat)](https://gemnasium.com/thinreports/thinreports-generator)
4
+ [![Test](https://github.com/thinreports/thinreports-generator/workflows/Test/badge.svg)](https://github.com/thinreports/thinreports-generator/actions)
5
+ [![Maintainability](https://api.codeclimate.com/v1/badges/054b400031608957ec4a/maintainability)](https://codeclimate.com/github/thinreports/thinreports-generator/maintainability)
7
6
 
8
7
  [Thinreports](http://www.thinreports.org) is an open source report generating tool for Ruby.
9
8
 
@@ -15,14 +14,15 @@
15
14
  * [Installation Guide](http://www.thinreports.org/documentation/getting-started/installation.html)
16
15
  * [Quick Start Guide](http://www.thinreports.org/documentation/getting-started/quickstart.html)
17
16
  * [Examples](https://github.com/thinreports/thinreports-examples)
18
- * [Rails5 Example](https://github.com/thinreports/thinreports-rails5-example)
19
17
  * [Changelog](https://github.com/thinreports/thinreports-generator/blob/master/CHANGELOG.md)
20
- * [Discussion Group](https://groups.google.com/forum/#!forum/thinreports)
18
+ * [Discussion Group (GitHub Discussions)](https://github.com/thinreports/thinreports/discussions)
19
+ * [Discussion Group (Google Groups)](https://groups.google.com/forum/#!forum/thinreports)
21
20
 
22
21
  ## Supported versions
23
22
 
24
- * Ruby 2.1, 2.2, 2.3, 2.4
25
- * JRuby 9.1.8.0
23
+ * Ruby 2.5, 2.6, 2.7, 3.0
24
+ * Prawn 2.2, 2.3, 2.4
25
+ * JRuby 9.2
26
26
 
27
27
  ## Quick Reference
28
28
 
@@ -153,7 +153,7 @@ report.on_page_create do |page|
153
153
  end
154
154
  ```
155
155
 
156
- See also [examples/report_callbacks](https://github.com/thinreports/thinreports-generator/tree/master/examples/report_callbacks).
156
+ See also [features/report_callbacks](https://github.com/thinreports/thinreports-generator/tree/master/test/features/report_callbacks).
157
157
 
158
158
  ### List
159
159
 
@@ -202,7 +202,7 @@ report.list do |list|
202
202
  end
203
203
  ```
204
204
 
205
- See also [examples/list_events](https://github.com/thinreports/thinreports-generator/tree/master/examples/list_events).
205
+ See also [features/list_events](https://github.com/thinreports/thinreports-generator/tree/master/test/features/list_events).
206
206
 
207
207
  ### Page Number
208
208
 
@@ -223,7 +223,7 @@ report.start_new_page do |page|
223
223
  end
224
224
  ```
225
225
 
226
- See also [examples/page_number](https://github.com/thinreports/thinreports-generator/blob/master/examples/page_number) and [examples/list_page_number](https://github.com/thinreports/thinreports-generator/blob/master/examples/list_page_number).
226
+ See also [features/page_number](https://github.com/thinreports/thinreports-generator/blob/master/test/features/page_number) and [features/page_number_with_list](https://github.com/thinreports/thinreports-generator/blob/master/test/features/page_number_with_list).
227
227
 
228
228
  ### Configuring fallback fonts
229
229
 
@@ -235,7 +235,7 @@ end
235
235
  Thinreports.config.fallback_fonts = ['/path/to/font_a.ttf', '/path/to/font_b.ttf']
236
236
  ```
237
237
 
238
- See also [examples/eudc](https://github.com/thinreports/thinreports-generator/blob/master/examples/eudc).
238
+ See also [features/eudc](https://github.com/thinreports/thinreports-generator/blob/master/test/features/eudc).
239
239
 
240
240
  ## Features
241
241
 
@@ -262,19 +262,44 @@ Generator can dynamically:
262
262
 
263
263
  ## Contributing
264
264
 
265
- ### Report bug, post your suggestion
265
+ Bug reports and pull requests are welcome on GitHub at https://github.com/thinreports/thinreports-generator.
266
266
 
267
- If you find bugs or improvements for the Editor, please report it [here](https://github.com/thinreports/thinreports-generator/issues/new).
267
+ ## Development
268
268
 
269
- ### Sending a Pull Request
269
+ ### How to run feature tests
270
270
 
271
- 1. Fork it
272
- 2. Clone your forked repository
273
- 3. Create your feature branch: `git checkout -b my-new-feature`
274
- 4. Fix your feature
275
- 5. Commit your changes: `git commit -am 'Fixed some bugs or features'`
276
- 6. Push to the branch: `git push origin my-new-feature`
277
- 7. Create new Pull Request
271
+ ```
272
+ $ bundle exec rake test:features
273
+ ```
274
+
275
+ In order to run `test:features`, you need to install [diff-pdf](https://github.com/vslavik/diff-pdf) in your environment, or you can run test in the docker container as below.
276
+
277
+ ### How to develop in Docker container
278
+
279
+ You can use the Docker container for development. This container contains the libraries required for testing, such as diff-pdf.
280
+
281
+ ```
282
+ $ docker build -t thinreports-dev .
283
+ $ docker run -v $PWD:/thinreports:cached -it thinreports-dev bash
284
+
285
+ > /thinreports#
286
+ ```
287
+
288
+ You can run test:
289
+
290
+ ```
291
+ > /thinreports# bundle install
292
+ > /thinreports# bundle exec rake test:features
293
+ ```
294
+
295
+ ## Releasing Generator
296
+
297
+ 1. Update the version number in `version.rb`
298
+ 2. Update `CHANGELOG.md` and `README.md` (if needed)
299
+ 3. Create the Release PR like #105
300
+ 4. Merge the PR
301
+ 5. Is the master CI green? If not, make it green
302
+ 6. 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
278
303
 
279
304
  ## License
280
305
 
data/Rakefile CHANGED
@@ -1,38 +1,22 @@
1
+ require 'bundler/gem_tasks'
1
2
  require 'rake/testtask'
2
- require 'rubocop/rake_task'
3
- require 'yard'
4
3
 
5
- task default: %i[test rubocop]
4
+ task default: :test
6
5
 
7
6
  Rake::TestTask.new do |t|
7
+ t.name = 'test:units'
8
+ t.description = 'Run unit tests'
8
9
  t.libs << 'test'
9
- t.test_files = Dir['test/unit/**/test_*.rb']
10
+ t.test_files = Dir['test/units/**/test_*.rb']
10
11
  end
11
12
 
12
- namespace :examples do
13
- desc 'Run all examples'
14
- task :all do
15
- require_relative 'examples/helper'
16
- Dir['examples/*/*.rb'].each { |f| require_relative f }
17
- end
18
-
19
- Dir['examples/*/*.rb'].each do |f|
20
- casename = File.basename(File.dirname(f))
21
-
22
- desc "Run example: #{casename}"
23
- task casename.to_sym => :_init do
24
- require_relative 'examples/helper'
25
- require_relative "examples/#{casename}/#{casename}"
26
- end
27
- end
28
- end
29
-
30
- desc 'Run all examples'
31
- task examples: :'examples:all'
32
-
33
- YARD::Rake::YardocTask.new :doc do |yard|
34
- yard.files = Dir['lib/**/*.rb']
35
- yard.options = ['--readme', 'README.md']
13
+ Rake::TestTask.new do |t|
14
+ t.name = 'test:features'
15
+ t.description = 'Run feature tests'
16
+ t.libs << 'test/features'
17
+ t.test_files = Dir['test/features/*/test_*.rb']
18
+ t.warning = false
36
19
  end
37
20
 
38
- RuboCop::RakeTask.new
21
+ desc 'Run unit and feature tests'
22
+ task test: %i( test:units test:features )
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'prawn', '~> 2.2.0'
4
+
5
+ gemspec path: '../'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'prawn', '~> 2.3.0'
4
+
5
+ gemspec path: '../'
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'prawn', '~> 2.4.0'
4
+
5
+ gemspec path: '../'
@@ -6,6 +6,10 @@ module Thinreports
6
6
  def self.root
7
7
  @root ||= Pathname.new(__FILE__).join('..', '..')
8
8
  end
9
+
10
+ def self.generate(report_params, filename: nil)
11
+ Generate.new.call(report_params, filename: filename)
12
+ end
9
13
  end
10
14
 
11
15
  require_relative 'thinreports/version'
@@ -18,3 +22,4 @@ require_relative 'thinreports/core/utils'
18
22
  require_relative 'thinreports/report'
19
23
  require_relative 'thinreports/layout'
20
24
  require_relative 'thinreports/generator/pdf'
25
+ require_relative 'thinreports/generate'
@@ -3,22 +3,22 @@
3
3
  module Thinreports
4
4
  module Core
5
5
  module Shape
6
- def Interface(parent, format) # rubocop:disable Style/MethodName
6
+ def Interface(parent, format)
7
7
  find_by_type(format.type)::Interface.new(parent, format)
8
8
  end
9
9
 
10
- def Format(type) # rubocop:disable Style/MethodName
10
+ def Format(type)
11
11
  find_by_type(type)::Format
12
12
  end
13
13
 
14
14
  module_function :Interface, :Format
15
15
 
16
- # rubocop:disable Metrics/CyclomaticComplexity
17
16
  def self.find_by_type(type)
18
17
  case type
19
18
  when TextBlock::TYPE_NAME then TextBlock
20
19
  when ImageBlock::TYPE_NAME then ImageBlock
21
20
  when List::TYPE_NAME then List
21
+ when StackView::TYPE_NAME then StackView
22
22
  when Text::TYPE_NAME then Text
23
23
  when PageNumber::TYPE_NAME then PageNumber
24
24
  when *Basic::TYPE_NAMES then Basic
@@ -38,4 +38,5 @@ require_relative 'shape/text'
38
38
  require_relative 'shape/text_block'
39
39
  require_relative 'shape/image_block'
40
40
  require_relative 'shape/list'
41
+ require_relative 'shape/stack_view'
41
42
  require_relative 'shape/page_number'
@@ -30,7 +30,6 @@ module Thinreports
30
30
  # @param [Thinreports::Core::Shape::Basic::Format] format
31
31
  # @return [Thinreports::Core::Shape::Basic::Internal]
32
32
  # @abstract
33
- # rubocop:disable Lint/UnusedMethodArgument
34
33
  def init_internal(parent, format)
35
34
  raise NotImplementedError
36
35
  end
@@ -10,6 +10,11 @@ module Thinreports
10
10
  config_reader :type, :id
11
11
  config_reader :style
12
12
  config_checker true, :display
13
+ config_reader follow_stretch: %w[follow-stretch]
14
+
15
+ def affect_bottom_margin?
16
+ attributes.fetch('affect-bottom-margin', true)
17
+ end
13
18
  end
14
19
  end
15
20
  end
@@ -4,7 +4,7 @@ module Thinreports
4
4
  module Core
5
5
  module Shape
6
6
  module ImageBlock
7
- TYPE_NAME = 'image-block'.freeze
7
+ TYPE_NAME = 'image-block'
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,7 @@ module Thinreports
4
4
  module Core
5
5
  module Shape
6
6
  module List
7
- TYPE_NAME = 'list'.freeze
7
+ TYPE_NAME = 'list'
8
8
  end
9
9
  end
10
10
  end
@@ -4,7 +4,6 @@ module Thinreports
4
4
  module Core
5
5
  module Shape
6
6
  module List
7
- # rubocop:disable Metrics/ClassLength
8
7
  class Manager
9
8
  include Utils
10
9
 
@@ -136,9 +135,7 @@ module Thinreports
136
135
  def overflow_with?(section_name = :detail)
137
136
  max_height = page_max_height
138
137
 
139
- if section_name == :footer && format.has_page_footer?
140
- max_height += format.section_height(:page_footer)
141
- end
138
+ max_height += format.section_height(:page_footer) if section_name == :footer && format.has_page_footer?
142
139
 
143
140
  height = format.section_height(section_name)
144
141
  (current_page_state.height + height) > max_height