srl_ruby 0.4.4 → 0.4.5

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
  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: