eac_tools 0.37.1 → 0.38.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 (152) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +63 -47
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/aranha-parsers/Gemfile +8 -0
  5. data/sub/aranha-parsers/aranha-parsers.gemspec +25 -0
  6. data/sub/aranha-parsers/lib/aranha/parsers/base.rb +81 -0
  7. data/sub/aranha-parsers/lib/aranha/parsers/html/base.rb +47 -0
  8. data/sub/aranha-parsers/lib/aranha/parsers/html/item.rb +24 -0
  9. data/sub/aranha-parsers/lib/aranha/parsers/html/item_list.rb +33 -0
  10. data/sub/aranha-parsers/lib/aranha/parsers/html/node/base.rb +34 -0
  11. data/sub/aranha-parsers/lib/aranha/parsers/html/node/default/numeric_support.rb +70 -0
  12. data/sub/aranha-parsers/lib/aranha/parsers/html/node/default/string_support.rb +77 -0
  13. data/sub/aranha-parsers/lib/aranha/parsers/html/node/default.rb +34 -0
  14. data/sub/aranha-parsers/lib/aranha/parsers/html/node.rb +13 -0
  15. data/sub/aranha-parsers/lib/aranha/parsers/html.rb +11 -0
  16. data/sub/aranha-parsers/lib/aranha/parsers/invalid_state_exception.rb +8 -0
  17. data/sub/aranha-parsers/lib/aranha/parsers/json/base.rb +20 -0
  18. data/sub/aranha-parsers/lib/aranha/parsers/json.rb +11 -0
  19. data/sub/aranha-parsers/lib/aranha/parsers/patches/ofx_parser.rb +38 -0
  20. data/sub/aranha-parsers/lib/aranha/parsers/patches.rb +11 -0
  21. data/sub/aranha-parsers/lib/aranha/parsers/rspec/setup.rb +15 -0
  22. data/sub/aranha-parsers/lib/aranha/parsers/rspec/shared_examples/source_target_fixtures.rb +74 -0
  23. data/sub/aranha-parsers/lib/aranha/parsers/rspec/source_target_fixtures_controller.rb +39 -0
  24. data/sub/aranha-parsers/lib/aranha/parsers/rspec.rb +11 -0
  25. data/sub/aranha-parsers/lib/aranha/parsers/source_address/fetch_content_error.rb +10 -0
  26. data/sub/aranha-parsers/lib/aranha/parsers/source_address/file.rb +31 -0
  27. data/sub/aranha-parsers/lib/aranha/parsers/source_address/hash_http_base.rb +92 -0
  28. data/sub/aranha-parsers/lib/aranha/parsers/source_address/hash_http_get.rb +13 -0
  29. data/sub/aranha-parsers/lib/aranha/parsers/source_address/hash_http_post.rb +13 -0
  30. data/sub/aranha-parsers/lib/aranha/parsers/source_address/http_get.rb +59 -0
  31. data/sub/aranha-parsers/lib/aranha/parsers/source_address.rb +57 -0
  32. data/sub/aranha-parsers/lib/aranha/parsers/source_target_fixtures/source_target_file.rb +19 -0
  33. data/sub/aranha-parsers/lib/aranha/parsers/source_target_fixtures.rb +78 -0
  34. data/sub/aranha-parsers/lib/aranha/parsers/version.rb +7 -0
  35. data/sub/aranha-parsers/lib/aranha/parsers.rb +9 -0
  36. data/sub/aranha-parsers/spec/lib/aranha/parsers/rspec/shared_examples/source_target_fixtures_spec.rb +9 -0
  37. data/sub/aranha-parsers/spec/lib/aranha/parsers/rspec/shared_examples/source_target_fixtures_spec_files/fixture1.source.txt +1 -0
  38. data/sub/aranha-parsers/spec/lib/aranha/parsers/rspec/shared_examples/source_target_fixtures_spec_files/fixture1.target.yaml +3 -0
  39. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_address/http_get_spec.rb +21 -0
  40. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_address_spec.rb +74 -0
  41. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec.rb +27 -0
  42. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec_files/stub1.source.txt +1 -0
  43. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec_files/stub1.target.html +1 -0
  44. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec_files/stub2.source.html +1 -0
  45. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec_files/stub3.target.yaml +1 -0
  46. data/sub/aranha-parsers/spec/lib/rubocop_check_spec.rb +3 -0
  47. data/sub/aranha-parsers/spec/spec_helper.rb +4 -0
  48. data/sub/avm/avm.gemspec +3 -1
  49. data/sub/avm/lib/avm/executables.rb +1 -1
  50. data/sub/avm/lib/avm/file_formats/base.rb +61 -0
  51. data/sub/{avm-files/lib/avm/files/formatter.rb → avm/lib/avm/file_formats/search_formatter.rb} +23 -16
  52. data/sub/avm/lib/avm/file_formats/utf8_assert.rb +72 -0
  53. data/sub/avm/lib/avm/file_formats.rb +9 -0
  54. data/sub/avm/lib/avm/registry/file_formats.rb +10 -0
  55. data/sub/avm/lib/avm/registry.rb +2 -2
  56. data/sub/avm/lib/avm/rspec/setup.rb +2 -1
  57. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb +32 -0
  58. data/sub/avm/lib/avm/version.rb +1 -1
  59. data/sub/avm-eac_generic_base0/avm-eac_generic_base0.gemspec +2 -2
  60. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base.rb +32 -0
  61. data/sub/{avm-files/lib/avm/files/formatter/formats.rb → avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats.rb} +3 -5
  62. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/version.rb +1 -1
  63. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec.rb +7 -0
  64. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec_files}/plain_text.source +0 -0
  65. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec_files}/plain_text.target +0 -0
  66. data/sub/avm-eac_latex_base0/avm-eac_latex_base0.gemspec +3 -3
  67. data/sub/avm-eac_latex_base0/lib/avm/eac_latex_base0/executables.rb +22 -0
  68. data/sub/avm-eac_latex_base0/lib/avm/eac_latex_base0/sources/build.rb +3 -1
  69. data/sub/avm-eac_latex_base0/lib/avm/eac_latex_base0/version.rb +1 -1
  70. data/sub/avm-eac_php_base0/avm-eac_php_base0.gemspec +2 -1
  71. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/executables.rb +22 -0
  72. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/file_formats/base.rb +20 -0
  73. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/file_formats.rb +11 -0
  74. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/version.rb +1 -1
  75. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec.rb +7 -0
  76. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_code.php.source +0 -0
  77. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_code.php.target +0 -0
  78. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_code2.php.source +0 -0
  79. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_code2.php.target +0 -0
  80. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_html_code.php.source +0 -0
  81. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_html_code.php.target +0 -0
  82. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_iso88591_code.php.source +0 -0
  83. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_iso88591_code.php.target +0 -0
  84. data/sub/avm-eac_python_base0/Gemfile +8 -0
  85. data/sub/avm-eac_python_base0/avm-eac_python_base0.gemspec +19 -0
  86. data/sub/avm-eac_python_base0/lib/avm/eac_python_base0/executables.rb +22 -0
  87. data/sub/avm-eac_python_base0/lib/avm/eac_python_base0/file_formats/base.rb +20 -0
  88. data/sub/avm-eac_python_base0/lib/avm/eac_python_base0/file_formats.rb +11 -0
  89. data/sub/avm-eac_python_base0/lib/avm/eac_python_base0/version.rb +7 -0
  90. data/sub/avm-eac_python_base0/lib/avm/eac_python_base0.rb +9 -0
  91. data/sub/avm-eac_python_base0/spec/lib/avm/eac_python_base0/file_formats/base_spec.rb +7 -0
  92. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_python_base0/spec/lib/avm/eac_python_base0/file_formats/base_spec_files}/python_code.source +0 -0
  93. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_python_base0/spec/lib/avm/eac_python_base0/file_formats/base_spec_files}/python_code.target +0 -0
  94. data/sub/avm-eac_python_base0/spec/rubocop_spec.rb +3 -0
  95. data/sub/avm-eac_python_base0/spec/spec_helper.rb +4 -0
  96. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +3 -3
  97. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats/base.rb +20 -0
  98. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/file_formats.rb +11 -0
  99. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +1 -1
  100. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec.rb +7 -0
  101. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files}/Gemfile.source +0 -0
  102. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files}/Gemfile.target +0 -0
  103. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files}/ruby_code.rb.source +0 -0
  104. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files}/ruby_code.rb.target +0 -0
  105. data/sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +3 -3
  106. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/executables.rb +26 -0
  107. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css/file_apply.rb +48 -0
  108. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css.rb +22 -0
  109. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/html.rb +43 -0
  110. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/javascript.rb +22 -0
  111. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/json.rb +25 -0
  112. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/provider.rb +24 -0
  113. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/xml.rb +26 -0
  114. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats.rb +11 -0
  115. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +1 -1
  116. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec.rb +7 -0
  117. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.source.css +11 -0
  118. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.target.css +11 -0
  119. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec.rb +7 -0
  120. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files}/html_code.html.erb.source +0 -0
  121. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files}/html_code.html.erb.target +0 -0
  122. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files}/html_code.html.source +0 -0
  123. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files}/html_code.html.target +0 -0
  124. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec.rb +7 -0
  125. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files}/javascript_code1.js.source +0 -0
  126. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files}/javascript_code1.js.target +0 -0
  127. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec.rb +7 -0
  128. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files}/json_code.json.source +0 -0
  129. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files}/json_code.json.target +0 -0
  130. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec.rb +7 -0
  131. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files}/xml_code.xml.source +0 -0
  132. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files}/xml_code.xml.target +0 -0
  133. data/sub/avm-files/avm-files.gemspec +2 -2
  134. data/sub/avm-files/lib/avm/files/version.rb +1 -1
  135. data/sub/avm-tools/avm-tools.gemspec +4 -4
  136. data/sub/avm-tools/lib/avm/tools/runner/files/format.rb +5 -5
  137. data/sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb +4 -2
  138. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  139. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_bool.rb +12 -0
  140. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  141. metadata +138 -63
  142. data/sub/avm-files/lib/avm/files/formatter/formats/base.rb +0 -62
  143. data/sub/avm-files/lib/avm/files/formatter/formats/generic_plain.rb +0 -34
  144. data/sub/avm-files/lib/avm/files/formatter/formats/html.rb +0 -45
  145. data/sub/avm-files/lib/avm/files/formatter/formats/javascript.rb +0 -24
  146. data/sub/avm-files/lib/avm/files/formatter/formats/json.rb +0 -27
  147. data/sub/avm-files/lib/avm/files/formatter/formats/php.rb +0 -22
  148. data/sub/avm-files/lib/avm/files/formatter/formats/python.rb +0 -22
  149. data/sub/avm-files/lib/avm/files/formatter/formats/ruby.rb +0 -22
  150. data/sub/avm-files/lib/avm/files/formatter/formats/xml.rb +0 -28
  151. data/sub/avm-files/lib/avm/files/formatter/utf8_assert.rb +0 -74
  152. data/sub/avm-tools/spec/lib/avm/tools/runner/files/format_spec.rb +0 -56
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a06d6cf3c9faa8f37538fc898007ccf3501d0fbff41a883ba7b36a9d8f9a366
4
- data.tar.gz: 6bf1bd1dce7b5cedce59963194408964ed49ea4cf85a44609df482e29bddc9d0
3
+ metadata.gz: 177dcaeff3e81307599207d1fdd3a52e8e88c3461e08a5e4c8319b1a354bd3d5
4
+ data.tar.gz: 6c3fad0d63f50e97c7cc0fffcc7384c66e6066743874916acd5997237c8b6142
5
5
  SHA512:
