livetext 0.9.47 → 0.9.48

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: c1f67c2785b935c3c940db118d04f6613e186df48b4473659e14c69089e23a35
4
- data.tar.gz: 6b08485471ca1c9aa2d44a83d9e5670f876999e70f3c20e975caa8fb3aadc2ac
3
+ metadata.gz: 91574e23cbcbe19d5c06d7c1fbbe8fbbe33ca29b06511da502b532bbb28519c6
4
+ data.tar.gz: 553612fc90e8a6f3676158c3e98997415d0b568fb811fc9d273f8a2ae47478b0
5
5
  SHA512:
6
- metadata.gz: 1becbb55d5267f754ee0c3dacc3c894fc6814aefd71386aaf0bc3f77f4dbefe76554d42ca78ade718e027b96874616219582dfcb0a4295eae10aac12bff11481
7
- data.tar.gz: f169d21ca5e99b17869e10836fe4b4ae39cc5a239408562d95a3928e89b954f42184b2b51c8603e9d7570f3578acd81761417c56be7217942c7f4a8624089e8c
6
+ metadata.gz: 909f58be5cd6ee9d11262bb7213d2fab733d379ac678953c0e0225486cdc7a24152b8f5e5b208f2522bf4ea629abd9597c14b3cce1988b19c89b3b92d96f729b
7
+ data.tar.gz: e6e9aaec3cba4d466601d9b4d2f2d96bbb3c3697640684d96c23d70b41843d6a5674a4f41e659355df45a72c59842f7e91df44c76455a430425836db17f1e8e7
@@ -2,59 +2,8 @@
2
2
  # Class Livetext reopened (top level).
3
3
 
4
4
  class Livetext
5
-
6
5
  include Helpers
7
6
 
8
- class Variables # FIXME - split out into file as Livetext::Variables
9
- attr_reader :vars
10
-
11
- def initialize(hash = {}) # Livetext::Variables
12
- @vars = {}
13
- hash.each_pair do |k, v|
14
- sym = k.to_sym
15
- str = k.to_s
16
- @vars[sym] = v
17
- @vars[str] = v
18
- end
19
- end
20
-
21
- def inspect
22
- syms = @vars.keys.select {|x| x.is_a? Symbol }
23
- out = "\nVariables:"
24
- syms.each do |sym|
25
- out << " #{sym}: #{@vars[sym].inspect}\n"
26
- end
27
- out
28
- end
29
-
30
- def [](var)
31
- @vars[var.to_sym]
32
- end
33
-
34
- def []=(var, value)
35
- @vars[var.to_sym] = value
36
- end
37
-
38
- def get(var)
39
- @vars[var.to_sym] || "[#{var} is undefined]"
40
- end
41
-
42
- def set(var, value)
43
- @vars[var.to_sym] = value.to_s
44
- end
45
-
46
- def setvars(pairs)
47
- pairs = pairs.to_a if pairs.is_a?(Hash)
48
- pairs.each do |var, value|
49
- api.setvar(var, value)
50
- end
51
- end
52
-
53
- def to_a
54
- @vars.to_a
55
- end
56
- end
57
-
58
7
  Vars = Variables.new
59
8
 
60
9
  TTY = ::File.open("/dev/tty", "w")
@@ -8,6 +8,8 @@ class Livetext::Expansion
8
8
  Lbrack = "\\["
9
9
  Colon = ":"
10
10
 
11
+ Formatter = ::Livetext::Formatter
12
+
11
13
  def initialize(instance) # Livetext::Expansion
12
14
  @live = instance
13
15
  end
@@ -1,4 +1,4 @@
1
- module Formatter
1
+ module Livetext::Formatter
2
2
 
3
3
  def self.format(str) # FIXME - unneeded?
4
4
  str = str.chomp
@@ -15,188 +15,188 @@ module Formatter
15
15
  # Brackt: bits
16
16
  #
17
17
 
18
- class Delimited
19
- def initialize(str, marker, tag) # Delimited
20
- @str, @marker, @tag = str.dup, marker, tag
21
- @buffer = ""
22
- @cdata = ""
23
- @state = :INITIAL
24
- end
18
+ end
25
19
 
