syntax_search 0.1.1 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 64d391c1ee60a9784b3b53ec9c404739b06dd390d263793795110cdc555bdfb0
4
- data.tar.gz: 70cbe011308ad0c94c88240e5aadf4e7e024b0f83ff65377b99fe82550779ebc
3
+ metadata.gz: 9efb5d44fe2c979f66237173d1bf7b215a1bcc8003b4a96cb595eabbcac606c6
4
+ data.tar.gz: 5757f68cdf7dace8980bb31b49a756b858fba8f7260156640621832374b4e635
5
5
  SHA512:
6
- metadata.gz: 119be89600a50534968502162df65d972a4fe1ecd93a70378e843cbe22effbe0d3f4a7fb12761740efa95152d81bf3a30abc79401cfbff4ba8ad89e9b9390a47
7
- data.tar.gz: aa93927ba70886754499d263087c89a546d2791b8de3911175e365d7aa111b1d8d659dd3ae015e8297b75b62b9c4e4958c8e9f6c08ac9a4d444f18ccdc7ad8fb
6
+ metadata.gz: b9fb23706395a520d52af51ea2a441d972115d6cd85a9e4048d17424d0e7077e679cd23d6ec1a9f43f4fde1e6d29ab8670906dc27451b730f2dab4c5c753789f
7
+ data.tar.gz: 13209882976145efe8087a5c5d52e1980d5295c4b7ab51628dc92007f6b83900933fb2e08046bac7ccf118056289bba04f3f5597b70400c74c32969468e31409
@@ -0,0 +1,13 @@
1
+ name: Check Changelog
2
+
3
+ on:
4
+ pull_request:
5
+ types: [opened, reopened, edited, synchronize]
6
+ jobs:
7
+ build:
8
+ runs-on: ubuntu-latest
9
+ steps:
10
+ - uses: actions/checkout@v1
11
+ - name: Check that CHANGELOG is touched
12
+ run: |
13
+ cat $GITHUB_EVENT_PATH | jq .pull_request.title | grep -i '\[\(\(changelog skip\)\|\(ci skip\)\)\]' || git diff remotes/origin/${{ github.base_ref }} --name-only | grep CHANGELOG.md
@@ -1,8 +1,13 @@
1
1
  ## HEAD (unreleased)
2
2
 
