enolib 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +52 -0
  4. data/lib/enolib.rb +42 -0
  5. data/lib/enolib/constants.rb +16 -0
  6. data/lib/enolib/context.rb +220 -0
  7. data/lib/enolib/elements/element.rb +42 -0
  8. data/lib/enolib/elements/element_base.rb +141 -0
  9. data/lib/enolib/elements/empty.rb +9 -0
  10. data/lib/enolib/elements/field.rb +63 -0
  11. data/lib/enolib/elements/fieldset.rb +151 -0
  12. data/lib/enolib/elements/fieldset_entry.rb +15 -0
  13. data/lib/enolib/elements/list.rb +107 -0
  14. data/lib/enolib/elements/list_item.rb +13 -0
  15. data/lib/enolib/elements/missing/missing_element_base.rb +44 -0
  16. data/lib/enolib/elements/missing/missing_empty.rb +13 -0
  17. data/lib/enolib/elements/missing/missing_field.rb +13 -0
  18. data/lib/enolib/elements/missing/missing_fieldset.rb +29 -0
  19. data/lib/enolib/elements/missing/missing_fieldset_entry.rb +13 -0
  20. data/lib/enolib/elements/missing/missing_list.rb +33 -0
  21. data/lib/enolib/elements/missing/missing_section.rb +105 -0
  22. data/lib/enolib/elements/missing/missing_section_element.rb +53 -0
  23. data/lib/enolib/elements/missing/missing_value_element_base.rb +21 -0
  24. data/lib/enolib/elements/section.rb +560 -0
  25. data/lib/enolib/elements/section_element.rb +141 -0
  26. data/lib/enolib/elements/value_element_base.rb +79 -0
  27. data/lib/enolib/errors.rb +25 -0
  28. data/lib/enolib/errors/parsing.rb +136 -0
  29. data/lib/enolib/errors/selections.rb +83 -0
  30. data/lib/enolib/errors/validation.rb +146 -0
  31. data/lib/enolib/grammar_regexp.rb +103 -0
  32. data/lib/enolib/lookup.rb +235 -0
  33. data/lib/enolib/messages/de.rb +79 -0
  34. data/lib/enolib/messages/en.rb +79 -0
  35. data/lib/enolib/messages/es.rb +79 -0
  36. data/lib/enolib/parse.rb +9 -0
  37. data/lib/enolib/parser.rb +708 -0
  38. data/lib/enolib/register.rb +24 -0
  39. data/lib/enolib/reporters/html_reporter.rb +115 -0
  40. data/lib/enolib/reporters/reporter.rb +258 -0
  41. data/lib/enolib/reporters/terminal_reporter.rb +107 -0
  42. data/lib/enolib/reporters/text_reporter.rb +46 -0
  43. metadata +130 -0
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Enolib
4
+ class TextReporter < Reporter
5
+ INDICATORS = {
6
+ display: ' ',
7
+ emphasize: '>',
8
+ indicate: '*',
9
+ question: '?'
10
+ }
11
+
12
+ def initialize(context)
13
+ super(context)
14
+
15
+ gutter_header = context.messages::GUTTER_HEADER.rjust(5)
16
+ columns_header = " #{gutter_header} | #{context.messages::CONTENT_HEADER}"
17
+
18
+ source = context.source ? "-- #{source} -- \n\n" : ''
19
+
20
+ @gutter_width = gutter_header.length + 3
21
+ @header = "#{source}#{columns_header}\n"
22
+ end
23
+
24
+ private
25
+
26
+ def print_line(line, tag)
27
+ return "#{' ' * (@gutter_width - 5)}..." if tag == :omission
28
+
29
+ number = (line + Enolib::HUMAN_INDEXING).to_s
30
+ instruction = @index[line]
31
+
32
+ content =
33
+ if instruction
34
+ @context.input[instruction[:ranges][:line][0]...instruction[:ranges][:line][1]]
35
+ else
36
+ ''
37
+ end
38
+
39
+ " #{INDICATORS[tag]}#{number.rjust(@gutter_width - 3)} | #{content}"
40
+ end
41
+
42
+ def print
43
+ @header + @snippet.each_with_index.map { |tag, line| print_line(line, tag) if tag }.compact.join("\n")
44
+ end
45
+ end
46
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: enolib
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Simon Repp
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-04-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: deep-cover
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.7.1
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.7.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.8'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.8'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-cheki
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 0.1.0
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 0.1.0
55
+ description: The cross-language eno standard library
56
+ email: simon@fdpl.io
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - LICENSE.txt
62
+ - README.md
63
+ - lib/enolib.rb
64
+ - lib/enolib/constants.rb
65
+ - lib/enolib/context.rb
66
+ - lib/enolib/elements/element.rb
67
+ - lib/enolib/elements/element_base.rb
68
+ - lib/enolib/elements/empty.rb
69
+ - lib/enolib/elements/field.rb
70
+ - lib/enolib/elements/fieldset.rb
71
+ - lib/enolib/elements/fieldset_entry.rb
72
+ - lib/enolib/elements/list.rb
73
+ - lib/enolib/elements/list_item.rb
74
+ - lib/enolib/elements/missing/missing_element_base.rb
75
+ - lib/enolib/elements/missing/missing_empty.rb
76
+ - lib/enolib/elements/missing/missing_field.rb
77
+ - lib/enolib/elements/missing/missing_fieldset.rb
78
+ - lib/enolib/elements/missing/missing_fieldset_entry.rb
79
+ - lib/enolib/elements/missing/missing_list.rb
80
+ - lib/enolib/elements/missing/missing_section.rb
81
+ - lib/enolib/elements/missing/missing_section_element.rb
82
+ - lib/enolib/elements/missing/missing_value_element_base.rb
83
+ - lib/enolib/elements/section.rb
84
+ - lib/enolib/elements/section_element.rb
85
+ - lib/enolib/elements/value_element_base.rb
86
+ - lib/enolib/errors.rb
87
+ - lib/enolib/errors/parsing.rb
88
+ - lib/enolib/errors/selections.rb
89
+ - lib/enolib/errors/validation.rb
90
+ - lib/enolib/grammar_regexp.rb
91
+ - lib/enolib/lookup.rb
92
+ - lib/enolib/messages/de.rb
93
+ - lib/enolib/messages/en.rb
94
+ - lib/enolib/messages/es.rb
95
+ - lib/enolib/parse.rb
96
+ - lib/enolib/parser.rb
97
+ - lib/enolib/register.rb
98
+ - lib/enolib/reporters/html_reporter.rb
99
+ - lib/enolib/reporters/reporter.rb
100
+ - lib/enolib/reporters/terminal_reporter.rb
101
+ - lib/enolib/reporters/text_reporter.rb
102
+ homepage: https://eno-lang.org/enolib/
103
+ licenses:
104
+ - MIT
105
+ metadata:
106
+ bug_tracker_uri: https://github.com/eno-lang/enolib/issues
107
+ changelog_uri: https://github.com/eno-lang/enolib/blob/master/CHANGELOG.md
108
+ documentation_uri: https://eno-lang.org/enolib/
109
+ homepage_uri: https://eno-lang.org/enolib/
110
+ source_code_uri: https://github.com/eno-lang/enolib/
111
+ post_install_message:
112
+ rdoc_options: []
113
+ require_paths:
114
+ - lib
115
+ required_ruby_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ version: 2.4.0
120
+ required_rubygems_version: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ requirements: []
126
+ rubygems_version: 3.0.3
127
+ signing_key:
128
+ specification_version: 4
129
+ summary: The cross-language eno standard library
130
+ test_files: []