26
- def status(where)
27
- if $debug
28
- STDERR.printf "%-11s %-7s #{@marker.inspect} \n #{' '*11} state = %-8s str = %-20s buffer = %-20s cdata = %-20s\n",
29
- where, self.class, @state, @str.inspect, @buffer.inspect, @cdata.inspect
30
- end
31
- end
20
+ class Livetext::Formatter::Delimited
21
+ def initialize(str, marker, tag) # Delimited
22
+ @str, @marker, @tag = str.dup, marker, tag
23
+ @buffer = ""
24
+ @cdata = ""
25
+ @state = :INITIAL
26
+ end
32
27
 
33
- def front
34
- @str[0]
28
+ def status(where)
29
+ if $debug
30
+ STDERR.printf "%-11s %-7s #{@marker.inspect} \n #{' '*11} state = %-8s str = %-20s buffer = %-20s cdata = %-20s\n",
31
+ where, self.class, @state, @str.inspect, @buffer.inspect, @cdata.inspect
35
32
  end
33
+ end
36
34
 
37
- def grab(n=1)
38
- char = @str.slice!(0..(n-1)) # grab n chars
39
- char
40
- end
35
+ def front
36
+ @str[0]
37
+ end
41
38
 
42
- def grab_terminator
43
- @state = :LOOPING
44
- # goes onto buffer by default
45
- # Don't? what if searching for space_marker?
46
- # @buffer << grab
47
- end
39
+ def grab(n=1)
40
+ char = @str.slice!(0..(n-1)) # grab n chars
41
+ char
42
+ end
48
43
 
49
- def eol?
50
- @str.empty?
51
- end
44
+ def grab_terminator
45
+ @state = :LOOPING
46
+ # goes onto buffer by default
47
+ # Don't? what if searching for space_marker?
48
+ # @buffer << grab
49
+ end
52
50
 
53
- def space?
54
- front == " "
55
- end
51
+ def eol?
52
+ @str.empty?
53
+ end
56
54
 
57
- def escape?
58
- front == "\\"
59
- end
55
+ def space?
56
+ front == " "
57
+ end
60
58
 
61
- def terminated?
62
- space? # Will be overridden except in Single
63
- end
59
+ def escape?
60
+ front == "\\"
61
+ end
64
62
 
65
- def marker?
66
- @str.start_with?(@marker)
67
- end
63
+ def terminated?
64
+ space? # Will be overridden except in Single
65
+ end
68
66
 
69
- def space_marker?
70
- @str.start_with?(" " + @marker)
71
- end
67
+ def marker?
68
+ @str.start_with?(@marker)
69
+ end
72
70
 
73
- def wrap(text)
74
- if text.empty?
75
- result = @marker
76
- result = "" if @marker[1] == "["
77
- return result
78
- end
79
- "<#{@tag}>#{text}</#{@tag}>"
71
+ def space_marker?
72
+ @str.start_with?(" " + @marker)
73
+ end
74
+
75
+ def wrap(text)
76
+ if text.empty?
77
+ result = @marker
78
+ result = "" if @marker[1] == "["
79
+ return result
80
80
  end
81
-
82
- def initial
83
- n = @marker.length
84
- case
85
- when escape?
86
- grab # backslash
87
- @buffer << grab # char
88
- when space_marker?
89
- @buffer << grab # append the space
90
- grab(n) # eat the marker
91
- @state = :CDATA
92
- when marker?
93
- grab(n) # Eat the marker
94
- @state = :CDATA
95
- when eol?
96
- @state = :FINAL
97
- else
98
- @state = :BUFFER
99
- end
81
+ "<#{@tag}>#{text}</#{@tag}>"
82
+ end
83
+
84
+ def initial
85
+ n = @marker.length
86
+ case
87
+ when escape?
88
+ grab # backslash
89
+ @buffer << grab # char
90
+ when space_marker?
91
+ @buffer << grab # append the space
92
+ grab(n) # eat the marker
93
+ @state = :CDATA
94
+ when marker?
95
+ grab(n) # Eat the marker
96
+ @state = :CDATA
97
+ when eol?
98
+ @state = :FINAL
99
+ else
100
+ @state = :BUFFER
100
101
  end
102
+ end
101
103
 
102
- def buffer
103
- @buffer << grab
104
- @state = :LOOPING
105
- end
104
+ def buffer
105
+ @buffer << grab
106
+ @state = :LOOPING
107
+ end
106
108
 
107
- def cdata
108
- case
109
- when eol?
110
- if @cdata.empty?
111
- @buffer << @marker unless @marker[1] == "["
112
- else
113
- @buffer << wrap(@cdata)
114
- end
115
- @state = :FINAL
116
- when terminated?
117
- @buffer << wrap(@cdata)
118
- grab_terminator # "*a *b" case???
119
- @cdata = ""
120
- @state = :LOOPING
109
+ def cdata
110
+ case
111
+ when eol?
112
+ if @cdata.empty?
113
+ @buffer << @marker unless @marker[1] == "["
121
114
  else
122
- @cdata << grab
123
- @state = :CDATA
115
+ @buffer << wrap(@cdata)
124
116
  end
117
+ @state = :FINAL
118
+ when terminated?
119
+ @buffer << wrap(@cdata)
120
+ grab_terminator # "*a *b" case???
121
+ @cdata = ""
122
+ @state = :LOOPING
123
+ else
124
+ @cdata << grab
125
+ @state = :CDATA
125
126
  end
127
+ end
126
128
 
127
- def looping
128
- n = @marker.length
129
- case
130
- when escape?
131
- grab # backslash
132
- @buffer << grab # char
133
- when space_marker?
134
- @buffer << grab # append the space
135
- grab(n) # eat the marker
136
- @state = :CDATA
137
- when eol?
138
- @state = :FINAL
139
- else # includes marker not preceded by space!
140
- @buffer << grab
141
- end
129
+ def looping
130
+ n = @marker.length
131
+ case
132
+ when escape?
133
+ grab # backslash
134
+ @buffer << grab # char
135
+ when space_marker?
136
+ @buffer << grab # append the space
137
+ grab(n) # eat the marker
138
+ @state = :CDATA
139
+ when eol?
140
+ @state = :FINAL
141
+ else # includes marker not preceded by space!
142
+ @buffer << grab
142
143
  end
144
+ end
143
145
 
144
- def handle
145
- loop do
146
- break if @state == :FINAL
147
- meth = @state.downcase
148
- send(meth)
149
- end
150
- return @buffer
151
- end
152
-
153
- def self.process(str)
154
- bold = self.new(str, "*", "b")
155
- sb = bold.handle
156
- # return sb
157
- ital = self.new(sb, "_", "i")
158
- si = ital.handle
159
- code = self.new(si, "`", "tt")
160
- sc = code.handle
161
- stri = self.new(sc, "~", "strike")
162
- si = stri.handle
163
- si
146
+ def handle
147
+ loop do
148
+ break if @state == :FINAL
149
+ meth = @state.downcase
150
+ send(meth)
164
151
  end
152
+ return @buffer
165
153
  end
166
154
 
167
- class Single < Delimited
168
- # Yeah, this one is that simple
155
+ def self.process(str)
156
+ bold = self.new(str, "*", "b")
157
+ sb = bold.handle
158
+ # return sb
159
+ ital = self.new(sb, "_", "i")
160
+ si = ital.handle
161
+ code = self.new(si, "`", "tt")
162
+ sc = code.handle
163
+ stri = self.new(sc, "~", "strike")
164
+ si = stri.handle
165
+ si
169
166
  end
167
+ end
170
168
 
171
- class Double < Delimited
172
- def initialize(str, sigil, tag) # Double
173
- super
174
- # Convention: marker is "**", sigil is "*"
175
- @marker = sigil + sigil
176
- end
169
+ class Livetext::Formatter::Single < Livetext::Formatter::Delimited
170
+ # Yeah, this one is that simple
171
+ end
177
172
 
178
- def terminated?
179
- terms = [" ", ".", ","]
180
- terms.include?(front)
181
- end
173
+ class Livetext::Formatter::Double < Livetext::Formatter::Delimited
174
+ def initialize(str, sigil, tag) # Double
175
+ super
176
+ # Convention: marker is "**", sigil is "*"
177
+ @marker = sigil + sigil
182
178
  end
183
179
 
