gm-notepad 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 639ecbd6c3ab1d9ca709d743c23b88fbfc2deab18a25254bf3c27c71d1c4328e
4
- data.tar.gz: e0adf1f064950a784c0a84349c92a7e10240990967a2c042166e2845e246d869
3
+ metadata.gz: 7132b07f0d60930e2ee6872e5b61cdc7c316b948911b73ba3a03ea2b55425b85
4
+ data.tar.gz: 06a8a66713c90f704e1756510f799a810b96e98233141100a17c122a99bbcc2b
5
5
  SHA512:
6
- metadata.gz: 45e58dd1073d6a3b269b7ee87ef30643833ba0f71737265a4197802577b9254bc97c2a91042ef566ee440c39ac4dc0f24782cedd61d1d54a7e8712d3c76e4b4c
7
- data.tar.gz: b06fd07045eb893e31c832117fa849cadeccd0447a0386c5ee09a46e9eae6bdbe87decadc72f4c9264b0a182eb4784d3e0f2358c241f1430146b4f69798b0ccb
6
+ metadata.gz: eb74e6192b9d77c1d48b46be76651a6fea524d481a88537f63ae20f041a8b3b0a370773ca7c6efe0c2ea293c4ddaa9bfa1e6b1196885829a8a35e7b5847a12a4
7
+ data.tar.gz: '04984f322e40f16053b54210262691e0336024bb73b9dd72c78a9b0f1262d1597e9d6f9bef4969970179366c0d62c16ba8a08bb6a78ed6a269059cb502756582'
data/README.md CHANGED
@@ -220,8 +220,7 @@ columns. _I am still working on retrieving by column names as well as rendering
220
220
  - [X] Allow configuration to specify table delimiter
221
221
  - [ ] Raise load error if table index is a "dice" expression
222
222
  - [X] Allow configuration for where to dump data
223
- - [ ] Normalize `WriteToTableHandler` to use a renderer
224
- - [ ] Normalize `WriteToTableHandler` to deliver on `grep` and `index` behavior
223
+ - [X] Normalize `WriteToTableHandler` to use a renderer
225
224
  - [X] Gracefully handle requesting an entry from a table with an index that does not exist (e.g. with test data try `+name[23]`)
226
225
  - [X] Gracefully handle `+name[]`, where "name" is a registered table
227
226
  - [X] Add time to live for line expansion (to prevent infinite loops); I suspect 100 to be reasonable
@@ -238,9 +237,9 @@ columns. _I am still working on retrieving by column names as well as rendering
238
237
  - [X] Support `\{\{table}-name}` You should be able to do `\{\{culture}-name}` and first evaluate to `{arabic-name}` and then get a value from the `arabic-name` table
239
238
  - [X] Ensure index names are lower-case
240
239
  - [ ] Hit 100% spec coverage
241
- - [ ] Create a "To Render Object"; When you parse the input, you push relevant lines to that "To Render Object". When you look at a table, you want to know what the column names are.
240
+ - [X] Create a "To Render Object"; When you parse the input, you push relevant lines to that "To Render Object". When you look at a table, you want to know what the column names are.
242
241
  - [X] Remove "defer" printing concept
