srl_ruby 0.4.4 → 0.4.5

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
  SHA1:
3
- metadata.gz: 3fb6ab4f66212ea614cfbfab2f7b17049425844e
4
- data.tar.gz: 634718cf4229710eed018512b44f29781acebc4a
3
+ metadata.gz: 09e2d0e45cb7094a048508eaf8af5e3d081a279b
4
+ data.tar.gz: 50017e8623af0c0f034746541f430f21f4df7660
5
5
  SHA512:
6
- metadata.gz: 51ef6aead6683f95d965f2b9882f929af3d1b4f73cc8948982161d8f05843e196b39e21868c2620bab825f88697174b4b82378fc548e5f0f21b920717685378a
7
- data.tar.gz: bb3c755844c7ad3e655d423de9956c3ccafde8c9efc2df5841b995546f0cf83b7b3880afa8ded4cd888944eaae53d7c889e96e7e09b743ece728aa7041734727
6
+ metadata.gz: 911f5c56ba1fcd7fcefa97b23ca8d3f76c228f84d21eeb742c40415fa81763a2ba0d296b045f38e727be94ea2bc0517141cf7e593493596e98c4f8a4e55a2e95
7
+ data.tar.gz: e0b9b5e7a2a9a87520fe632f37e5ed89484be85d16f02519628ac44c0716dad669352cd86e465a46b225cc009d8e9eddc06328348e98243ad470c007cd0f2a8f
data/.rubocop.yml CHANGED
@@ -4,6 +4,9 @@ AllCops:
4
4
 
5
5
  Layout/CaseIndentation:
6
6
  Enabled: false
7
+
8
+ Layout/ClosingHeredocIndentation:
9
+ Enabled: false
7
10
 
8
11
  Layout/CommentIndentation:
9
12
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ ## [0.4.5] - 2019-01-02
2
+ ### Changed
3
+ - Minor code re-styling to please Rubocop 0.62.0.
4
+ - File `.travis.yml` Updated Ruby versions for CI builds
5
+ - File `.appveyor.yml` Sequence of Ruby versions refactored
6
+ - File `LICENSE.txt`: updated years in copyright text.
7
+
8
+ ### Fixed
9
+ - Method `ASTBuilder#reduce_pattern_sequence` was broken for lookbehind assertions.
10
+
1
11
  ## [0.4.4] - 2018-11-24
2
12
  ### Changed
3
13
  - File `srl_ruby.gemspec` Updated Rley dependency.
data/LICENSE.txt CHANGED
@@ -5,7 +5,7 @@ the 'srl_test' directory, which is subject to its own license.
5
5
 
6
6
  The MIT License (MIT)
7
7
 
8
- Copyright (c) 2018 Dimitri Geshef
8
+ Copyright (c) 2018-2019 Dimitri Geshef
9
9
 
10
10
  Permission is hereby granted, free of charge, to any person obtaining a copy
11
11
  of this software and associated documentation files (the "Software"), to deal
data/appveyor.yml CHANGED
@@ -2,17 +2,16 @@ version: '{build}'
2
2
  max_jobs: 3
3
3
  environment:
4
4
  matrix:
5
- - Ruby_version: 21
6
- - Ruby_version: 21-x64
7
- - Ruby_version: 22
8
- - Ruby_version: 22-x64
9
- - Ruby_version: 23
5
+ - Ruby_version: 25-x64
6
+ - Ruby_version: 24-x64
10
7
  - Ruby_version: 23-x64
11
- - Ruby_version: 24
12
- - Ruby_version: 24-x64
8
+ - Ruby_version: 22-x64
9
+ - Ruby_version: 21-x64
13
10
  - Ruby_version: 25
14
- - Ruby_version: 25-x64
15
-
11
+ - Ruby_version: 24
12
+ - Ruby_version: 23
13
+ - Ruby_version: 22
14
+ - Ruby_version: 21
16
15
  # These are failing
17
16
  # - Ruby_version: 26
18
17
  # - Ruby_version: 26-x64
data/bin/srl2ruby CHANGED
@@ -23,11 +23,12 @@ class Srl2RubyProg
23
23
  def run!(file_names)
24
24
  if cli_options.include?(:pattern)
25
25
  srl_source = cli_options[:pattern]
