rtext 0.10.0 → 0.11.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ffae86ba1a7ca648c0b1d81cbe6f35071a1f60ab
4
- data.tar.gz: 811cbb7addac61eb840aa6b8ec65290ff2323c88
3
+ metadata.gz: 5faa974d72aeb5691970df505d698e80f0ea9a56
4
+ data.tar.gz: f9a3321097146cd6695457bb806c609fee79f308
5
5
  SHA512:
6
- metadata.gz: 5051b3111eb4537a900d98fabe77f0970e2ec0af6e7be8f61bfa2e6a2f1b74323579d3159b550ca6e08e9c4fd8b68d95b4b3a0071080474a15d325fa3961b30d
7
- data.tar.gz: 7d71c71858cf2a5ffb6a6f43e01e50b03fa4bc3fb05a9ff2cdaea5c295134dc4a0d8b3428ef87451ce737204fbb8a3d5116ff60ff72f2d0f0f1b7a11763553c5
6
+ metadata.gz: 294b78983c8de3f0d5dea3df20b4259d2356a2fce258444d05cf0b8a83eab825abd8b0f05a257791b16040f3d7bd23b252d44c9122a2d734d94593052461b201
7
+ data.tar.gz: 10f507771eb3efe33214bbed1bf9e11c3030b0b8ee0b650c98fe037edaefa64a2bcbc82a3e11c6f2e2879f73128090d1a1256b47d4cd8b0584bd14fe81e52d2c
data/CHANGELOG CHANGED
@@ -117,4 +117,13 @@
117
117
 
118
118
  =0.10.0
119
119
 
120
- * Switch to Ruby 2.7
120
+ * Switch to Ruby 2.7
121
+
122
+ =0.11.0
123
+
124
+ * Add support for Ruby up to 3.2
125
+
126
+ =0.11.1
127
+
128
+ * Fix column indixes to consistently start at 1
129
+ * Fix algorithm of context creation if inside comment/annotation
data/Project.yaml CHANGED
@@ -1,5 +1,5 @@
1
1
  name: rtext
2
- version: 0.10.0
2
+ version: 0.11.1
3
3
  git: https://github.com/mthiede/rtext.git
4
4
  summary: Ruby Textual Modelling
5
5
  email: martin dot thiede at gmx de
@@ -8,8 +8,11 @@ description: RText can be used to derive textual languages from an RGen metamode
8
8
  authors: [Martin Thiede]
9
9
  dependencies:
10
10
  http://rubygems.org:
11
- - {name: rgen, version: ['>= 0.9.0', '< 0.10']}
11
+ - {name: rgen, version: ['>= 0.10.0', '< 0.11']}
12
12
  - {name: filelock, version: ['>= 1.1.1', '< 1.2']}
13
+ - {name: rake, version: ['>= 13.0.0', '< 14.0'], development: true}
14
+ - {name: minitest, version: ['>= 5.20.0', '< 6.0'], development: true}
15
+ - {name: minitest-fail-fast, version: ['>= 0.1.0', '< 0.2'], development: true}
13
16
  rdoc_options: [--main, README.rdoc, -x, test]
14
17
  extra_rdoc_files: [README.rdoc, CHANGELOG, MIT-LICENSE, RText_Users_Guide, RText_Protocol]
15
18
  encrypt_sources: false
@@ -117,14 +117,15 @@ module ContextBuilder
117
117
  if context_lines.empty?
118
118
  context_lines << ""
119
119
  end
120
- position_in_line ||= context_lines.last.size
120
+ position_in_line ||= context_lines.last.size + 1
121
121
  # cut off last line right of cursor
122
- if position_in_line < 1
122
+ # raise "position_in_line starts at index 1!" if position_in_line == 0
123
+ if position_in_line <= 1
123
124
  tail = context_lines.pop
124
125
  context_lines << ""
125
126
  else
126
- tail = context_lines.last[position_in_line..-1]
127
- context_lines << context_lines.pop[0..position_in_line-1]
127
+ tail = context_lines.last[position_in_line-1..-1]
128
+ context_lines << context_lines.pop[0..position_in_line-2]
128
129
  end