243
- - [ ] Add ability to shell out; I would love to leverage the [swnt](https://github.com/nboughton/swnt) command line tool
242
+ - [X] Add ability to shell out; I would love to leverage the [swnt](https://github.com/nboughton/swnt) command line tool
244
243
 
245
244
  ### Stretch TODO
246
245
 
@@ -255,3 +254,4 @@ columns. _I am still working on retrieving by column names as well as rendering
255
254
  - [ ] Add force write results to `output`
256
255
  - [ ] Add option to dump all tables to the given directory
257
256
  - [ ] Add config that expands dice results while including the requested roll
257
+ - [ ] Normalize `WriteToTableHandler` to deliver on `grep` and `index` behavior
@@ -26,9 +26,11 @@ module Gm
26
26
  require "gm/notepad/input_handlers/query_table_names_handler"
27
27
  require "gm/notepad/input_handlers/write_to_table_handler"
28
28
  require "gm/notepad/input_handlers/write_line_handler"
29
+ require "gm/notepad/input_handlers/shell_out_handler"
29
30
  InputHandlerRegistry.new do |registry|
30
31
  registry.register(handler: InputHandlers::HelpHandler)
31
32
  registry.register(handler: InputHandlers::CommentHandler)
33
+ registry.register(handler: InputHandlers::ShellOutHandler)
32
34
  registry.register(handler: InputHandlers::QueryTableHandler)
33
35
  registry.register(handler: InputHandlers::QueryTableNamesHandler)
34
36
  registry.register(handler: InputHandlers::WriteToTableHandler)
@@ -0,0 +1,36 @@
1
+ require "gm/notepad/input_handlers/default_handler"
2
+ require "shellwords"
3
+ module Gm
4
+ module Notepad
5
+ module InputHandlers
6
+ class ShellOutHandler < DefaultHandler
7
+ SHELL_OUT_HANDLER_REGEXP = /^`/.freeze
8
+ TO_OUTPUT_REGEXP = /^\>/.freeze
9
+
10
+ def self.handles?(input:)
11
+ return false unless input.match(SHELL_OUT_HANDLER_REGEXP)
12
+ true
13
+ end
14
+
15
+ def after_initialize!
16
+ input.sub!(SHELL_OUT_HANDLER_REGEXP,'')
17
+ if input.match(TO_OUTPUT_REGEXP)
18
+ input.sub!(TO_OUTPUT_REGEXP, '')
19
+ to_output = true
20
+ else
21
+ to_output = false
22
+ end
23
+ command = input.to_s.split
24
+ response = `#{command.shelljoin}`.strip
25
+
26
+ input.for_rendering(
27
+ text: response,
28
+ to_interactive: true,
29
+ to_output: to_output,
30
+ expand_line: false
31
+ )
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -9,7 +9,6 @@ module Gm
9
9
  return true if input.match(/^\</)
10
10
  end
11
11
 
12
- attr_accessor :index, :grep, :table_name, :line
13
12
  NON_EXPANDING_CHARATER = '!'.freeze
14
13
  WITH_INDEX_REGEXP = %r{(?<declaration>\[(?<index>[^\]]+)\])}
15
14
  WITH_GREP_REGEXP = %r{(?<declaration>\/(?<grep>[^\/]+)/)}
@@ -20,12 +19,12 @@ module Gm
20
19
  table_name = match[:table_name]
21
20
  if index_match = WITH_INDEX_REGEXP.match(table_name)
22
21
  table_name = table_name.sub(index_match[:declaration], '')
23
- self.index = index_match[:index]
22
+ index = index_match[:index]
24
23
  elsif grep_match = WITH_GREP_REGEXP.match(table_name)
25
24
  table_name = table_name.sub(grep_match[:declaration], '')
26
- self.grep = grep_match[:grep]
25
+ grep = grep_match[:grep]
27
26
  end
28
- self.table_name = table_name.downcase
27
+ table_name = table_name.downcase
29
28
  else
30
29
  raise "I don't know what to do"
31
30
  end
@@ -1,5 +1,5 @@
1
1
  module Gm
2
2
  module Notepad
3
- VERSION = "0.0.12"
3
+ VERSION = "0.0.13"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gm-notepad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Friesen
@@ -198,6 +198,7 @@ files:
198
198
  - lib/gm/notepad/input_handlers/help_handler.rb
199
199
  - lib/gm/notepad/input_handlers/query_table_handler.rb
200
200
  - lib/gm/notepad/input_handlers/query_table_names_handler.rb
201
+ - lib/gm/notepad/input_handlers/shell_out_handler.rb
201
202
  - lib/gm/notepad/input_handlers/write_line_handler.rb
202
203
  - lib/gm/notepad/input_handlers/write_to_table_handler.rb
203
204
  - lib/gm/notepad/input_processor.rb