184
- class Bracketed < Delimited
185
- def initialize(str, sigil, tag) # Bracketed
186
- super
187
- # Convention: marker is "*[", sigil is "*"
188
- @marker = sigil + "["
189
- end
180
+ def terminated?
181
+ terms = [" ", ".", ","]
182
+ terms.include?(front)
183
+ end
184
+ end
190
185
 
191
- def terminated?
192
- front == "]" || eol?
193
- end
186
+ class Livetext::Formatter::Bracketed < Livetext::Formatter::Delimited
187
+ def initialize(str, sigil, tag) # Bracketed
188
+ super
189
+ # Convention: marker is "*[", sigil is "*"
190
+ @marker = sigil + "["
191
+ end
194
192
 
195
- def grab_terminator
196
- @state = :LOOPING
197
- grab
198
- end
193
+ def terminated?
194
+ front == "]" || eol?
199
195
  end
200
196
 
197
+ def grab_terminator
198
+ @state = :LOOPING
199
+ grab
200
+ end
201
201
  end
202
202
 
@@ -1,5 +1,5 @@
1
1
 
2
- module GlobalHelpers
2
+ module Livetext::GlobalHelpers
3
3
 
4
4
  def check_disallowed(name)
5
5
  raise DisallowedName(name) if disallowed?(name)
@@ -5,7 +5,7 @@ require_relative '../helpers'
5
5
 
6
6
  class Livetext::Handler::Import
7
7
  include Livetext::Helpers
8
- include GlobalHelpers
8
+ include Livetext::GlobalHelpers
9
9
 
10
10
  attr_reader :file
11
11
 
@@ -5,7 +5,7 @@ require_relative '../helpers'
5
5
 
6
6
  class Livetext::Handler::Mixin
7
7
  include Livetext::Helpers
8
- include GlobalHelpers
8
+ include Livetext::GlobalHelpers
9
9
 
10
10
  attr_reader :file
11
11
 
data/lib/livetext/html.rb CHANGED
@@ -1,4 +1,4 @@
1
- class HTML # FIXME - better as Livetext::HTML ?
1
+ class Livetext::HTML
2
2
 
3
3
  def initialize(api) # HTML
4
4
  raise "API is nil!" unless api
@@ -35,7 +35,7 @@ class Processor
35
35
  @indentation = @parent.indentation
36
36
  @_mixins = []
37
37
  @_imports = []
38
- @html = HTML.new(@parent.api)
38
+ @html = Livetext::HTML.new(@parent.api)
39
39
  end
40
40
 
41
41
  def api
@@ -3,10 +3,19 @@ require_relative 'parser/string' # FIXME eh, should fix this
3
3
  # Class Livetext skeleton (top level).
4
4
 
5
5
  class Livetext
6
+ class Variables
7
+ end
8
+
6
9
  module Handler
7
10
  end
8
11
 
9
- module ParsingConstants
12
+ module Formatter
13
+ end
14
+
15
+ class HTML
16
+ end
17
+
18
+ class ParsingConstants
10
19
  end
11
20
 
12
21
  class LineParser < StringParser
@@ -11,8 +11,6 @@ make_exception(:FileNotFound, "Error: file '%1' not found")
11
11
  # Module Standard comprises most of the standard or "common" methods.
12
12
 
13
13
  module Livetext::Standard
14
-
15
- # include HTMLHelper
16
14
  include Livetext::Helpers
17
15
 
18
16
  TTY = ::File.open("/dev/tty", "w")
@@ -16,7 +16,7 @@ class Livetext::UserAPI
16
16
  def initialize(live) # Livetext::UserAPI
17
17
  @live = live
18
18
  @vars = live.vars
19
- @html = HTML.new(self)
19
+ @html = Livetext::HTML.new(self)
20
20
  @expander = Livetext::Expansion.new(live)
21
21
  end
22
22
 