129
130
  before_brace = !tail.nil? && !tail.match(/^\s*\{/).nil?
130
131
  before_bracket = !tail.nil? && !tail.match(/^\s*\[/).nil?
@@ -120,7 +120,12 @@ def ensure_process_cleanup(process_id, out_file, timeout)
120
120
  ensure
121
121
  unless process_id.nil?
122
122
  begin
123
- Process.kill('QUIT', process_id)
123
+ begin
124
+ Process.kill('QUIT', process_id)
125
+ rescue ArgumentError
126
+ # SIGQUIT not supported in Ruby 2.7 on Windows
127
+ Process.kill('KILL', process_id)
128
+ end
124
129
  rescue Errno::ESRCH => _
125
130
  end
126
131
  end
@@ -8,6 +8,7 @@ class Context
8
8
  # returns the extracted lines and the new position in the last line
9
9
  def extract(lines, pos)
10
10
  lines = filter_lines(lines)
11
+ return nil if lines.nil?
11
12
  lines, new_pos = join_lines(lines, pos)
12
13
  non_ignored_lines = 0
13
14
  array_nesting = 0
@@ -49,10 +50,16 @@ def extract(lines, pos)
49
50
  end
50
51
 
51
52
  def filter_lines(lines)
52
- lines.reject { |l|
53
- ls = l.strip
54
- ls[0..0] == "@" || ls[0..0] == "#"
55
- }
53
+ ret = []
54
+ lines.each_with_index do |line, i|
55
+ ls = line.strip
56
+ if ls.start_with?("@") || ls.start_with?("#")
57
+ return nil if i+1 == lines.length
58
+ else
59
+ ret << line
60
+ end
61
+ end
62
+ ret
56
63
  end
57
64
 
58
65
  # when joining two lines, all whitespace is preserved in order to simplify the algorithm
@@ -112,18 +112,18 @@ class Instantiator
112
112
  element = clazz.new
113
113
  @env << element if @env
114
114
  @root_elements << element if is_root
115
- unlabled_args = @lang.unlabled_arguments(clazz.ecore).name
115
+ unlabeled_args = @lang.unlabled_arguments(clazz.ecore).name
116
116
  di_index = 0
117
117
  defined_args = {}
118
118
  arg_list.each do |a|
119
119
  if is_labeled(a)
120
120
  set_argument(element, a[0].value, a[1], defined_args, command.line)
121
121
  else
122
- if di_index < unlabled_args.size
123
- set_argument(element, unlabled_args[di_index], a, defined_args, command.line)
122
+ if di_index < unlabeled_args.size
123
+ set_argument(element, unlabeled_args[di_index], a, defined_args, command.line)
124
124
  di_index += 1
125
125
  elsif a != nil
126
- problem("Unexpected unlabled argument, #{unlabled_args.size} unlabled arguments expected", command.line)
126
+ problem("Unexpected unlabeled argument, #{unlabeled_args.size} unlabeled arguments expected", command.line)
127
127
  end
128
128
  end
129
129
  end
@@ -249,9 +249,9 @@ class Instantiator
249
249
  begin
250
250
  v_value = v.value
251
251
  feature_instance_class = feature.eType.instanceClass
252
- if feature_instance_class == String && (v_value.is_a?(Float) || v_value.is_a?(Fixnum))
252
+ if feature_instance_class == String && (v_value.is_a?(Float) || v_value.is_a?(Integer))
253
253
  element.setOrAddGeneric(feature.name, v_value.to_s)
254
- elsif feature_instance_class == Float && v_value.is_a?(Fixnum)
254
+ elsif feature_instance_class == Float && v_value.is_a?(Integer)
255
255
  element.setOrAddGeneric(feature.name, v_value.to_f)
256
256
  else
257
257
  element.setOrAddGeneric(feature.name, v_value)
@@ -19,7 +19,7 @@ def detect(lines, column)
19
19
  # context model since the context builder removes it as "just being completed"
20
20
  lines.last.concat(" ")
21
21
  current_line = lines.last
22
- context = ContextBuilder.build_context(@lang, lines, lines.last.size)
22
+ context = ContextBuilder.build_context(@lang, lines, lines.last.size + 1)
23
23
  tokens = tokenize(lines.last, @lang.reference_regexp)
24
24
  token = tokens.find{|t| t.scol && t.scol <= column && t.ecol && t.ecol >= column}
25
25
  if context && context.element && token &&
@@ -29,7 +29,7 @@ def detect(lines, column)
29
29
  else
30
30
  line_prefix = ""
31
31
  end
32
- context2 = ContextBuilder.build_context(@lang, lines, line_prefix.size)
32
+ context2 = ContextBuilder.build_context(@lang, lines, line_prefix.size + 1)
33
33
  # for command prefixes nested below a lable, the context element and feature are
34
34
  # the parent element and feature, this is not what's expected here
35
35
  if line_prefix =~ /^\s*\w*$/
data/lib/rtext/service.rb CHANGED
@@ -188,7 +188,7 @@ class Service
188
188
 
189
189
  def content_complete(sock, request, response)
190
190
  # column numbers start at 1
191
- linepos = request["column"]-1
191
+ linepos = request["column"]
192
192
  lines = request["context"]
193
193
  version = request["version"].to_i
194
194
  lang = @service_provider.language
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rtext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Thiede
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-30 00:00:00.000000000 Z
11
+ date: 2023-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rgen
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.9.0
19
+ version: 0.10.0
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '0.10'
22
+ version: '0.11'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: 0.9.0
29
+ version: 0.10.0
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '0.10'
32
+ version: '0.11'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: filelock
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -50,6 +50,66 @@ dependencies:
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '1.2'
53
+ - !ruby/object:Gem::Dependency
54
+ name: rake
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 13.0.0
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '14.0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 13.0.0
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '14.0'
73
+ - !ruby/object:Gem::Dependency
74
+ name: minitest
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: 5.20.0
80
+ - - "<"
81
+ - !ruby/object:Gem::Version
82
+ version: '6.0'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: 5.20.0
90
+ - - "<"
91
+ - !ruby/object:Gem::Version
92
+ version: '6.0'
93
+ - !ruby/object:Gem::Dependency
94
+ name: minitest-fail-fast
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: 0.1.0
100
+ - - "<"
101
+ - !ruby/object:Gem::Version
102
+ version: '0.2'
103
+ type: :development
104
+ prerelease: false
105
+ version_requirements: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: 0.1.0
110
+ - - "<"
111
+ - !ruby/object:Gem::Version
112
+ version: '0.2'
53
113
  description: RText can be used to derive textual languages from an RGen metamodel
54
114
  with very little effort.
55
115
  email: