thinreports 0.10.0 → 0.12.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.
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