26
- process_srl(srl_source)
26
+ process_srl(srl_source)
27
27
  end
28
28
  file_names.each do |srl_file|
29
29
  fname = validate_filename(srl_file)
30
30
  next unless file_exist?(fname)
31
+
31
32
  puts "Parsing file '#{fname}'"
32
33
  srl_source = File.read(fname)
33
34
  process_srl(srl_source)
@@ -76,7 +77,7 @@ class Srl2RubyProg
76
77
 
77
78
  exists
78
79
  end
79
-
80
+
80
81
  def process_srl(srl_source)
81
82
  result = SrlRuby.parse(srl_source)
82
83
  destination = $stdout
@@ -85,7 +86,7 @@ class Srl2RubyProg
85
86
  destination = File.open(filepath, 'w')
86
87
  end
87
88
  puts "Writing to file '#{filepath}'" unless destination == $stdout
88
- destination.puts emit_code(template, srl_source, result)
89
+ destination.puts emit_code(template, srl_source, result)
89
90
  end
90
91
 
91
92
  def emit_code(template, srl_source, regexp)
@@ -13,7 +13,7 @@ class Srl2RubyCLIParser < OptionParser
13
13
 
14
14
  heading
15
15
  separator 'Options:'
16
- add_p_option
16
+ add_p_option
17
17
  add_o_option
18
18
  add_t_option
19
19
  separator ''
@@ -63,14 +63,14 @@ DESCR
63
63
  @parsed_options[:output] = pathname
64
64
  end
65
65
  end
66
-
66
+
67
67
  def add_p_option
68
68
  explanation = 'One-liner SRL pattern.'
69
69
 
70
70
  on '-p', '--pattern SRL_PATT', explanation do |pattern_arg|
71
71
  @parsed_options[:pattern] = pattern_arg.gsub(/^'|'$/, '')
72
72
  end
73
- end
73
+ end
74
74
 
75
75
  def add_t_option
76
76
  explanation = <<-EXPLANATION
@@ -43,6 +43,7 @@ module Regex # This module is used as a namespace
43
43
  def validated_range(theLowerBound, theUpperBound)
44
44
  msg = 'Character range error: lower bound is greater than upper bound.'
45
45
  raise StandardError, msg if theLowerBound.codepoint > theUpperBound.codepoint
46
+
46
47
  return [theLowerBound, theUpperBound]
47
48
  end
48
49
  end # class
@@ -103,6 +103,7 @@ module Regex # This module is used as a namespace
103
103
  def self.esc2codepoint(esc_seq)
104
104
  msg = "Escape sequence #{esc_seq} does not begin with a backslash (\)."
105
105
  raise StandardError, msg unless esc_seq[0] == '\\'
106
+
106
107
  result = (esc_seq.length == 2) ? digram2codepoint(esc_seq) : esc_number2codepoint(esc_seq)
107
108
 
108
109
  return result
@@ -155,6 +156,7 @@ module Regex # This module is used as a namespace
155
156
  # Otherwise the character corresponding to the codepoint is returned.
156
157
  def text_repr
157
158
  return char if lexeme.nil?
159
+
158
160
  return lexeme.dup
159
161
  end
160
162
 
@@ -66,6 +66,7 @@ module Regex # This module is used as a namespace
66
66
  def valid_lower_bound(aLowerBound)
67
67
  err_msg = "Invalid lower bound of repetition count #{aLowerBound}"
68
68
  raise StandardError, err_msg unless aLowerBound.kind_of?(Integer)
69
+
69
70
  return aLowerBound
70
71
  end
71
72
 
@@ -30,6 +30,7 @@ module Regex # This module is used as a namespace
30
30
  children.each(&:done!)
31
31
  children.each_with_index do |child, index|
32
32
  break if index == children.size - 1
33
+
33
34
  next_child = children[index + 1]
34
35
  if next_child.kind_of?(Lookaround) && next_child.dir == :behind
35
36
  # Swap children: lookbehind regex must precede pattern
@@ -57,6 +58,7 @@ module Regex # This module is used as a namespace
57
58
  top = visit_stack.pop
58
59
  if top.kind_of?(Array)
59
60
  next if top.empty?
61
+
60
62
  currChild = top.pop
61
63
  visit_stack.push top
62
64
  else
@@ -44,6 +44,7 @@ module SrlRuby
44
44
  end
45
45
  end
46
46
  return if regexp_opts.empty?
47
+
47
48
  new_root = Regex::MatchOption.new(tree_root, regexp_opts)
48
49
  result.instance_variable_set(:@root, new_root)
49
50
  end
@@ -120,7 +121,13 @@ module SrlRuby
120
121
 
121
122
  # rule('pattern' => %w[pattern separator sub_pattern]).as 'pattern_sequence'
122
123
  def reduce_pattern_sequence(_production, _range, _tokens, theChildren)
123
- Regex::Concatenation.new(theChildren[0], theChildren[2])
124
+ third_member = theChildren[2]
125
+ if third_member.kind_of?(Regex::Lookaround) && third_member.dir == :behind
126
+ Regex::Concatenation.new(theChildren[2], theChildren[0])
127
+ else
128
+ Regex::Concatenation.new(theChildren[0], theChildren[2])
129
+ end
130
+
124
131
  end
125
132
 
126
133
  # rule('pattern' => 'sub_pattern').as 'basic_pattern'
@@ -132,7 +132,7 @@ module SrlRuby
132
132
  token = build_token('LETTER_LIT', lexeme)
133
133
  elsif (lexeme = scanner.scan(/[a-zA-Z_][a-zA-Z0-9_]+/))
134
134
  keyw = @@keywords[lexeme.upcase]
135
- tok_type = keyw ? keyw : 'IDENTIFIER'
135
+ tok_type = keyw || 'IDENTIFIER'
136
136
  token = build_token(tok_type, lexeme)
137
137
  elsif (lexeme = scanner.scan(/[^,"\s]{2,}/))
138
138
  token = build_token('CHAR_CLASS', lexeme)
@@ -1,3 +1,3 @@
1
1
  module SrlRuby
2
- VERSION = '0.4.4'.freeze
2
+ VERSION = '0.4.5'.freeze
3
3
  end
@@ -84,7 +84,7 @@ module Acceptance
84
84
  @state = :expecting_srl if lexeme == 'srl:'
85
85
  elsif (lexeme = scanner.scan(/[a-zA-Z_][a-zA-Z0-9_]*/))
86
86
  keyw = @@keywords[lexeme]
87
- token_type = keyw ? keyw : 'IDENTIFIER'
87
+ token_type = keyw || 'IDENTIFIER'
88
88
  token = build_token(token_type, lexeme)
89
89
  elsif (lexeme = scanner.scan(/"([^"]|\\")*"/)) # Double quotes literal?
90
90
  unquoted = lexeme.gsub(/(^")|("$)/, '')
data/srl_ruby.gemspec CHANGED
@@ -46,7 +46,7 @@ Gem::Specification.new do |spec|
46
46
  spec.email = ['famished.tiger@yahoo.com']
47
47
 
48
48
  spec.description = <<-DESCR
49
- A compiler and library that transforms highly readable Simple Regex Language
49
+ A compiler and library that transforms highly readable Simple Regex Language
50
50
  patterns into regular expressions.
51
51
  DESCR
52
52
  spec.summary = <<-SUMMARY
@@ -66,7 +66,7 @@ SUMMARY
66
66
  spec.required_ruby_version = '>= 2.1.0'
67
67
 
68
68
  # Runtime dependencies
69
- spec.add_dependency 'rley', '~> 0.7'
69
+ spec.add_dependency 'rley', '~> 0.7.00'
70
70
 
71
71
  # Development dependencies
72
72
  spec.add_development_dependency 'bundler', '~> 1.16'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: srl_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.4
4
+ version: 0.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dimitri Geshef
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-24 00:00:00.000000000 Z
11
+ date: 2019-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rley
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.7'
19
+ version: 0.7.00
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.7'
26
+ version: 0.7.00
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -80,8 +80,9 @@ dependencies:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
- description: " A compiler and library that transforms highly readable Simple Regex
84
- Language \n patterns into regular expressions.\n"
83
+ description: |2
84
+ A compiler and library that transforms highly readable Simple Regex Language
85
+ patterns into regular expressions.
85
86
  email:
86
87
  - famished.tiger@yahoo.com
87
88
  executables: