codeless_code 0.1.7 → 0.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +1 -1
  3. data/.reek.yml +14 -0
  4. data/.rubocop.yml +18 -0
  5. data/.ruby-version +1 -0
  6. data/{test/test_codeless_code.rb → .travis.yml} +12 -10
  7. data/Gemfile +5 -0
  8. data/Gemfile.lock +21 -0
  9. data/Guardfile +13 -1
  10. data/README.md +6 -0
  11. data/Rakefile +26 -11
  12. data/VERSION +1 -1
  13. data/bin/codeless_code +3 -1
  14. data/codeless_code.gemspec +33 -12
  15. data/lib/codeless_code/catalog.rb +3 -1
  16. data/lib/codeless_code/cli.rb +56 -24
  17. data/lib/codeless_code/commands/filter_fables.rb +15 -10
  18. data/lib/codeless_code/commands/list_translations.rb +3 -0
  19. data/lib/codeless_code/fable.rb +42 -53
  20. data/lib/codeless_code/fable_set.rb +8 -6
  21. data/lib/codeless_code/filters/builders.rb +4 -2
  22. data/lib/codeless_code/filters/composite.rb +3 -1
  23. data/lib/codeless_code/filters/date.rb +40 -30
  24. data/lib/codeless_code/filters/from_options.rb +45 -28
  25. data/lib/codeless_code/filters/headers/base.rb +61 -0
  26. data/lib/codeless_code/filters/{header_integer.rb → headers/integer.rb} +16 -19
  27. data/lib/codeless_code/filters/{header_string.rb → headers/string.rb} +12 -22
  28. data/lib/codeless_code/filters/lang.rb +3 -0
  29. data/lib/codeless_code/filters/translator.rb +7 -2
  30. data/lib/codeless_code/filters.rb +16 -8
  31. data/lib/codeless_code/formats/base.rb +20 -7
  32. data/lib/codeless_code/formats/parsers/base.rb +106 -0
  33. data/lib/codeless_code/formats/parsers/plain.rb +49 -0
  34. data/lib/codeless_code/formats/parsers/term.rb +79 -0
  35. data/lib/codeless_code/formats/plain.rb +21 -12
  36. data/lib/codeless_code/formats/raw.rb +2 -0
  37. data/lib/codeless_code/formats/term.rb +21 -15
  38. data/lib/codeless_code/language_set.rb +7 -4
  39. data/lib/codeless_code/options.rb +5 -3
  40. data/lib/codeless_code/renderers/fable.rb +13 -8
  41. data/lib/codeless_code/renderers/term_page.rb +46 -31
  42. data/lib/codeless_code.rb +119 -106
  43. data/test/codeless_code/commands/test_filter_fables.rb +89 -0
  44. data/test/codeless_code/filters/headers/test_integer.rb +86 -0
  45. data/test/codeless_code/filters/headers/test_string.rb +86 -0
  46. data/test/codeless_code/filters/test_builders.rb +4 -2
  47. data/test/codeless_code/filters/test_composite.rb +70 -0
  48. data/test/codeless_code/filters/test_date.rb +99 -0
  49. data/test/codeless_code/filters/test_langs.rb +50 -0
  50. data/test/codeless_code/filters/test_translator.rb +51 -0
  51. data/test/codeless_code/renderers/test_fable.rb +98 -0
  52. data/test/codeless_code/renderers/test_term_page.rb +87 -0
  53. data/test/codeless_code/test_catalog.rb +12 -5
  54. data/test/codeless_code/test_cli.rb +85 -0
  55. data/test/codeless_code/test_fable.rb +19 -10
  56. data/test/codeless_code/test_fable_set.rb +17 -5
  57. data/test/codeless_code/test_language_set.rb +16 -3
  58. data/test/codeless_code/test_options.rb +3 -11
  59. data/test/helper.rb +36 -10
  60. data/test/support/fs.rb +103 -0
  61. metadata +65 -11
  62. data/.document +0 -5
  63. data/data/README.md +0 -34
  64. data/lib/codeless_code/formats/plain_generator.rb +0 -157
  65. data/lib/codeless_code/formats/term_generator.rb +0 -167
  66. data/test/codeless_code/filters/test_header_integer.rb +0 -82
  67. data/test/codeless_code/filters/test_header_string.rb +0 -82
