code_string 0.0.0 → 0.0.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 +7 -0
- data/code_string.gemspec +11 -11
- data/lib/code_string/core_ext.rb +10 -0
- data/lib/code_string.rb +14 -25
- data/test/helper.rb +1 -1
- data/test/test_concatenation.rb +7 -13
- data/test/test_instanciation.rb +3 -9
- data/test/test_output.rb +4 -12
- metadata +27 -18
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7993cac0adab3b7e85b3243e3fcacb77f7daee59
|
4
|
+
data.tar.gz: 3c196ff7d54e8d474fce4f5cef36ba3d6ffd61aa
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: eb343e2bd12a0d2da8a00ebb6d14b8b2667342cca028954535357d4521a03bc168a5e01a40e0eca36bbcf5f32571950a83b693d7d20ef4ab03f0724ffdee3f14
|
7
|
+
data.tar.gz: d1c9e125d6ebeeb321a34de21fc90908fe63862a86fdb4917b6238ff89eacc0022893cb31bfb197d9d20c9910af815dd3b93c3e35affcffe6f87658009090a65
|
data/code_string.gemspec
CHANGED
@@ -1,23 +1,23 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
lib = File.expand_path('../lib', __FILE__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'code_string'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
6
|
+
spec.name = 'code_string'
|
8
7
|
spec.version = CodeString::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
11
|
-
spec.summary =
|
12
|
-
spec.description =
|
13
|
-
spec.homepage =
|
14
|
-
spec.license =
|
8
|
+
spec.authors = ['Brice Texier']
|
9
|
+
spec.email = ['burisu@oneiros.fr']
|
10
|
+
spec.summary = 'String to manage codes'
|
11
|
+
spec.description = 'Like AS::SafeBuffer, a way to manage code string safely for code generation'
|
12
|
+
spec.homepage = ''
|
13
|
+
spec.license = 'MIT'
|
15
14
|
|
16
15
|
spec.files = `git ls-files -z`.split("\x0")
|
17
16
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = [
|
18
|
+
spec.require_paths = ['lib']
|
20
19
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
20
|
+
spec.add_development_dependency 'bundler', '~> 1.6'
|
21
|
+
spec.add_development_dependency 'rake'
|
22
|
+
spec.add_development_dependency 'minitest'
|
23
23
|
end
|
data/lib/code_string.rb
CHANGED
@@ -2,8 +2,7 @@
|
|
2
2
|
# It permits to secure concantenation
|
3
3
|
# Code strings simplifies code displaying
|
4
4
|
class CodeString < String
|
5
|
-
|
6
|
-
VERSION = "0.0.0"
|
5
|
+
VERSION = '0.0.1'.freeze
|
7
6
|
|
8
7
|
class IncompatibleLanguage < StandardError
|
9
8
|
end
|
@@ -23,10 +22,10 @@ class CodeString < String
|
|
23
22
|
|
24
23
|
def +(text)
|
25
24
|
if text.is_a?(CodeString)
|
26
|
-
if
|
25
|
+
if language == text.language
|
27
26
|
super text
|
28
27
|
else
|
29
|
-
raise IncompatibleLanguage, "Language #{
|
28
|
+
raise IncompatibleLanguage, "Language #{language} is not compatible with language: #{text.language}"
|
30
29
|
end
|
31
30
|
else
|
32
31
|
super text
|
@@ -35,10 +34,10 @@ class CodeString < String
|
|
35
34
|
|
36
35
|
def <<(text)
|
37
36
|
if text.is_a?(CodeString)
|
38
|
-
if
|
37
|
+
if language == text.language
|
39
38
|
super text
|
40
39
|
else
|
41
|
-
raise IncompatibleLanguage, "Language #{
|
40
|
+
raise IncompatibleLanguage, "Language #{language} is not compatible with language: #{text.language}"
|
42
41
|
end
|
43
42
|
else
|
44
43
|
super text.to_s
|
@@ -46,37 +45,27 @@ class CodeString < String
|
|
46
45
|
end
|
47
46
|
|
48
47
|
def to_formatted_s
|
49
|
-
string
|
48
|
+
string = ''
|
49
|
+
index = 1
|
50
50
|
string << "# language: #{language}\n"
|
51
51
|
string << "# encoding: #{encoding}\n"
|
52
|
-
for line in
|
53
|
-
string
|
52
|
+
for line in split(/\n/)
|
53
|
+
string << index.to_s.rjust(4) + ': ' + line + "\n"
|
54
54
|
index += 1
|
55
55
|
end
|
56
|
-
|
56
|
+
string
|
57
57
|
end
|
58
58
|
|
59
59
|
def inspect
|
60
|
-
|
60
|
+
to_s
|
61
61
|
end
|
62
62
|
|
63
63
|
def dig(*args)
|
64
64
|
options = args.last.is_a?(Hash) ? args.delete_at(-1) : {}
|
65
65
|
depth = args.shift || options[:depth] || 1
|
66
|
-
spacer = args.shift || options[:spacer] ||
|
67
|
-
|
66
|
+
spacer = args.shift || options[:spacer] || ' '
|
67
|
+
(strip.gsub(/^/, spacer * depth) + "\n").c(@language)
|
68
68
|
end
|
69
|
-
|
70
69
|
end
|
71
70
|
|
72
|
-
|
73
|
-
class ::String
|
74
|
-
# Convert a String to a Code fragment
|
75
|
-
def to_code(language = nil)
|
76
|
-
CodeString.new(self, language)
|
77
|
-
end
|
78
|
-
|
79
|
-
def c(language = nil)
|
80
|
-
CodeString.new(self, language)
|
81
|
-
end
|
82
|
-
end
|
71
|
+
require 'code_string/core_ext'
|
data/test/helper.rb
CHANGED
data/test/test_concatenation.rb
CHANGED
@@ -1,25 +1,19 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
class TestConcatenation < Test
|
4
|
-
|
3
|
+
class TestConcatenation < Minitest::Test
|
5
4
|
def test_valid_concatenation
|
6
|
-
|
7
|
-
"5 + 3\n".c + "5 + 3".c
|
8
|
-
end
|
5
|
+
"5 + 3\n".c + '5 + 3'.c
|
9
6
|
|
10
|
-
|
11
|
-
"5 + 3\n".c + "5 + 3".c(:ruby)
|
12
|
-
end
|
7
|
+
"5 + 3\n".c + '5 + 3'.c(:ruby)
|
13
8
|
end
|
14
9
|
|
15
10
|
def test_invalid_concatenation
|
16
|
-
|
17
|
-
"5 + 3\n".c +
|
11
|
+
assert_raises CodeString::IncompatibleLanguage do
|
12
|
+
"5 + 3\n".c + '5 + 3'.c(:javascript)
|
18
13
|
end
|
19
14
|
|
20
|
-
|
21
|
-
"5 + 3\n".c(:c) +
|
15
|
+
assert_raises CodeString::IncompatibleLanguage do
|
16
|
+
"5 + 3\n".c(:c) + '5 + 3'.c
|
22
17
|
end
|
23
18
|
end
|
24
|
-
|
25
19
|
end
|
data/test/test_instanciation.rb
CHANGED
@@ -1,21 +1,15 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
class TestInstanciation < Test
|
4
|
-
|
3
|
+
class TestInstanciation < Minitest::Test
|
5
4
|
def test_instanciation_from_string
|
6
|
-
|
7
|
-
"5 + 3".c
|
8
|
-
end
|
5
|
+
'5 + 3'.c
|
9
6
|
end
|
10
7
|
|
11
8
|
def test_classical_instanciation
|
12
9
|
cs = nil
|
13
10
|
|
14
|
-
|
15
|
-
cs = CodeString.new("5 + 3")
|
16
|
-
end
|
11
|
+
cs = CodeString.new('5 + 3')
|
17
12
|
|
18
13
|
assert_equal :ruby, cs.language
|
19
14
|
end
|
20
|
-
|
21
15
|
end
|
data/test/test_output.rb
CHANGED
@@ -1,23 +1,15 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
class TestOutput < Test
|
4
|
-
|
3
|
+
class TestOutput < Minitest::Test
|
5
4
|
def test_inspect_output
|
6
|
-
|
7
|
-
"5 + 3".c.inspect
|
8
|
-
end
|
5
|
+
'5 + 3'.c.inspect
|
9
6
|
end
|
10
7
|
|
11
8
|
def test_string_output
|
12
|
-
|
13
|
-
"5 + 3".c.to_s
|
14
|
-
end
|
9
|
+
'5 + 3'.c.to_s
|
15
10
|
end
|
16
11
|
|
17
12
|
def test_formatted_string_output
|
18
|
-
|
19
|
-
"5 + 3\nreturn 0".c.to_formatted_s
|
20
|
-
end
|
13
|
+
"5 + 3\nreturn 0".c.to_formatted_s
|
21
14
|
end
|
22
|
-
|
23
15
|
end
|
metadata
CHANGED
@@ -1,46 +1,55 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: code_string
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.0.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Brice Texier
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2017-06-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- - ~>
|
17
|
+
- - "~>"
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '1.6'
|
22
20
|
type: :development
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- - ~>
|
24
|
+
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.6'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rake
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ">="
|
36
32
|
- !ruby/object:Gem::Version
|
37
33
|
version: '0'
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
44
53
|
- !ruby/object:Gem::Version
|
45
54
|
version: '0'
|
46
55
|
description: Like AS::SafeBuffer, a way to manage code string safely for code generation
|
@@ -50,13 +59,14 @@ executables: []
|
|
50
59
|
extensions: []
|
51
60
|
extra_rdoc_files: []
|
52
61
|
files:
|
53
|
-
- .gitignore
|
62
|
+
- ".gitignore"
|
54
63
|
- Gemfile
|
55
64
|
- LICENSE.txt
|
56
65
|
- README.rdoc
|
57
66
|
- Rakefile
|
58
67
|
- code_string.gemspec
|
59
68
|
- lib/code_string.rb
|
69
|
+
- lib/code_string/core_ext.rb
|
60
70
|
- test/helper.rb
|
61
71
|
- test/test_concatenation.rb
|
62
72
|
- test/test_instanciation.rb
|
@@ -64,27 +74,26 @@ files:
|
|
64
74
|
homepage: ''
|
65
75
|
licenses:
|
66
76
|
- MIT
|
77
|
+
metadata: {}
|
67
78
|
post_install_message:
|
68
79
|
rdoc_options: []
|
69
80
|
require_paths:
|
70
81
|
- lib
|
71
82
|
required_ruby_version: !ruby/object:Gem::Requirement
|
72
|
-
none: false
|
73
83
|
requirements:
|
74
|
-
- -
|
84
|
+
- - ">="
|
75
85
|
- !ruby/object:Gem::Version
|
76
86
|
version: '0'
|
77
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
78
|
-
none: false
|
79
88
|
requirements:
|
80
|
-
- -
|
89
|
+
- - ">="
|
81
90
|
- !ruby/object:Gem::Version
|
82
91
|
version: '0'
|
83
92
|
requirements: []
|
84
93
|
rubyforge_project:
|
85
|
-
rubygems_version:
|
94
|
+
rubygems_version: 2.5.2
|
86
95
|
signing_key:
|
87
|
-
specification_version:
|
96
|
+
specification_version: 4
|
88
97
|
summary: String to manage codes
|
89
98
|
test_files:
|
90
99
|
- test/helper.rb
|