@@ -0,0 +1,50 @@
1
+ class Livetext::Variables # FIXME - split out into file as Livetext::Variables
2
+ attr_reader :vars
3
+
4
+ def initialize(hash = {}) # Livetext::Variables
5
+ @vars = {}
6
+ hash.each_pair do |k, v|
7
+ sym = k.to_sym
8
+ str = k.to_s
9
+ @vars[sym] = v
10
+ @vars[str] = v
11
+ end
12
+ end
13
+
14
+ def inspect
15
+ syms = @vars.keys.select {|x| x.is_a? Symbol }
16
+ out = "\nVariables:"
17
+ syms.each do |sym|
18
+ out << " #{sym}: #{@vars[sym].inspect}\n"
19
+ end
20
+ out
21
+ end
22
+
23
+ def [](var)
24
+ @vars[var.to_sym]
25
+ end
26
+
27
+ def []=(var, value)
28
+ @vars[var.to_sym] = value
29
+ end
30
+
31
+ def get(var)
32
+ @vars[var.to_sym] || "[#{var} is undefined]"
33
+ end
34
+
35
+ def set(var, value)
36
+ @vars[var.to_sym] = value.to_s
37
+ end
38
+
39
+ def setvars(pairs)
40
+ pairs = pairs.to_a if pairs.is_a?(Hash)
41
+ pairs.each do |var, value|
42
+ api.setvar(var, value)
43
+ end
44
+ end
45
+
46
+ def to_a
47
+ @vars.to_a
48
+ end
49
+ end
50
+
@@ -2,5 +2,5 @@
2
2
  # Defining VERSION
3
3
 
4
4
  class Livetext
5
- VERSION = "0.9.47"
5
+ VERSION = "0.9.48"
6
6
  end
data/lib/livetext.rb CHANGED
@@ -1,19 +1,21 @@
1
1
 
2
- require_relative 'livetext/skeleton'
3
- require_relative 'livetext/version'
4
- require_relative 'livetext/helpers'
5
- require_relative 'livetext/more'
6
- require_relative 'livetext/paths'
2
+ if !defined?(Livetext)
3
+ require_relative 'livetext/skeleton'
4
+ require_relative 'livetext/version'
5
+ require_relative 'livetext/helpers'
6
+ require_relative 'livetext/variables'
7
+ require_relative 'livetext/core'
8
+ require_relative 'livetext/formatter'
9
+ require_relative 'livetext/paths'
7
10
 
8
- require_relative 'livetext/reopen'
9
-
10
- require_relative 'livetext/errors'
11
- require_relative 'livetext/standard'
12
- require_relative 'livetext/functions'
13
- require_relative 'livetext/userapi'
14
- require_relative 'livetext/formatter'
15
- require_relative 'livetext/processor'
16
-
17
- require_relative 'livetext/handler'
11
+ require_relative 'livetext/reopen'
18
12
 
13
+ require_relative 'livetext/errors'
14
+ require_relative 'livetext/standard'
15
+ require_relative 'livetext/functions'
16
+ require_relative 'livetext/userapi'
17
+ # require_relative 'livetext/formatter'
18
+ require_relative 'livetext/processor'
19
19
 
20
+ require_relative 'livetext/handler'
21
+ end
data/test/all.rb CHANGED
@@ -5,5 +5,8 @@
5
5
  # add_filter "/test/"
6
6
  # end
7
7
 
8
+ # FIXME - this file is broken - path issues
9
+
8
10
  require_relative 'unit/all'
11
+
9
12
  require_relative 'snapshots' # snapshots
@@ -11,6 +11,7 @@ The tests here include:
11
11
  double.txt Double sigil (see Formatting below)
12
12
  bracketed.txt Bracketed sigil (see Formatting below)
13
13
 
14
+ NOTE: These are moved under test/unit/ now.
14
15
 
15
16
  Variables:
16
17
  ----------
data/test/unit/all.rb CHANGED
@@ -2,3 +2,10 @@
2
2
  require_relative 'standard'
3
3
  require_relative 'parser' # nested
4
4
  require_relative 'html'
5
+
6
+ require_relative 'single'
7
+ require_relative 'double'
8
+ require_relative 'bracketed'
9
+ require_relative 'variables'
10
+ require_relative 'functions'
11
+
data/test/unit/html.rb CHANGED
@@ -12,7 +12,7 @@ class TestingLivetext < MiniTest::Test
12
12
 
13
13
  def test_wrapped
14
14
  live = Livetext.new
15
- html = HTML.new(live.api)
15
+ html = Livetext::HTML.new(live.api)
16
16
  str = "nothing much"
17
17
  assert_equal html.tag(:b, cdata: str), "<b>#{str}</b>"