6
- metadata.gz: 55243dbe562ad019575f0014096a024aeb844723597fe4b00dc415c1f234a1424fca4d80498c7c679d9ace63fc0ead2c205b4a224ebf8bbca1f95d9fb96fd92d
7
- data.tar.gz: 5b47516144519424c1d3345460f6d36b5fd9d011015a1daa7342b9656d9512e53d0954c59a4545f71395f0a0fcedb74bc352edc7ba6406bf33806fe7c46726e7
6
+ metadata.gz: e5628867398318c613bd94c4da4dff8e069553ec4bab91b8dfefacd137bf74ed4294047b31455247f4187b39b45b23d898cb318cfca269f03a3c6dcd6458194c
7
+ data.tar.gz: 4f97c29c0ff189dd0ddc6dbc29d20c4b665d57a6bdc677a98a651427d1ee758fa275c8f29d931f466d6ff981f36ee5f075cf300a45d9486dda125c70f8c5b5f1
data/Gemfile.lock CHANGED
@@ -1,21 +1,34 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- eac_tools (0.37.1)
5
- avm (~> 0.50)
4
+ eac_tools (0.38.0)
5
+ avm (~> 0.52)
6
6
  avm-eac_asciidoctor_base0 (~> 0.7, >= 0.7.1)
7
- avm-eac_generic_base0 (~> 0.5)
8
- avm-eac_latex_base0 (~> 0.2, >= 0.2.1)
9
- avm-eac_php_base0 (~> 0.1)
7
+ avm-eac_generic_base0 (~> 0.7)
8
+ avm-eac_latex_base0 (~> 0.3)
9
+ avm-eac_php_base0 (~> 0.3)
10
10
  avm-eac_rails_base0 (~> 0.8, >= 0.8.1)