@@ -1,82 +0,0 @@
1
- # codeless_code filters and prints fables from http://thecodelesscode.com
2
- # Copyright (C) 2018 Jon Sangster
3
- #
4
- # This program is free software: you can redistribute it and/or modify it under
5
- # the terms of the GNU General Public License as published by the Free Software
6
- # Foundation, either version 3 of the License, or (at your option) any later
7
- # version.
8
- #
9
- # This program is distributed in the hope that it will be useful, but WITHOUT
10
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
- # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12
- # details.
13
- #
14
- # You should have received a copy of the GNU General Public License along with
15
- # this program. If not, see <https://www.gnu.org/licenses/>.
16
- require 'helper'
17
-
18
- module Filters
19
- class TestHeaderInteger < UnitTest
20
- def test_enabled?
21
- refute_predicate filter('Test'), :enabled?
22
- refute_predicate filter('Test', exclude: false), :enabled?
23
-
24
- assert_predicate filter('Test', exact: 1), :enabled?
25
- assert_predicate filter('Test', min: 1), :enabled?
26
- assert_predicate filter('Test', max: 1), :enabled?
27
- assert_predicate filter('Test', exclude: true), :enabled?
28
- end
29
-
30
- def test_call_exact
31
- assert_filter(exact: 100)
32
-
33
- refute_filter(exact: 123)
34
- end
35
-
36
- def test_call_min
37
- assert_filter(min: 99)
38
- assert_filter(min: 100)
39
-
40
- refute_filter(min: 101)
41
- end
42
-
43
- def test_call_max
44
- assert_filter(max: 100)
45
- assert_filter(max: 101)
46
-
47
- refute_filter(max: 99)
48
- end
49
-
50
- def test_call_exclude
51
- assert_filter('MissingHeader', exclude: true)
52
-
53
- refute_filter(exclude: true)
54
- end
55
-
56
- private
57
-
58
- def filter(key, **opts)
59
- Filters::HeaderInteger.new(key, **opts)
60
- end
61
-
62
- def assert_filter(key = 'Test', **opts)
63
- fab = Fable.new(test_io)
64
- filt = filter(key, **opts)
65
- assert filt.call(fab), format('Expected %p to match %p', opts, fab)
66
- end
67
-
68
- def refute_filter(key = 'Test', **opts)
69
- fab = Fable.new(test_io)
70
- filt = filter(key, **opts)
71
- refute filt.call(fab), format('Expected %p not to match %p', opts, fab)
72
- end
73
-
74
- def test_io
75
- mock_filter(<<-BODY.strip)
76
- Test: 100
77
-
78
- body
79
- BODY
80
- end
81
- end
82
- end
@@ -1,82 +0,0 @@
1
- # codeless_code filters and prints fables from http://thecodelesscode.com
2
- # Copyright (C) 2018 Jon Sangster
3
- #
4
- # This program is free software: you can redistribute it and/or modify it under
5
- # the terms of the GNU General Public License as published by the Free Software
6
- # Foundation, either version 3 of the License, or (at your option) any later
7
- # version.
8
- #
9
- # This program is distributed in the hope that it will be useful, but WITHOUT
10
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
- # FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12
- # details.
13
- #
14
- # You should have received a copy of the GNU General Public License along with
15
- # this program. If not, see <https://www.gnu.org/licenses/>.
16
- require 'helper'
17
-
18
- module Filters
19
- class TestHeaderString < UnitTest
20
- def test_enabled?
21
- refute_predicate filter('Test'), :enabled?
22
- refute_predicate filter('Test', exclude: false), :enabled?
23
-
24
- assert_predicate filter('Test', exact: 'foo'), :enabled?
25
- assert_predicate filter('Test', start_with: 'foo'), :enabled?
26
- assert_predicate filter('Test', end_with: 'foo'), :enabled?
27
- assert_predicate filter('Test', exclude: true), :enabled?
28
- end
29
-
30
- def test_call_exact
31
- assert_filter(exact: 'some text')
32
-
33
- refute_filter(exact: 'something else')
34
- end
35
-
36
- def test_call_start_with
37
- assert_filter(start_with: 'some')
38
- assert_filter(start_with: '')
39
-
40
- refute_filter(start_with: 'something else')
41
- end
42
-
43
- def test_call_end_with
44
- assert_filter(end_with: 'text')
45
- assert_filter(end_with: '')
46
-
47
- refute_filter(end_with: 'something else')
48
- end
49
-
50
- def test_call_exclude
51
- assert_filter('MissingHeader', exclude: true)
52
-
53
- refute_filter(exclude: true)
54
- end
55
-
56
- private
57
-
58
- def filter(key, **opts)
59
- Filters::HeaderString.new(key, **opts)
60
- end
61
-
62
- def assert_filter(key = 'Test', **opts)
63
- fab = Fable.new(test_io)
64
- filt = filter(key, **opts)
65
- assert filt.call(fab), format('Expected %p to match %p', opts, fab)
66
- end
67
-
68
- def refute_filter(key = 'Test', **opts)
69
- fab = Fable.new(test_io)
70
- filt = filter(key, **opts)
71
- refute filt.call(fab), format('Expected %p not to match %p', opts, fab)
72
- end
73
-
74
- def test_io
75
- mock_filter(<<-BODY.strip)
76
- Test: some text
77
-
78
- body
79
- BODY
80
- end
81
- end
82
- end