3
+ ## 0.1.2
4
+
5
+ - Codeblocks in output are now indented with 4 spaces and "code fences" are removed (https://github.com/zombocom/syntax_search/pull/11)
6
+ - "Unmatched end" and "missing end" not generate different error text instructions (https://github.com/zombocom/syntax_search/pull/10)
7
+
3
8
  ## 0.1.1
4
9
 
5
- - Fix error message detection to fire on more rubies ()
10
+ - Fire search on both unexpected end-of-input and unexected end (https://github.com/zombocom/syntax_search/pull/8)
6
11
 
7
12
  ## 0.1.0
8
13
 
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- syntax_search (0.1.1)
4
+ syntax_search (0.1.2)
5
5
  parser
6
6
 
7
7
  GEM
@@ -23,7 +23,7 @@ module SyntaxErrorSearch
23
23
  self.call(
24
24
  source: Pathname(filename).read,
25
25
  filename: filename,
26
- terminal: true
26
+ terminal: true,
27
27
  )
28
28
  end
29
29
 
@@ -40,6 +40,7 @@ module SyntaxErrorSearch
40
40
  blocks: blocks,
41
41
  filename: filename,
42
42
  terminal: terminal,
43
+ invalid_type: invalid_type(source),
43
44
  io: $stderr
44
45
  ).call
45
46
  end
@@ -122,11 +123,30 @@ module SyntaxErrorSearch
122
123
 
123
124
  Parser::CurrentRuby.parse(source)
124
125
  true
125
- rescue Parser::SyntaxError
126
+ rescue Parser::SyntaxError => e
127
+ yield e if block_given?
126
128
  false
127
129
  ensure
128
130
  $stderr = stderr if stderr
129
131
  end
132
+
133
+ def self.invalid_type(source)
134
+ message = nil
135
+ self.valid?(source) do |error|
136
+ message = error.message
137
+ end
138
+
139
+ case message
140
+ when nil
141
+ :none
142
+ when /token kEND/
143
+ :unmatched_end
144
+ when /token \$end/ #
145
+ :missing_end
146
+ else
147
+ raise "Unexpected message #{message}"
148
+ end
149
+ end
130
150
  end
131
151
 
132
152
  require_relative "syntax_search/code_line"
@@ -5,7 +5,7 @@ module SyntaxErrorSearch
5
5
  class DisplayInvalidBlocks
6
6
  attr_reader :filename
7
7
 
8
- def initialize(blocks:, io: $stderr, filename: nil, terminal: false)
8
+ def initialize(blocks:, io: $stderr, filename: nil, terminal: false, invalid_type: :unmatched_end)
9
9
  @terminal = terminal
10
10
  @filename = filename
11
11
  @io = io
@@ -16,6 +16,7 @@ module SyntaxErrorSearch
16
16
  @digit_count = @code_lines.last&.line_number.to_s.length
17
17
 
18
18
  @invalid_line_hash = @lines.each_with_object({}) {|line, h| h[line] = true }
19
+ @invalid_type = invalid_type
19
20
  end
20
21
 
21
22
  def call
@@ -33,15 +34,28 @@ module SyntaxErrorSearch
33
34
  end
34
35
 
35
36
  private def found_invalid_blocks
36
- @io.puts <<~EOM
37
+ case @invalid_type
38
+ when :missing_end
39
+ @io.puts <<~EOM
37
40
 
38
- SyntaxErrorSearch: A syntax error was detected
41
+ SyntaxSearch: Missing `end` detected
39
42
 
40
- This code has an unmatched `end` this is caused by either
41
- missing a syntax keyword (`def`, `do`, etc.) or inclusion
42
- of an extra `end` line
43
+ This code has a missing `end`. Ensure that all
44
+ syntax keywords (`def`, `do`, etc.) have a matching `end`.
45
+
46
+ EOM
47
+ when :unmatched_end
48
+ @io.puts <<~EOM
49
+
50
+ SyntaxSearch: Unmatched `end` detected
51
+
52
+ This code has an unmatched `end`. Ensure that all `end` lines
53
+ in your code have a matching syntax keyword (`def`, `do`, etc.)
54
+ and that you don't have any extra `end` lines.
55
+
56
+ EOM
57
+ end
43
58
 
44
- EOM
45
59
  @io.puts("file: #{filename}") if filename
46
60
  @io.puts <<~EOM
47
61
  simplified:
@@ -50,16 +64,13 @@ module SyntaxErrorSearch
50
64
  EOM
51
65
  end
52
66
 
53
- def indent(string, with: " ")
67
+ def indent(string, with: " ")
54
68
  string.each_line.map {|l| with + l }.join
55
69
  end
56
70
 
57
71
  def code_block
58
72
  string = String.new("")
59
- string << "```\n"
60
- # string << "#".rjust(@digit_count) + " filename: #{filename}\n\n" if filename
61
73
  string << code_with_lines
62
- string << "```\n"
63
74
  string
64
75
  end
65
76
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SyntaxErrorSearch
4
- VERSION = "0.1.1"
4
+ VERSION = "0.1.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: syntax_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - schneems
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-11-11 00:00:00.000000000 Z
11
+ date: 2020-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser
@@ -34,6 +34,7 @@ extensions: []
34
34
  extra_rdoc_files: []
35
35
  files:
36
36
  - ".circleci/config.yml"
37
+ - ".github/workflows/check_changelog.yml"
37
38
  - ".gitignore"
38
39
  - ".rspec"
39
40
  - ".travis.yml"