11
11
  avm-eac_rails_base1 (~> 0.7)
12
12
  avm-eac_redmine_base0 (~> 0.16)
13
13
  avm-eac_redmine_plugin_base0 (~> 0.3)
14
- avm-eac_ruby_base1 (~> 0.25)
15
- avm-eac_webapp_base0 (~> 0.10)
14
+ avm-eac_ruby_base1 (~> 0.26, >= 0.26.1)
15
+ avm-eac_webapp_base0 (~> 0.12)
16
16
  avm-eac_wordpress_base0 (~> 0.2, >= 0.2.1)
17
- avm-tools (~> 0.142, >= 0.142.1)
18
- eac_ruby_utils (~> 0.105)
17
+ avm-tools (~> 0.142, >= 0.142.3)
18
+ eac_ruby_utils (~> 0.106)
19
+
20
+ PATH
21
+ remote: sub/aranha-parsers
22
+ specs:
23
+ aranha-parsers (0.14.4)
24
+ activesupport (>= 4.0.0)
25
+ addressable (~> 2.8, >= 2.8.1)
26
+ curb (~> 0.9, >= 0.9.11)
27
+ eac_ruby_utils (~> 0.106)
28
+ faraday-gzip (~> 0.1)
29
+ faraday_middleware (~> 1.2)
30
+ nokogiri (~> 1.13, >= 1.13.9)
31
+ ofx-parser (~> 1.1)
19
32
 
