csv_plus_plus 0.0.5 → 0.1.1

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 (44) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +14 -0
  3. data/README.md +1 -0
  4. data/lib/csv_plus_plus/cell.rb +24 -8
  5. data/lib/csv_plus_plus/cli.rb +29 -16
  6. data/lib/csv_plus_plus/cli_flag.rb +10 -2
  7. data/lib/csv_plus_plus/code_section.rb +55 -3
  8. data/lib/csv_plus_plus/color.rb +19 -5
  9. data/lib/csv_plus_plus/google_options.rb +6 -2
  10. data/lib/csv_plus_plus/graph.rb +0 -1
  11. data/lib/csv_plus_plus/language/ast_builder.rb +68 -0
  12. data/lib/csv_plus_plus/language/benchmarked_compiler.rb +65 -0
  13. data/lib/csv_plus_plus/language/builtins.rb +46 -0
  14. data/lib/csv_plus_plus/language/cell_value.tab.rb +106 -134
  15. data/lib/csv_plus_plus/language/code_section.tab.rb +163 -192
  16. data/lib/csv_plus_plus/language/compiler.rb +75 -92
  17. data/lib/csv_plus_plus/language/entities/boolean.rb +3 -2
  18. data/lib/csv_plus_plus/language/entities/cell_reference.rb +10 -3
  19. data/lib/csv_plus_plus/language/entities/entity.rb +20 -8
  20. data/lib/csv_plus_plus/language/entities/function.rb +6 -4
  21. data/lib/csv_plus_plus/language/entities/function_call.rb +17 -5
  22. data/lib/csv_plus_plus/language/entities/number.rb +6 -4
  23. data/lib/csv_plus_plus/language/entities/runtime_value.rb +9 -8
  24. data/lib/csv_plus_plus/language/entities/string.rb +6 -4
  25. data/lib/csv_plus_plus/language/references.rb +22 -5
  26. data/lib/csv_plus_plus/language/runtime.rb +80 -22
  27. data/lib/csv_plus_plus/language/scope.rb +34 -39
  28. data/lib/csv_plus_plus/language/syntax_error.rb +10 -5
  29. data/lib/csv_plus_plus/lexer/lexer.rb +27 -13
  30. data/lib/csv_plus_plus/lexer/tokenizer.rb +35 -11
  31. data/lib/csv_plus_plus/modifier.rb +38 -18
  32. data/lib/csv_plus_plus/modifier.tab.rb +2 -2
  33. data/lib/csv_plus_plus/options.rb +20 -2
  34. data/lib/csv_plus_plus/row.rb +15 -4
  35. data/lib/csv_plus_plus/template.rb +26 -6
  36. data/lib/csv_plus_plus/version.rb +1 -1
  37. data/lib/csv_plus_plus/writer/excel.rb +2 -9
  38. data/lib/csv_plus_plus/writer/file_backer_upper.rb +22 -20
  39. data/lib/csv_plus_plus/writer/google_sheet_builder.rb +8 -10
  40. data/lib/csv_plus_plus/writer/google_sheets.rb +4 -10
  41. data/lib/csv_plus_plus/writer/rubyxl_builder.rb +23 -15
  42. data/lib/csv_plus_plus/writer/rubyxl_modifier.rb +15 -8
  43. data/lib/csv_plus_plus.rb +42 -8
  44. metadata +5 -2
data/lib/csv_plus_plus.rb CHANGED
@@ -1,25 +1,59 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'google/apis/drive_v3'
4
+ require 'google/apis/sheets_v4'
5
+ require 'googleauth'
6
+ require 'rubyXL'
7
+ require 'rubyXL/convenience_methods'
8
+ require 'set'
9
+
10
+ require_relative 'csv_plus_plus/cell'
3
11
  require_relative 'csv_plus_plus/cli'
12
+ require_relative 'csv_plus_plus/code_section'
13
+ require_relative 'csv_plus_plus/color'
4
14
  require_relative 'csv_plus_plus/error'
15
+ require_relative 'csv_plus_plus/language/builtins'
5
16
  require_relative 'csv_plus_plus/language/compiler'
17
+ require_relative 'csv_plus_plus/language/runtime'
18
+ require_relative 'csv_plus_plus/language/syntax_error'
19
+ require_relative 'csv_plus_plus/modifier'
20
+ require_relative 'csv_plus_plus/modifier.tab'
6
21
  require_relative 'csv_plus_plus/options'
22
+ require_relative 'csv_plus_plus/row'
23
+ require_relative 'csv_plus_plus/template'
7
24
  require_relative 'csv_plus_plus/writer'
8
25
 
9
- # A language for writing rich CSV data
26
+ # A programming language for writing rich CSV files
10
27
  module CSVPlusPlus
11
28
  # Parse the input into a +Template+ and write it to the desired format
29
+ #
30
+ # @param input [String] The csvpp input to compile
31
+ # @param filename [String, nil] The filename the input was read from. +nil+ if it is read from stdin.
32
+ # @param options [Options] The various options to compile with
12
33
  def self.apply_template_to_sheet!(input, filename, options)
13
34
  warn(options.verbose_summary) if options.verbose
14
35
 
15
- ::CSVPlusPlus::Language::Compiler.with_compiler(input:, filename:, options:) do |c|
16
- template = c.parse_template
36
+ runtime = ::CSVPlusPlus::Language::Runtime.new(input:, filename:)
37
+
38
+ ::CSVPlusPlus::Language::Compiler.with_compiler(options:, runtime:) do |compiler|
39
+ template = compiler.compile_template
40
+
41
+ warn(template.verbose_summary) if options.verbose
42
+
43
+ write_template(template, compiler, options)
44
+ end
45
+ end
17
46
 
18
- output = ::CSVPlusPlus::Writer.writer(options)
19
- c.outputting! do
20
- output.write_backup if options.backup
21
- output.write(template)
22
- end
47
+ # Write the results (and possibly make a backup) of a compiled +template+
48
+ #
49
+ # @param template [Template] The compiled template
50
+ # @param compiler [Compiler] The compiler currently in use
51
+ # @param options [Options] The options we're running with
52
+ def self.write_template(template, compiler, options)
53
+ output = ::CSVPlusPlus::Writer.writer(options)
54
+ compiler.outputting! do
55
+ output.write_backup if options.backup
56
+ output.write(template)
23
57
  end
24
58
  end
25
59
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: csv_plus_plus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Patrick Carroll
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-18 00:00:00.000000000 Z
11
+ date: 2023-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-apis-drive_v3
@@ -133,6 +133,9 @@ files:
133
133
  - lib/csv_plus_plus/google_api_client.rb
134
134
  - lib/csv_plus_plus/google_options.rb
135
135
  - lib/csv_plus_plus/graph.rb
136
+ - lib/csv_plus_plus/language/ast_builder.rb
137
+ - lib/csv_plus_plus/language/benchmarked_compiler.rb
138
+ - lib/csv_plus_plus/language/builtins.rb
136
139
  - lib/csv_plus_plus/language/cell_value.tab.rb
137
140
  - lib/csv_plus_plus/language/code_section.tab.rb
138
141
  - lib/csv_plus_plus/language/compiler.rb