18
18
  assert_equal html.tag(:b, :i, cdata: str), "<b><i>#{str}</i></b>"
@@ -23,7 +23,7 @@ class TestingLivetext < MiniTest::Test
23
23
 
24
24
  def test_wrapped_extra
25
25
  live = Livetext.new
26
- html = HTML.new(live.api)
26
+ html = Livetext::HTML.new(live.api)
27
27
  str = "nothing much"
28
28
  assert_equal html.tag(:td, cdata: str, valign: :top),
29
29
  "<td valign='top'>#{str}</td>"
@@ -7,7 +7,6 @@ require 'livetext'
7
7
  # Just another testing class. Chill.
8
8
 
9
9
  class TestingLivetextSingle < MiniTest::Test
10
-
11
10
  def setup
12
11
  @live = Livetext.new
13
12
  end
@@ -131,11 +130,9 @@ class TestingLivetextSingle < MiniTest::Test
131
130
  def test_single_013_escaped_marker_is_ignored
132
131
  # Escaped marker is ignored
133
132
  # No special initialization
134
- src = "\\\\*escaped"
133
+ src = '\\' + "*escaped" # Note single quote
135
134
  exp = "*escaped"
136
135
  actual = @live.api.format(src)
137
136
  check_match(exp, actual)
138
137
  end
139
-
140
-
141
138
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: livetext
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.47
4
+ version: 0.9.48
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hal Fulton
@@ -27,6 +27,7 @@ files:
27
27
  - imports/pyggish.rb
28
28
  - imports/tutorial.rb
29
29
  - lib/livetext.rb
30
+ - lib/livetext/core.rb
30
31
  - lib/livetext/errors.rb
31
32
  - lib/livetext/expansion.rb
32
33
  - lib/livetext/formatter.rb
@@ -37,7 +38,6 @@ files:
37
38
  - lib/livetext/handler/mixin.rb
38
39
  - lib/livetext/helpers.rb
39
40
  - lib/livetext/html.rb
40
- - lib/livetext/more.rb
41
41
  - lib/livetext/parser.rb
42
42
  - lib/livetext/parser/general.rb
43
43
  - lib/livetext/parser/set.rb
@@ -49,6 +49,7 @@ files:
49
49
  - lib/livetext/skeleton.rb
50
50
  - lib/livetext/standard.rb
51
51
  - lib/livetext/userapi.rb
52
+ - lib/livetext/variables.rb
52
53
  - lib/livetext/version.rb
53
54
  - livetext.gemspec
54
55
  - plugin/booktool.rb
@@ -60,16 +61,11 @@ files:
60
61
  - plugin/tutorial.rb
61
62
  - test/all.rb
62
63
  - test/extra/README.txt
63
- - test/extra/bracketed.rb
64
64
  - test/extra/bracketed.txt
65
- - test/extra/double.rb
66
65
  - test/extra/double.txt
67
- - test/extra/functions.rb
68
66
  - test/extra/functions.txt
69
- - test/extra/single.rb
70
67
  - test/extra/single.txt
71
68
  - test/extra/testgen.rb
72
- - test/extra/variables.rb
73
69
  - test/extra/variables.txt
74
70
  - test/snapshots.rb
75
71
  - test/snapshots/basic_formatting/expected-error.txt
@@ -191,6 +187,9 @@ files:
191
187
  - test/snapshots/var_into_func/expected-output.txt
192
188
  - test/snapshots/var_into_func/source.lt3
193
189
  - test/unit/all.rb
190
+ - test/unit/bracketed.rb
191
+ - test/unit/double.rb
192
+ - test/unit/functions.rb
194
193
  - test/unit/html.rb
195
194
  - test/unit/parser.rb
196
195
  - test/unit/parser/all.rb
@@ -198,8 +197,10 @@ files:
198
197
  - test/unit/parser/mixin.rb
199
198
  - test/unit/parser/set.rb
200
199
  - test/unit/parser/string.rb
200
+ - test/unit/single.rb
201
201
  - test/unit/standard.rb
202
202
  - test/unit/stringparser.rb
203
+ - test/unit/variables.rb
203
204
  homepage: https://github.com/Hal9000/livetext
204
205
  licenses:
205
206
  - Ruby
File without changes
File without changes
File without changes
File without changes