20
33
  PATH
21
34
  remote: sub/avm-eac_asciidoctor_base0
@@ -30,23 +43,31 @@ PATH
30
43
  PATH
31
44
  remote: sub/avm-eac_generic_base0
32
45
  specs:
33
- avm-eac_generic_base0 (0.5.0)
34
- avm (~> 0.28)
35
- eac_ruby_utils (~> 0.96)
46
+ avm-eac_generic_base0 (0.7.0)
47
+ avm (~> 0.52)
48
+ eac_ruby_utils (~> 0.105)
36
49
 
37
50
  PATH
38
51
  remote: sub/avm-eac_latex_base0
39
52
  specs:
40
- avm-eac_latex_base0 (0.2.1)
41
- avm (~> 0.45)
42
- avm-eac_webapp_base0 (~> 0.9)
43
- eac_ruby_utils (~> 0.104)
53
+ avm-eac_latex_base0 (0.3.0)
54
+ avm (~> 0.52)
55
+ avm-eac_webapp_base0 (~> 0.12)
56
+ eac_ruby_utils (~> 0.106)
44
57
 
45
58
  PATH
46
59
  remote: sub/avm-eac_php_base0
47
60
  specs:
48
- avm-eac_php_base0 (0.1.0)
49
- eac_ruby_utils (~> 0.104)
61
+ avm-eac_php_base0 (0.3.0)
62
+ avm-eac_generic_base0 (~> 0.7)
63
+ eac_ruby_utils (~> 0.106)
64
+
65
+ PATH
66
+ remote: sub/avm-eac_python_base0
67
+ specs:
68
+ avm-eac_python_base0 (0.2.0)
69
+ avm-eac_generic_base0 (~> 0.7)
70
+ eac_ruby_utils (~> 0.106)
50
71
 
51
72
  PATH
52
73
  remote: sub/avm-eac_rails_base0
@@ -87,20 +108,20 @@ PATH
87
108
  PATH
88
109
  remote: sub/avm-eac_ruby_base1
89
110
  specs:
90
- avm-eac_ruby_base1 (0.25.0)
91
- avm (~> 0.50)
92
- avm-eac_generic_base0 (~> 0.5)
93
- eac_ruby_utils (~> 0.105)
111
+ avm-eac_ruby_base1 (0.26.1)
112
+ avm (~> 0.52)
113
+ avm-eac_generic_base0 (~> 0.7)
114
+ eac_ruby_utils (~> 0.106)
94
115
 
95
116
  PATH
96
117
  remote: sub/avm-eac_webapp_base0
97
118
  specs:
98
- avm-eac_webapp_base0 (0.10.0)
99
- avm (~> 0.50)
100
- avm-eac_generic_base0 (~> 0.5)
119
+ avm-eac_webapp_base0 (0.12.0)
120
+ avm (~> 0.52)
121
+ avm-eac_generic_base0 (~> 0.7)
101
122
  avm-eac_postgresql_base0 (~> 0.2)
102
123
  avm-eac_ubuntu_base0 (~> 0.3)
103
- eac_ruby_utils (~> 0.105)
124
+ eac_ruby_utils (~> 0.106)
104
125
 
105
126
  PATH
106
127
  remote: sub/avm-eac_wordpress_base0
@@ -113,11 +134,11 @@ PATH
113
134
  PATH
114
135
  remote: sub/avm-files
115
136
  specs:
116
- avm-files (0.4.1)
117
- avm (~> 0.43)
137
+ avm-files (0.6.0)
138
+ avm (~> 0.52)
118
139
  eac_cli (~> 0.28)
119
140
  eac_fs (~> 0.12, >= 0.12.3)
120
- eac_ruby_utils (~> 0.103)
141
+ eac_ruby_utils (~> 0.106)
121
142
  eac_templates (~> 0.3, >= 0.3.2)
122
143
 
123
144
  PATH
@@ -133,12 +154,12 @@ PATH
133
154
  PATH
134
155
  remote: sub/avm-tools
135
156
  specs:
136
- avm-tools (0.142.1)
137
- aranha-parsers (~> 0.14, >= 0.14.3)
138
- avm (~> 0.50)
139
- avm-eac_ruby_base1 (~> 0.25)
157
+ avm-tools (0.142.3)
158
+ aranha-parsers (~> 0.14, >= 0.14.4)
159
+ avm (~> 0.52)
160
+ avm-eac_ruby_base1 (~> 0.26, >= 0.26.1)
140
161
  avm-eac_ubuntu_base0 (~> 0.3)
141
- avm-files (~> 0.4, >= 0.4.1)
162
+ avm-files (~> 0.6)
142
163
  avm-git (~> 0.8)
143
164
  clipboard (~> 1.3, >= 1.3.6)
144
165
  curb (~> 0.9, >= 0.9.11)
@@ -151,11 +172,13 @@ PATH
151
172
  PATH
152
173
  remote: sub/avm
153
174
  specs:
154
- avm (0.50.0)
175
+ avm (0.52.0)
176
+ aranha-parsers (~> 0.14, >= 0.14.4)
155
177
  eac_cli (~> 0.28)
156
178
  eac_config (~> 0.11, >= 0.11.1)
157
179
  eac_docker (~> 0.5)
158
- eac_git (~> 0.12, >= 0.12.3)
180
+ eac_fs (~> 0.12, >= 0.12.3)
181
+ eac_git (~> 0.13)
159
182
  eac_ruby_utils (~> 0.105)
160
183
  eac_templates (~> 0.3, >= 0.3.2)
161
184
  filesize (~> 0.2)
@@ -211,7 +234,7 @@ PATH
211
234
  PATH
212
235
  remote: sub/eac_ruby_utils
213
236
  specs:
214
- eac_ruby_utils (0.105.0)
237
+ eac_ruby_utils (0.106.0)
215
238
  activesupport (>= 4, < 7)
216
239
  addressable (~> 2.8, >= 2.8.1)
217
240
  bundler
@@ -229,15 +252,6 @@ GEM
229
252
  zeitwerk (~> 2.3)
230
253
  addressable (2.8.1)
231
254
  public_suffix (>= 2.0.2, < 6.0)
232
- aranha-parsers (0.14.3)
233
- activesupport (>= 4.0.0)
234
- addressable (~> 2.8, >= 2.8.1)
235
- curb (~> 0.9, >= 0.9.11)
236
- eac_ruby_utils (~> 0.102, >= 0.102.1)
237
- faraday-gzip (~> 0.1)
238
- faraday_middleware (~> 1.2)
239
- nokogiri (~> 1.13, >= 1.13.8)
240
- ofx-parser (~> 1.1)
241
255
  asciidoctor (2.0.18)
242
256
  ast (2.4.2)
243
257
  avm-eac_postgresql_base0 (0.2.0)
@@ -306,7 +320,7 @@ GEM
306
320
  minitest (5.16.3)
307
321
  multipart-post (2.2.3)
308
322
  net-ssh (4.2.0)
309
- nokogiri (1.13.8-x86_64-linux)
323
+ nokogiri (1.13.9-x86_64-linux)
310
324
  racc (~> 1.4)
311
325
  ofx-parser (1.1.0)
312
326
  hpricot (>= 0.6)
@@ -362,11 +376,13 @@ PLATFORMS
362
376
  x86_64-linux
363
377
 
364
378
  DEPENDENCIES
379
+ aranha-parsers!
365
380
  avm!
366
381
  avm-eac_asciidoctor_base0!
367
382
  avm-eac_generic_base0!
368
383
  avm-eac_latex_base0!
369
384
  avm-eac_php_base0!
385
+ avm-eac_python_base0!
370
386
  avm-eac_rails_base0!
371
387
  avm-eac_rails_base1!
372
388
  avm-eac_redmine_base0!
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module EacTools
4
- VERSION = '0.37.1'
4
+ VERSION = '0.38.0'
5
5
  end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ gemspec
6
+
7
+ local_gemfile = ::File.join(::File.dirname(__FILE__), 'Gemfile.local')
8
+ eval_gemfile local_gemfile if ::File.exist?(local_gemfile)
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path('lib', __dir__)
4
+
5
+ require 'aranha/parsers/version'
6
+
7
+ Gem::Specification.new do |s|
8
+ s.name = 'aranha-parsers'
9
+ s.version = ::Aranha::Parsers::VERSION
10
+ s.authors = ['Esquilo Azul Company']
11
+ s.summary = 'Parsers\' utilities for Ruby.'
12
+
13
+ s.files = Dir['{lib}/**/*']
14
+
15
+ s.add_dependency 'activesupport', '>= 4.0.0'
16
+ s.add_dependency 'addressable', '~> 2.8', '>= 2.8.1'
17
+ s.add_dependency 'curb', '~> 0.9', '>= 0.9.11'
18
+ s.add_dependency 'eac_ruby_utils', '~> 0.106'
19
+ s.add_dependency 'faraday-gzip', '~> 0.1'
20
+ s.add_dependency 'faraday_middleware', '~> 1.2'
21
+ s.add_dependency 'nokogiri', '~> 1.13', '>= 1.13.9'
22
+ s.add_dependency 'ofx-parser', '~> 1.1'
23
+
24
+ s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
25
+ end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'open-uri'
4
+ require 'fileutils'
5
+ require 'aranha/parsers/source_address'
6
+ require 'eac_ruby_utils/fs/temp'
7
+
8
+ module Aranha
9
+ module Parsers
10
+ class Base
11
+ class << self
12
+ def from_content(content)
13
+ ::EacRubyUtils::Fs::Temp.on_file do |path|
14
+ ::File.open(path.to_s, 'w:UTF-8') do |f|
15
+ f.write content.dup.force_encoding('UTF-8')
16
+ end
17
+ r = new(path.to_path)
18
+ r.content
19
+ r
20
+ end
21
+ end
22
+
23
+ def parse_content(content)
24
+ from_content(content).data
25
+ end
26
+ end
27
+
28
+ LOG_DIR_ENVVAR = 'ARANHA_PARSERS_LOG_DIR'
29
+
30
+ attr_reader :source_address
31
+
32
+ def initialize(url)
33
+ @source_address = ::Aranha::Parsers::SourceAddress.new(url)
34
+ log_content(source_address.serialize, '-source-address')
35
+ end
36
+
37
+ delegate :url, to: :source_address
38
+
39
+ def content
40
+ @content ||= log_content(source_address_content)
41
+ end
42
+
43
+ # @return [String]
44
+ delegate :content, to: :source_address, prefix: true
45
+
46
+ private
47
+
48
+ # @return [String]
49
+ def log_content(content, suffix = '')
50
+ path = log_file(suffix)
51
+
52
+ File.open(path, 'wb') { |file| file.write(content) } if path
53
+
54
+ content
55
+ end
56
+
57
+ def log_file(suffix)
58
+ dir = log_parsers_dir
59
+ return nil unless dir
60
+
61
+ f = ::File.join(dir, "#{self.class.name.parameterize}#{suffix}.log")
62
+ FileUtils.mkdir_p(File.dirname(f))
63
+ f
64
+ end
65
+
66
+ def log_parsers_dir
67
+ return ENV[LOG_DIR_ENVVAR] if ENV[LOG_DIR_ENVVAR]
68
+ return ::Rails.root.join('log', 'parsers') if rails_root_exist?
69
+
70
+ nil
71
+ end
72
+
73
+ def rails_root_exist?
74
+ ::Rails.root
75
+ true
76
+ rescue NameError
77
+ false
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'nokogiri'
4
+ require 'aranha/parsers/base'
5
+ require 'aranha/parsers/html/node/default'
6
+
7
+ module Aranha
8
+ module Parsers
9
+ module Html
10
+ class Base < ::Aranha::Parsers::Base
11
+ class << self
12
+ def fields
13
+ @fields ||= []
14
+ @fields.dup
15
+ end
16
+
17
+ def field(name, type, xpath)
18
+ @fields ||= []
19
+ @fields << Field.new(name, type, xpath)
20
+ end
21
+
22
+ Field = Struct.new(:name, :type, :xpath)
23
+ end
24
+
25
+ def nokogiri
26
+ @nokogiri ||= Nokogiri::HTML(content, &:noblanks)
27
+ end
28
+
29
+ protected
30
+
31
+ def node_parser_class
32
+ ::Aranha::Parsers::Html::Node::Default
33
+ end
34
+
35
+ private
36
+
37
+ def node_parser
38
+ @node_parser ||= node_parser_class.new(fields)
39
+ end
40
+
41
+ def fields
42
+ self.class.fields.map { |f| [f.name, f.type, f.xpath] }
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/html/base'
4
+
5
+ module Aranha
6
+ module Parsers
7
+ module Html
8
+ class Item < Base
9
+ def data
10
+ @data ||= node_parser.parse(item_node)
11
+ end
12
+
13
+ def item_node
14
+ @item_node ||= begin
15
+ r = item_xpath ? nokogiri.at_xpath(item_xpath) : nokogiri
16
+ raise "Item node not found (Item xpath: #{item_xpath})" unless r
17
+
18
+ r
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/html/base'
4
+
5
+ module Aranha
6
+ module Parsers
7
+ module Html
8
+ class ItemList < Base
9
+ def data
10
+ items_data
11
+ end
12
+
13
+ def item_data(item)
14
+ item
15
+ end
16
+
17
+ def items_data
18
+ count = 0
19
+ @data ||= nokogiri.xpath(items_xpath).map do |m|
20
+ count += 1
21
+ item_data(node_parser.parse(m))
22
+ end
23
+ rescue StandardError => e
24
+ raise StandardError, "#{e.message} (Count: #{count})"
25
+ end
26
+
27
+ def items_xpath
28
+ raise "Class #{self.class} has no method \"#{__method__}\". Implement it"
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aranha
4
+ module Parsers
5
+ module Html
6
+ module Node
7
+ class Base
8
+ attr_reader :fields
9
+
10
+ def initialize(fields)
11
+ @fields = fields
12
+ end
13
+
14
+ def parse(node)
15
+ fields.map do |f|
16
+ [f[0], parse_field(node, f[2], f[1])]
17
+ rescue StandardError => e
18
+ raise StandardError, "#{e.message}\nFields: #{f}"
19
+ end.to_h
20
+ end
21
+
22
+ private
23
+
24
+ def parse_field(node, xpath, parser_method)
25
+ value_method = "#{parser_method}_value"
26
+ return send(value_method, node, xpath) if respond_to?(value_method)
27
+
28
+ raise "Method \"#{value_method}\" not found in #{self.class}"
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,70 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/html/node/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Aranha
7
+ module Parsers
8
+ module Html
9
+ module Node
10
+ class Default < ::Aranha::Parsers::Html::Node::Base
11
+ module NumericSupport
12
+ def integer_value(node, xpath)
13
+ r = string_value(node, xpath)
14
+ return nil if r.blank?
15
+
16
+ m = /\d+/.match(r)
17
+ raise "Integer not found in \"#{r}\"" unless m
18
+
19
+ m[0].to_i
20
+ end
21
+
22
+ def integer_optional_value(node, xpath)
23
+ r = string_value(node, xpath)
24
+ m = /\d+/.match(r)
25
+ m ? m[0].to_i : nil
26
+ end
27
+
28
+ def float_value(node, xpath)
29
+ parse_float(node, xpath, true)
30
+ end
31
+
32
+ def float_optional_value(node, xpath)
33
+ parse_float(node, xpath, false)
34
+ end
35
+
36
+ def us_decimal_value(node, xpath)
37
+ parse_us_decimal(node, xpath, true)
38
+ end
39
+
40
+ def us_decimal_optional_value(node, xpath)
41
+ parse_us_decimal(node, xpath, false)
42
+ end
43
+
44
+ private
45
+
46
+ def parse_float(node, xpath, required)
47
+ s = string_value(node, xpath)
48
+ m = /\d+(?:[\.\,](\d+))?/.match(s)
49
+ if m
50
+ m[0].delete('.').tr(',', '.').to_f
51
+ elsif required
52
+ raise "Float value not found in \"#{s}\""
53
+ end
54
+ end
55
+
56
+ def parse_us_decimal(node, xpath, required)
57
+ s = string_value(node, xpath)
58
+ m = /\d+(?:[\.\,](\d+))?/.match(s)
59
+ if m
60
+ m[0].delete(',').to_f
61
+ elsif required
62
+ raise "US decimal value not found in \"#{s}\""
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/html/node/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Aranha
7
+ module Parsers
8
+ module Html
9
+ module Node
10
+ class Default < ::Aranha::Parsers::Html::Node::Base
11
+ module StringSupport
12
+ def quoted_value(node, xpath)
13
+ s = string_value(node, xpath)
14
+ return '' unless s
15
+
16
+ m = /\"([^\"]+)\"/.match(s)
17
+ return m[1] if m
18
+
19
+ ''
20
+ end
21
+
22
+ def regxep(node, xpath, pattern)
23
+ s = string_value(node, xpath)
24
+ m = pattern.match(s)
25
+ return m if m
26
+
27
+ raise "Pattern \"#{pattern}\" not found in string \"#{s}\""
28
+ end
29
+
30
+ def string_value(node, xpath)
31
+ if node.at_xpath(xpath)
32
+ sanitize_string(node.at_xpath(xpath).text)
33
+ else
34
+ ''
35
+ end
36
+ end
37
+
38
+ def string_recursive_value(node, xpath, required = true)
39
+ root = node.at_xpath(xpath)
40
+ if root.blank?
41
+ return nil unless required
42
+
43
+ raise "No node found (Xpath: #{xpath})"
44
+ end
45
+ result = string_recursive(root)
46
+ return result if result.present?
47
+ return nil unless required
48
+
49
+ raise "String blank (Xpath: #{xpath})"
50
+ end
51
+
52
+ def string_recursive_optional_value(node, xpath)
53
+ string_recursive_value(node, xpath, false)
54
+ end
55
+
56
+ private
57
+
58
+ def sanitize_string(obj)
59
+ obj.to_s.tr("\u00A0", ' ').strip
60
+ end
61
+
62
+ def string_recursive(node)
63
+ return sanitize_string(node.text) if node.is_a?(::Nokogiri::XML::Text)
64
+
65
+ s = ''
66
+ node.children.each do |child|
67
+ child_s = string_recursive(child)
68
+ s += ' ' + child_s if child_s.present?
69
+ end
70
+ sanitize_string(s)
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/html/node/base'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Aranha
7
+ module Parsers
8
+ module Html
9
+ module Node
10
+ class Default < ::Aranha::Parsers::Html::Node::Base
11
+ require_sub __FILE__, include_modules: true
12
+
13
+ def array_value(node, xpath)
14
+ r = node.xpath(xpath).map { |n| n.text.strip }
15
+ r.join('|')
16
+ end
17
+
18
+ def join_value(node, xpath)
19
+ m = ''
20
+ node.xpath(xpath).each do |n|
21
+ m << n.text.strip
22
+ end
23
+ m
24
+ end
25
+
26
+ def duration_value(node, xpath)
27
+ m = /(\d+) m/.match(join_value(node, xpath))
28
+ m ? m[1].to_i : nil
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+
5
+ module Aranha
6
+ module Parsers
7
+ module Html
8
+ module Node
9
+ ::EacRubyUtils.require_sub __FILE__
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/require_sub'
4
+
5
+ module Aranha
6
+ module Parsers
7
+ module Html
8
+ ::EacRubyUtils.require_sub __FILE__
9
+ end
10
+ end
11
+ end